diff options
| author | Tyge Løvset <[email protected]> | 2021-02-18 09:17:18 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-02-18 09:17:18 +0100 |
| commit | c6b16f5c3a84e94028075f4a02ca400f91978171 (patch) | |
| tree | 73d66e593a5c1f29794c8310cfc8042db86759d8 | |
| parent | bba5754117b7205de40b97c04eb2e48f2fd7c891 (diff) | |
| download | STC-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.md | 6 | ||||
| -rw-r--r-- | docs/csmap_api.md | 6 | ||||
| -rw-r--r-- | stc/cmap.h | 7 | ||||
| -rw-r--r-- | stc/csmap.h | 7 |
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); @@ -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; \
} \
\
|
