summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTyge Lovset <[email protected]>2022-04-18 15:54:14 +0200
committerTyge Lovset <[email protected]>2022-04-18 15:54:14 +0200
commitc2ed81e1d1de503b9264e7c03bcc7087a270df94 (patch)
tree8662baec75b3c77c5fe4b82608ff230bb807f209
parentb0d60c33a073782fe0bb08c835ca9db0b94145d0 (diff)
downloadSTC-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.md14
-rw-r--r--docs/cmap_api.md2
-rw-r--r--docs/csmap_api.md2
-rw-r--r--examples/mapmap.c7
-rw-r--r--include/stc/cmap.h4
-rw-r--r--include/stc/csmap.h4
6 files changed, 19 insertions, 14 deletions
diff --git a/README.md b/README.md
index 0ba24dcb..754f58f4 100644
--- a/README.md
+++ b/README.md
@@ -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);