summaryrefslogtreecommitdiffhomepage
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/carray_api.md2
-rw-r--r--docs/cdeq_api.md6
-rw-r--r--docs/clist_api.md6
-rw-r--r--docs/cmap_api.md32
-rw-r--r--docs/cptr_api.md37
-rw-r--r--docs/cset_api.md9
-rw-r--r--docs/csmap_api.md23
-rw-r--r--docs/csset_api.md7
-rw-r--r--docs/cvec_api.md6
9 files changed, 59 insertions, 69 deletions
diff --git a/docs/carray_api.md b/docs/carray_api.md
index e3d35083..90fc3815 100644
--- a/docs/carray_api.md
+++ b/docs/carray_api.md
@@ -10,7 +10,7 @@ See the c++ class [boost::multi_array](https://www.boost.org/doc/libs/release/li
```c
using_carray(X, Value);
-using_carray(X, Value, valueDestroy);
+using_carray(X, Value, valueDel, valueClone);
```
The macro `using_carray()` must be instantiated in the global scope. `X` and `N` are type tags and
will affect the names of all cset types and methods. E.g. declaring `using_carray(my, int);`, `X` should
diff --git a/docs/cdeq_api.md b/docs/cdeq_api.md
index fd42d295..10a9cd74 100644
--- a/docs/cdeq_api.md
+++ b/docs/cdeq_api.md
@@ -9,9 +9,9 @@ See the c++ class [std::deque](https://en.cppreference.com/w/cpp/container/deque
```c
using_cdeq(X, Value);
-using_cdeq(X, Value, valueCompareRaw);
-using_cdeq(X, Value, valueCompareRaw, valueDestroy);
-using_cdeq(X, Value, valueCompareRaw, valueDestroy, valueFromRaw, valueToRaw, RawValue);
+using_cdeq(X, Value, valueCompare);
+using_cdeq(X, Value, valueCompare, valueDel, valueClone);
+using_cdeq(X, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue);
using_cdeq_str();
```
diff --git a/docs/clist_api.md b/docs/clist_api.md
index f6772aa0..5a8cea31 100644
--- a/docs/clist_api.md
+++ b/docs/clist_api.md
@@ -18,9 +18,9 @@ See the c++ class [std::forward_list](https://en.cppreference.com/w/cpp/containe
```c
using_clist(X, Value);
-using_clist(X, Value, valueCompareRaw);
-using_clist(X, Value, valueCompareRaw, valueDestroy);
-using_clist(X, Value, valueCompareRaw, valueDestroy, valueFromRaw, valueToRaw, RawValue);
+using_clist(X, Value, valueCompare);
+using_clist(X, Value, valueCompare, valueDel, valueClone);
+using_clist(X, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue);
using_clist_str()
```
diff --git a/docs/cmap_api.md b/docs/cmap_api.md
index 614e48c4..11397371 100644
--- a/docs/cmap_api.md
+++ b/docs/cmap_api.md
@@ -11,21 +11,21 @@ See the c++ class [std::unordered_map](https://en.cppreference.com/w/cpp/contain
```c
using_cmap(X, Key, Mapped);
using_cmap(X, Key, Mapped, keyEquals, keyHash);
-using_cmap(X, Key, Mapped, keyEquals, keyHash, mappedDestroy);
-using_cmap(X, Key, Mapped, keyEquals, keyHash, mappedDestroy, mappedFromRaw, mappedToRaw, RawMapped);
-using_cmap(X, Key, Mapped, keyEqualsRaw, keyHashRaw, mappedDestroy, mappedFromRaw, mappedToRaw, RawMapped,
- keyDestroy, keyFromRaw, keyToRaw, RawKey);
-using_cmap_keydef(X, Key, Mapped, keyEquals, keyHash, keyDestroy);
-using_cmap_keydef(X, Key, Mapped, keyEqualsRaw, keyHashRaw, keyDestroy, keyFromRaw, keyToRaw, RawKey);
+using_cmap(X, Key, Mapped, keyEquals, keyHash, mappedDel, mappedClone);
+using_cmap(X, Key, Mapped, keyEquals, keyHash, mappedDel, mappedFromRaw, mappedToRaw, RawMapped);
+using_cmap(X, Key, Mapped, keyEqualsRaw, keyHashRaw, mappedDel, mappedFromRaw, mappedToRaw, RawMapped,
+ keyDel, keyFromRaw, keyToRaw, RawKey);
+using_cmap_keydef(X, Key, Mapped, keyEquals, keyHash, keyDel, keyClone);
+using_cmap_keydef(X, Key, Mapped, keyEqualsRaw, keyHashRaw, keyDel, keyFromRaw, keyToRaw, RawKey);
using_cmap_strkey(X, Mapped); // using_cmap(X, cstr, Mapped, ...)
-using_cmap_strkey(X, Mapped, mappedDestroy);
-using_cmap_strkey(X, Mapped, mappedDestroy, mappedFromRaw, mappedToRaw, RawMapped);
+using_cmap_strkey(X, Mapped, mappedDel, mappedClone);
+using_cmap_strkey(X, Mapped, mappedDel, mappedFromRaw, mappedToRaw, RawMapped);
using_cmap_strval(X, Key); // using_cmap(X, Key, cstr, ...)
using_cmap_strval(X, Key, keyEquals, keyHash);
-using_cmap_strval(X, Key, keyEquals, keyHash, keyDestroy);
-using_cmap_strval(X, Key, keyEqualsRaw, keyHashRaw, keyDestroy, keyFromRaw, keyToRaw, RawKey);
+using_cmap_strval(X, Key, keyEquals, keyHash, keyDel, keyClone);
+using_cmap_strval(X, Key, keyEqualsRaw, keyHashRaw, keyDel, keyFromRaw, keyToRaw, RawKey);
using_cmap_str() // using_cmap(str, cstr, cstr, ...)
```
@@ -77,18 +77,16 @@ cmap_X_iter_t cmap_X_begin(cmap_X* self);
cmap_X_iter_t cmap_X_end(cmap_X* self);
void cmap_X_next(cmap_X_iter_t* it);
cmap_X_mapped_t* cmap_X_itval(cmap_X_iter_t it);
-
-cmap_X_value_t cmap_X_value_clone(cmap_X_value_t val);
-void cmap_X_value_del(cmap_X_value_t* val);
```
```
uint64_t c_default_hash(const void *data, size_t len);
uint64_t c_default_hash32(const void* data, size_t len=4);
uint64_t c_default_hash64(const void* data, size_t len=8);
int c_default_equals(const RawKey* a, const RawKey* b);
-void c_default_destruct(Value* val);
-Value c_default_fromraw(RawValue raw);
-RawValue c_default_toraw(Value* val);
+void c_plain_del(Type* val);
+Value c_no_clone(Type val);
+Value c_plain_fromraw(RawType raw);
+RawType c_plain_toraw(Type* val);
```
## Types
@@ -200,7 +198,7 @@ Demonstrate cmap with plain-old-data key type Vec3i and int as mapped type: cmap
typedef struct { int x, y, z; } Vec3i;
-using_cmap(v3, Vec3i, int, c_memcmp_equals, // compare Vec3i bitwise
+using_cmap(v3, Vec3i, int, c_plain_equals, // compare Vec3i bitwise
c_default_hash); // hash Vec3i bitwise.
int main()
diff --git a/docs/cptr_api.md b/docs/cptr_api.md
index b924b55c..23cb4d41 100644
--- a/docs/cptr_api.md
+++ b/docs/cptr_api.md
@@ -11,11 +11,11 @@ The pointed-to elements are automatically destructed and deleted when the contai
```c
using_cptr(X, Value);
using_cptr(X, Value, valueCompare);
-using_cptr(X, Value, valueCompare, valueDestroy);
+using_cptr(X, Value, valueCompare, valueDel);
using_csptr(X, Value);
using_csptr(X, Value, valueCompare);
-using_csptr(X, Value, valueCompare, valueDestroy);
+using_csptr(X, Value, valueCompare, valueDel);
```
The macro `using_cptr()` must be instantiated in the global scope. `X` is a type tag name and will
affect the names of all cptr types and methods. E.g. declaring `using_cptr(my, cvec_my);`,
@@ -166,16 +166,15 @@ void Person_del(Person* p) {
}
// 1. cvec of Person struct; emplace and cloning disabled.
-using_cvec(pe, Person, Person_compare, Person_del);
+using_cvec(pe, Person, Person_compare, Person_del, c_no_clone);
// 2. cvec of raw/owned pointers to Person; emplace and cloning disabled.
using_cptr(pe, Person, Person_compare, Person_del);
-using_cvec(pp, Person*, cptr_pe_compare, cptr_pe_del);
+using_cvec(pp, Person*, cptr_pe_compare, cptr_pe_del, c_no_clone);
-// 3. cvec of shared-ptr to Person.
+// 3. cvec of shared-ptr to Person - with emplace_back() and cloning cvec ENABLED.
using_csptr(pe, Person, Person_compare, Person_del);
-// To enable emplace_back() and cloning cvec, add 3 more args:
-using_cvec(ps, csptr_pe, csptr_pe_compare, csptr_pe_del, csptr_pe_clone, c_default_toraw, csptr_pe);
+using_cvec(ps, csptr_pe, csptr_pe_compare, csptr_pe_del, csptr_pe_clone);
const char* names[] = {
"Joe", "Jordan",
@@ -206,6 +205,7 @@ int main() {
// Append a shared copy of vec3.data[0]. Will only be destructed once!
cvec_ps_emplace_back(&vec3, vec3.data[0]);
+ //cvec_ps_push_back(&vec3, csptr_pe_clone(vec3.data[0])); // alternativ
puts("\n3. Sorted vec3 of shared-pointer to Person:");
cvec_ps_sort(&vec3);
c_foreach (i, cvec_ps, vec3)
@@ -214,12 +214,12 @@ int main() {
// Share vec3.data[1] with elem1 variable.
csptr_pe elem1 = csptr_pe_clone(vec3.data[1]);
- puts("\nDestroy vec3:");
- cvec_ps_del(&vec3); // destroy the unique/unshared elements (two)
- puts("\nDestroy vec2:");
- cvec_pp_del(&vec2);
puts("\nDestroy vec1:");
cvec_pe_del(&vec1);
+ puts("\nDestroy vec2:");
+ cvec_pp_del(&vec2);
+ puts("\nDestroy vec3:");
+ cvec_ps_del(&vec3);
puts("\nDestroy elem1:");
csptr_pe_del(&elem1);
@@ -227,23 +227,25 @@ int main() {
```
Output:
```
-1. sorted cvec of Person :
+1. Sorted vec1 of Person:
Annie Aniston
Jane Jacobs
Joe Jordan
-2. sorted cvec of pointer to Person :
+2. Sorted vec2 of pointer to Person:
Annie Aniston
Jane Jacobs
Joe Jordan
-3. sorted cvec of shared-pointer to Person :
+3. Sorted vec3 of shared-pointer to Person:
Annie Aniston
Jane Jacobs
Joe Jordan
+ Joe Jordan
-Destroy vec3:
+Destroy vec1:
del: Annie
+del: Jane
del: Joe
Destroy vec2:
@@ -251,11 +253,10 @@ del: Annie
del: Jane
del: Joe
-Destroy vec1:
+Destroy vec3:
del: Annie
-del: Jane
del: Joe
-Destroy elem:
+Destroy elem1:
del: Jane
```
diff --git a/docs/cset_api.md b/docs/cset_api.md
index 526a93d7..45df2afb 100644
--- a/docs/cset_api.md
+++ b/docs/cset_api.md
@@ -8,9 +8,9 @@ A **cset** is an associative container that contains a set of unique objects of
```c
using_cset(X, Key);
-using_cset(X, Key, keyEqualsRaw, keyHashRaw);
-using_cset(X, Key, keyEqualsRaw, keyHashRaw, keyDestroy);
-using_cset(X, Key, keyEqualsRaw, keyHashRaw, keyDestroy, keyFromRaw, keyToRaw, RawKey);
+using_cset(X, Key, keyEquals, keyHash);
+using_cset(X, Key, keyEquals, keyHash, keyDel, keyClone);
+using_cset(X, Key, keyEqualsRaw, keyHashRaw, keyDel, keyFromRaw, keyToRaw, RawKey);
using_cset_str();
```
The macro `using_cset()` must be instantiated in the global scope. `X` is a type tag name and
@@ -59,9 +59,6 @@ cset_X_iter_t cset_X_begin(cset_X* self);
cset_X_iter_t cset_X_end(cset_X* self);
void cset_X_next(cset_X_iter_t* it);
cset_X_value_t* cset_X_itval(cset_X_iter_t it);
-
-cset_X_value_t cset_X_value_clone(cset_X_value_t val);
-void cset_X_value_del(cset_X_value_t* val);
```
## Types
diff --git a/docs/csmap_api.md b/docs/csmap_api.md
index d404aa79..96087706 100644
--- a/docs/csmap_api.md
+++ b/docs/csmap_api.md
@@ -10,21 +10,21 @@ See the c++ class [std::map](https://en.cppreference.com/w/cpp/container/map) fo
```c
using_csmap(X, Key, Mapped);
using_csmap(X, Key, Mapped, keyCompare);
-using_csmap(X, Key, Mapped, keyCompare, mappedDestroy);
-using_csmap(X, Key, Mapped, keyCompare, mappedDestroy, mappedFromRaw, mappedToRaw, RawMapped);
-using_csmap(X, Key, Mapped, keyCompareRaw, mappedDestroy, mappedFromRaw, mappedToRaw, RawMapped,
- keyDestroy, keyFromRaw, keyToRaw, RawKey);
-using_csmap_keydef(X, Key, Mapped, keyCompare, keyDestroy);
-using_csmap_keydef(X, Key, Mapped, keyCompareRaw, keyDestroy, keyFromRaw, keyToRaw, RawKey);
+using_csmap(X, Key, Mapped, keyCompare, mappedDel, mappedClone);
+using_csmap(X, Key, Mapped, keyCompare, mappedDel, mappedFromRaw, mappedToRaw, RawMapped);
+using_csmap(X, Key, Mapped, keyCompareRaw, mappedDel, mappedFromRaw, mappedToRaw, RawMapped,
+ keyDel, keyFromRaw, keyToRaw, RawKey);
+using_csmap_keydef(X, Key, Mapped, keyCompare, keyDel, keyClone);
+using_csmap_keydef(X, Key, Mapped, keyCompareRaw, keyDel, keyFromRaw, keyToRaw, RawKey);
using_csmap_strkey(X, Mapped); // using_csmap(X, cstr, Mapped, ...)
-using_csmap_strkey(X, Mapped, mappedDestroy);
-using_csmap_strkey(X, Mapped, mappedDestroy, mappedFromRaw, mappedToRaw, RawMapped);
+using_csmap_strkey(X, Mapped, mappedDel, mappedClone);
+using_csmap_strkey(X, Mapped, mappedDel, mappedFromRaw, mappedToRaw, RawMapped);
using_csmap_strval(X, Key); // using_csmap(X, Key, cstr, ...)
using_csmap_strval(X, Key, keyCompare);
-using_csmap_strval(X, Key, keyCompare, keyDestroy);
-using_csmap_strval(X, Key, keyCompareRaw, keyDestroy, keyFromRaw, keyToRaw, RawKey);
+using_csmap_strval(X, Key, keyCompare, keyDel, keyClone);
+using_csmap_strval(X, Key, keyCompareRaw, keyDel, keyFromRaw, keyToRaw, RawKey);
using_csmap_str(); // using_csmap(str, cstr, cstr, ...)
```
@@ -70,9 +70,6 @@ csmap_X_iter_t csmap_X_begin(csmap_X* self);
csmap_X_iter_t csmap_X_end(csmap_X* self);
void csmap_X_next(csmap_X_iter_t* it);
csmap_X_mapped_t* csmap_X_itval(csmap_X_iter_t it);
-
-csmap_X_value_t csmap_X_value_clone(csmap_X_value_t val);
-void csmap_X_value_del(csmap_X_value_t* val);
```
## Types
diff --git a/docs/csset_api.md b/docs/csset_api.md
index 7a0085f5..96f7357a 100644
--- a/docs/csset_api.md
+++ b/docs/csset_api.md
@@ -10,8 +10,8 @@ See the c++ class [std::set](https://en.cppreference.com/w/cpp/container/set) fo
```c
using_csset(X, Key);
using_csset(X, Key, keyCompare);
-using_csset(X, Key, keyCompare, keyDestroy);
-using_csset(X, Key, keyCompare, keyDestroy, keyFromRaw, keyToRaw, RawKey);
+using_csset(X, Key, keyCompare, keyDel, keyClone);
+using_csset(X, Key, keyCompareRaw, keyDel, keyFromRaw, keyToRaw, RawKey);
using_csset_str();
```
The macro `using_csset()` must be instantiated in the global scope. `X` is a type tag name and
@@ -54,9 +54,6 @@ csset_X_iter_t csset_X_begin(csset_X* self);
csset_X_iter_t csset_X_end(csset_X* self);
void csset_X_next(csset_X_iter_t* it);
csset_X_value_t* csset_X_itval(csset_X_iter_t it);
-
-csset_X_value_t csset_X_value_clone(csset_X_value_t val);
-void csset_X_value_del(csset_X_value_t* val);
```
## Types
diff --git a/docs/cvec_api.md b/docs/cvec_api.md
index b6aa841f..d3ac1e10 100644
--- a/docs/cvec_api.md
+++ b/docs/cvec_api.md
@@ -13,9 +13,9 @@ See the c++ class [std::vector](https://en.cppreference.com/w/cpp/container/vect
```c
using_cvec(X, Value);
-using_cvec(X, Value, valueCompareRaw);
-using_cvec(X, Value, valueCompareRaw, valueDestroy);
-using_cvec(X, Value, valueCompareRaw, valueDestroy, valueFromRaw, valueToRaw, RawValue);
+using_cvec(X, Value, valueCompare);
+using_cvec(X, Value, valueCompare, valueDel, valueClone);
+using_cvec(X, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue);
using_cvec_str()
```