summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2021-02-18 09:17:18 +0100
committerTyge Løvset <[email protected]>2021-02-18 09:17:18 +0100
commitc6b16f5c3a84e94028075f4a02ca400f91978171 (patch)
tree73d66e593a5c1f29794c8310cfc8042db86759d8
parentbba5754117b7205de40b97c04eb2e48f2fd7c891 (diff)
downloadSTC-modified-c6b16f5c3a84e94028075f4a02ca400f91978171.tar.gz
STC-modified-c6b16f5c3a84e94028075f4a02ca400f91978171.zip
Changed API to csmap_X_insert and cmap_X_insert. No change for sets.
-rw-r--r--docs/cmap_api.md6
-rw-r--r--docs/csmap_api.md6
-rw-r--r--stc/cmap.h7
-rw-r--r--stc/csmap.h7
4 files changed, 14 insertions, 12 deletions
diff --git a/docs/cmap_api.md b/docs/cmap_api.md
index b88ba25f..7cb88177 100644
--- a/docs/cmap_api.md
+++ b/docs/cmap_api.md
@@ -70,10 +70,10 @@ cmap_X_iter_t cmap_X_find(const cmap_X* self, RawKey rkey);
bool cmap_X_contains(const cmap_X* self, RawKey rkey);
void cmap_X_push_n(cmap_X* self, const cmap_X_rawvalue_t arr[], size_t size);
-cmap_X_result_t cmap_X_put(cmap_X* self, RawKey rkey, RawMapped rmapped);
cmap_X_result_t cmap_X_emplace(cmap_X* self, RawKey rkey, RawMapped rmapped); // no change if rkey in map
-cmap_X_result_t cmap_X_insert(cmap_X* self, cmap_X_value_t val); // like emplace.
-cmap_X_result_t cmap_X_insert_or_assign(cmap_X* self, Key key, Mapped mapped); // like put
+cmap_X_result_t cmap_X_put(cmap_X* self, RawKey rkey, RawMapped rmapped); // std::map::operator[]
+cmap_X_result_t cmap_X_insert(cmap_X* self, Key key, Mapped mapped); // like emplace, other params
+cmap_X_result_t cmap_X_insert_or_assign(cmap_X* self, Key key, Mapped mapped); // like put, other params
cmap_X_mapped_t* cmap_X_at(const cmap_X* self, RawKey rkey); // rkey must be in map
size_t cmap_X_erase(cmap_X* self, RawKey rkey);
diff --git a/docs/csmap_api.md b/docs/csmap_api.md
index 45ce8fee..1d0e9708 100644
--- a/docs/csmap_api.md
+++ b/docs/csmap_api.md
@@ -61,10 +61,10 @@ csmap_X_value_t* csmap_X_find_it(const csmap_X* self, RawKey rkey, csmap_X_it
bool csmap_X_contains(const csmap_X* self, RawKey rkey);
void csmap_X_push_n(csmap_X* self, const csmap_X_rawvalue_t arr[], size_t size);
-csmap_X_result_t csmap_X_put(csmap_X* self, RawKey rkey, RawMapped rmapped); // like std::map::operator[]
csmap_X_result_t csmap_X_emplace(csmap_X* self, RawKey rkey, RawMapped rmapped); // no change if rkey in map
-csmap_X_result_t csmap_X_insert(csmap_X* self, csmap_X_value_t val); // like emplace
-csmap_X_result_t csmap_X_insert_or_assign(csmap_X* self, Key key, Mapped mapped); // like put
+csmap_X_result_t csmap_X_put(csmap_X* self, RawKey rkey, RawMapped rmapped); // std::map::operator[]
+csmap_X_result_t csmap_X_insert(csmap_X* self, Key key, Mapped mapped); // like emplace, other params
+csmap_X_result_t csmap_X_insert_or_assign(csmap_X* self, Key key, Mapped mapped); // like put, other params
csmap_X_mapped_t* csmap_X_at(const csmap_X* self, RawKey rkey); // rkey must be in map.
size_t csmap_X_erase(csmap_X* self, RawKey rkey);
diff --git a/stc/cmap.h b/stc/cmap.h
index 04445791..4e5c140a 100644
--- a/stc/cmap.h
+++ b/stc/cmap.h
@@ -251,9 +251,10 @@ typedef struct {size_t idx; uint32_t hx;} chash_bucket_t;
} \
\
STC_INLINE C##_##X##_result_t \
- C##_##X##_insert(C##_##X* self, C##_##X##_value_t val) { \
- C##_##X##_result_t res = C##_##X##_insert_entry_(self, keyToRaw(KEY_REF_##C(&val))); \
- if (res.second) *res.first = val; else C##_##X##_value_del(&val); \
+ C##_##X##_insert(C##_##X* self, Key key MAP_ONLY_##C(, Mapped mapped)) { \
+ C##_##X##_result_t res = C##_##X##_insert_entry_(self, keyToRaw(&key)); \
+ if (res.second) {*KEY_REF_##C(res.first) = key; MAP_ONLY_##C( res.first->second = mapped; )} \
+ else {keyDel(&key); MAP_ONLY_##C( mappedDel(&mapped); )} \
return res; \
} \
\
diff --git a/stc/csmap.h b/stc/csmap.h
index 41d2ef07..952ee375 100644
--- a/stc/csmap.h
+++ b/stc/csmap.h
@@ -249,9 +249,10 @@ struct csmap_rep { size_t root, disp, head, size, cap; void* nodes[]; };
} \
\
STC_INLINE C##_##X##_result_t \
- C##_##X##_insert(C##_##X* self, C##_##X##_value_t val) { \
- C##_##X##_result_t res = C##_##X##_insert_entry_(self, keyToRaw(KEY_REF_##C(&val))); \
- if (res.second) *res.first = val; else C##_##X##_value_del(&val); \
+ C##_##X##_insert(C##_##X* self, Key key MAP_ONLY_##C(, Mapped mapped)) { \
+ C##_##X##_result_t res = C##_##X##_insert_entry_(self, keyToRaw(&key)); \
+ if (res.second) {*KEY_REF_##C(res.first) = key; MAP_ONLY_##C( res.first->second = mapped; )} \
+ else {keyDel(&key); MAP_ONLY_##C( mappedDel(&mapped); )} \
return res; \
} \
\