diff options
| author | Tyge Lovset <[email protected]> | 2022-04-18 15:54:14 +0200 |
|---|---|---|
| committer | Tyge Lovset <[email protected]> | 2022-04-18 15:54:14 +0200 |
| commit | c2ed81e1d1de503b9264e7c03bcc7087a270df94 (patch) | |
| tree | 8662baec75b3c77c5fe4b82608ff230bb807f209 | |
| parent | b0d60c33a073782fe0bb08c835ca9db0b94145d0 (diff) | |
| download | STC-modified-c2ed81e1d1de503b9264e7c03bcc7087a270df94.tar.gz STC-modified-c2ed81e1d1de503b9264e7c03bcc7087a270df94.zip | |
Renamed newly added map function put_r() to put_raw() - alias for emplace_or_assign() for symetri with insert_or_assign()/put(). Experimental, may be removed.
| -rw-r--r-- | README.md | 14 | ||||
| -rw-r--r-- | docs/cmap_api.md | 2 | ||||
| -rw-r--r-- | docs/csmap_api.md | 2 | ||||
| -rw-r--r-- | examples/mapmap.c | 7 | ||||
| -rw-r--r-- | include/stc/cmap.h | 4 | ||||
| -rw-r--r-- | include/stc/csmap.h | 4 |
6 files changed, 19 insertions, 14 deletions
@@ -316,13 +316,13 @@ container. `i_valfrom/i_valfrom` are defined, the **emplace** functions are *not* available (or needed), as it can easier lead to mistakes. -| non-emplace: Move | emplace: Embedded copy | Container | -|:---------------------------|:-----------------------------|:--------------------------------------------| -| insert() | emplace() | cmap, csmap, cset, csset | -| insert_or_assign(), put() | emplace_or_assign(), put_r() | cmap, csmap | -| push() | emplace() | cqueue, cpque, cstack | -| push_back(), push() | emplace_back() | cdeq, clist, cvec | -| push_front() | emplace_front() | cdeq, clist | +| non-emplace: Move | emplace: Embedded copy | Container | +|:---------------------------|:-------------------------------|:--------------------------------------------| +| insert() | emplace() | cmap, csmap, cset, csset | +| insert_or_assign(), put() | emplace_or_assign(), put_raw() | cmap, csmap | +| push() | emplace() | cqueue, cpque, cstack | +| push_back(), push() | emplace_back() | cdeq, clist, cvec | +| push_front() | emplace_front() | cdeq, clist | Strings are the most commonly used non-trivial data type. STC containers have proper pre-defined definitions for cstr container elements, so they are fail-safe to use both with the **emplace** diff --git a/docs/cmap_api.md b/docs/cmap_api.md index 77577bd7..69257779 100644 --- a/docs/cmap_api.md +++ b/docs/cmap_api.md @@ -71,7 +71,7 @@ cmap_X_result cmap_X_put(cmap_X* self, i_key key, i_val mapped); cmap_X_result cmap_X_emplace(cmap_X* self, i_keyraw rkey, i_valraw rmapped); // no change if rkey in map cmap_X_result cmap_X_emplace_or_assign(cmap_X* self, i_keyraw rkey, i_valraw rmapped); // always update rmapped -cmap_X_result cmap_X_put_r(cmap_X* self, i_keyraw rkey, i_valraw rmapped); // alias for emplace_or_assign +cmap_X_result cmap_X_put_raw(cmap_X* self, i_keyraw rkey, i_valraw rmapped); // alias for emplace_or_assign size_t cmap_X_erase(cmap_X* self, i_keyraw rkey); // return 0 or 1 cmap_X_iter cmap_X_erase_at(cmap_X* self, cmap_X_iter it); // return iter after it diff --git a/docs/csmap_api.md b/docs/csmap_api.md index 4bdcb42b..012a7d58 100644 --- a/docs/csmap_api.md +++ b/docs/csmap_api.md @@ -67,7 +67,7 @@ csmap_X_result csmap_X_put(csmap_X* self, i_key key, i_val mapped); csmap_X_result csmap_X_emplace(csmap_X* self, i_keyraw rkey, i_valraw rmapped); // no change if rkey in map csmap_X_result csmap_X_emplace_or_assign(csmap_X* self, i_keyraw rkey, i_valraw rmapped); // always update rmapped -csmap_X_result csmap_X_put_r(csmap_X* self, i_keyraw rkey, i_valraw rmapped); // alias for emplace_or_assign +csmap_X_result csmap_X_put_raw(csmap_X* self, i_keyraw rkey, i_valraw rmapped); // alias for emplace_or_assign size_t csmap_X_erase(csmap_X* self, i_keyraw rkey); csmap_X_iter csmap_X_erase_at(csmap_X* self, csmap_X_iter it); // returns iter after it diff --git a/examples/mapmap.c b/examples/mapmap.c index 94b92a81..a8f0069c 100644 --- a/examples/mapmap.c +++ b/examples/mapmap.c @@ -3,12 +3,17 @@ #define i_type People
#define i_key_str
#define i_val_str
-#define i_keydrop(p) (printf("kdrop: %s\n", cstr_str(p)), cstr_drop(p))
+#define i_keydrop(p) (printf("kdrop: %s\n", cstr_str(p)), cstr_drop(p)) // override
#include <stc/csmap.h>
#define i_type Departments
#define i_key_str
#define i_val_bind People
+// Shorthand for:
+//#define i_val People
+//#define i_cmp People_cmp
+//#define i_valfrom People_clone
+//#define i_valdrop People_drop
#include <stc/csmap.h>
#define i_type Stack
diff --git a/include/stc/cmap.h b/include/stc/cmap.h index 1a3e7944..7834c9b0 100644 --- a/include/stc/cmap.h +++ b/include/stc/cmap.h @@ -113,8 +113,8 @@ STC_INLINE bool _cx_memb(_contains)(const _cx_self* self, i_keyraw rkey) STC_API _cx_result _cx_memb(_insert_or_assign)(_cx_self* self, i_key _key, i_val _mapped);
#if !defined _i_no_clone && !defined _i_no_emplace
STC_API _cx_result _cx_memb(_emplace_or_assign)(_cx_self* self, i_keyraw rkey, i_valraw rmapped);
- STC_INLINE _cx_result _cx_memb(_put_r)(_cx_self* self, i_keyraw rkey, i_valraw rmapped)
- { return _cx_memb(_emplace_or_assign)(self, rkey, rmapped); }
+ STC_INLINE _cx_result _cx_memb(_put_raw)(_cx_self* self, i_keyraw rkey, i_valraw rmapped)
+ { return _cx_memb(_emplace_or_assign)(self, rkey, rmapped); } // alias
#endif
STC_INLINE _cx_result
diff --git a/include/stc/csmap.h b/include/stc/csmap.h index a043d896..21b8f6e1 100644 --- a/include/stc/csmap.h +++ b/include/stc/csmap.h @@ -159,8 +159,8 @@ _cx_memb(_value_drop)(_cx_value* val) { #if !defined _i_no_clone && !defined _i_no_emplace
STC_API _cx_result _cx_memb(_emplace_or_assign)(_cx_self* self, i_keyraw rkey, i_valraw rmapped);
STC_INLINE _cx_result
- _cx_memb(_put_r)(_cx_self* self, i_keyraw rkey, i_valraw rmapped)
- { return _cx_memb(_emplace_or_assign)(self, rkey, rmapped); }
+ _cx_memb(_put_raw)(_cx_self* self, i_keyraw rkey, i_valraw rmapped)
+ { return _cx_memb(_emplace_or_assign)(self, rkey, rmapped); } // alias
#endif
STC_API _cx_result _cx_memb(_insert_or_assign)(_cx_self* self, i_key key, i_val mapped);
|
