summaryrefslogtreecommitdiffhomepage
path: root/docs
diff options
context:
space:
mode:
authortylov <[email protected]>2023-07-26 21:23:15 +0200
committertylov <[email protected]>2023-07-26 21:23:15 +0200
commitd7fba27af452de2d709767e615fa2e90d6b3a391 (patch)
tree33f83221b34b8a123d25ddc886512d81bbdee706 /docs
parent5b54b0ca26540dd116880f316c6fa0291a7c96c7 (diff)
downloadSTC-modified-d7fba27af452de2d709767e615fa2e90d6b3a391.tar.gz
STC-modified-d7fba27af452de2d709767e615fa2e90d6b3a391.zip
Added cmap_emplace_key() / csmap_emplace_key()
More docs.
Diffstat (limited to 'docs')
-rw-r--r--docs/algorithm_api.md4
-rw-r--r--docs/cmap_api.md8
-rw-r--r--docs/csmap_api.md1
3 files changed, 9 insertions, 4 deletions
diff --git a/docs/algorithm_api.md b/docs/algorithm_api.md
index 490771b5..40ff32d6 100644
--- a/docs/algorithm_api.md
+++ b/docs/algorithm_api.md
@@ -130,7 +130,7 @@ Iterate a container or a crange with chained `&&` filtering.
[ [Run this example](https://godbolt.org/z/n9aYrYPv8) ]
```c
-#include <stc/calgo.h>
+#include <stc/algorithm.h>
#include <stdio.h>
bool isPrime(long long i) {
@@ -309,8 +309,6 @@ The **checkauto** utility described below, ensures that the `c_auto*` macros are
| `continue` | Exit a defer-block without resource leak |
```c
-#include <stc/algo/raii.h> // or <stc/calgo.h>
-...
// `c_defer` executes the expression(s) when leaving scope.
// Note: does not require inclusion of "raii.h".
cstr s1 = cstr_lit("Hello"), s2 = cstr_lit("world");
diff --git a/docs/cmap_api.md b/docs/cmap_api.md
index 17f27662..4e6da57d 100644
--- a/docs/cmap_api.md
+++ b/docs/cmap_api.md
@@ -71,7 +71,8 @@ cmap_X_result cmap_X_insert_or_assign(cmap_X* self, i_key key, i_val map
cmap_X_result cmap_X_push(cmap_X* self, cmap_X_value entry); // similar to insert
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
+cmap_X_result cmap_X_emplace_or_assign(cmap_X* self, i_keyraw rkey, i_valraw rmapped); // always update mapped
+cmap_X_result cmap_X_emplace_key(cmap_X* self, i_keyraw rkey); // see example 1.
int 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
@@ -138,6 +139,11 @@ int main(void)
cmap_str_emplace(&umap, "BLACK", "#000000");
cmap_str_emplace(&umap, "WHITE", "#FFFFFF");
+ // Insert only if "CYAN" is not in the map: create mapped value when needed only.
+ cmap_str_result res = cmap_str_emplace_key(&umap, "CYAN");
+ if (res.inserted)
+ res.ref->second = cstr_from("#00FFFF"); // must assign second if key was inserted.
+
// Output values by key
printf("The HEX of color RED is:[%s]\n", cstr_str(cmap_str_at(&umap, "RED")));
printf("The HEX of color BLACK is:[%s]\n", cstr_str(cmap_str_at(&umap, "BLACK")));
diff --git a/docs/csmap_api.md b/docs/csmap_api.md
index 164b0f8a..d739283b 100644
--- a/docs/csmap_api.md
+++ b/docs/csmap_api.md
@@ -72,6 +72,7 @@ csmap_X_result csmap_X_push(csmap_X* self, csmap_X_value entry);
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_emplace_key(csmap_X* self, i_keyraw rkey); // if key not in map, mapped is left unassigned
int 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