summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--docs/ccommon_api.md36
-rw-r--r--include/stc/carc.h8
-rw-r--r--include/stc/cbits.h2
-rw-r--r--include/stc/cbox.h6
-rw-r--r--include/stc/ccommon.h25
-rw-r--r--include/stc/cdeq.h6
-rw-r--r--include/stc/clist.h4
-rw-r--r--include/stc/cmap.h18
-rw-r--r--include/stc/cpque.h4
-rw-r--r--include/stc/csmap.h4
-rw-r--r--include/stc/cspan.h4
-rw-r--r--include/stc/cstack.h10
-rw-r--r--include/stc/cvec.h4
-rw-r--r--include/stc/priv/altnames.h5
-rw-r--r--include/stc/priv/template.h16
-rw-r--r--misc/examples/rawptr_elements.c8
-rw-r--r--misc/examples/shape.c6
17 files changed, 86 insertions, 80 deletions
diff --git a/docs/ccommon_api.md b/docs/ccommon_api.md
index 54b0312d..0a361d46 100644
--- a/docs/ccommon_api.md
+++ b/docs/ccommon_api.md
@@ -261,9 +261,9 @@ int main() {
```
Note that `c_flt_take()` is given as an optional argument, which makes the loop stop when it becomes false (for efficiency). Chaining it after `isPrime()` instead will give same result, but the full input is processed.
-### c_make
+### c_make, c_new
-Make a container from a literal initializer list. Example:
+**c_make**: Make a container from a literal initializer list. Example:
```c
#define i_val_str // cstr value type
#include <stc/cset.h>
@@ -277,6 +277,13 @@ int x = 7, y = 8;
cmap_int mymap = c_make(cmap_int, { {1, 2}, {3, 4}, {5, 6}, {x, y} });
```
+**c_new(Type)**: Allocate and init a new object on the heap
+```c
+struct Pnt { double x, y, z; };
+struct Pnt *pnt = c_new(struct Pnt, {1.2, 3.4, 5.6});
+c_free(pnt);
+```
+
### crange
**crange** is a number sequence generator type. The **crange_value** type is `long long`. Below *start*, *stop*, and *step* are of type *crange_value*:
```c
@@ -342,29 +349,12 @@ bool crawstr_eq(const crawstr* x, const crawstr* y);
uint64_t crawstr_hash(const crawstr* x);
```
-### c_NEW, c_ALLOC, c_ALLOC_N
-
-| Usage | Meaning |
-|:----------------------------|:-------------------------------------------|
-| `c_NEW (type, value)` | Allocate and init a new object on the heap |
-| `c_ALLOC (type)` | `(type *) c_malloc(c_sizeof(type))` |
-| `c_ALLOC_N (type, N)` | `(type *) c_malloc((N)*c_sizeof(type))` |
-
-```c
-struct Pnt { double x, y, z; };
-struct Pnt *pnt = c_NEW(struct Pnt, {1.2, 3.4, 5.6});
-c_free(pnt);
-
-int* array = c_ALLOC_N(int, 100);
-c_free(array);
-```
-
### c_malloc, c_calloc, c_realloc, c_free: customizable allocators
-Memory allocator for the entire library. Macros can be overridden by the user.
+Memory allocator wrappers that uses signed sizes.
-### c_ARRAYLEN
-- **c_ARRAYLEN(array)**: Return number of elements in an array. array must not be a pointer!
+### c_arraylen
+Return number of elements in an array. array must not be a pointer!
```c
int array[] = {1, 2, 3, 4};
-intptr_t n = c_ARRAYLEN(array);
+intptr_t n = c_arraylen(array);
```
diff --git a/include/stc/carc.h b/include/stc/carc.h
index 5bf4ebc2..82f8835d 100644
--- a/include/stc/carc.h
+++ b/include/stc/carc.h
@@ -101,14 +101,14 @@ STC_INLINE long _cx_memb(_use_count)(const _cx_self* self)
STC_INLINE _cx_self _cx_memb(_from_ptr)(_cx_value* p) {
_cx_self ptr = {p};
if (p)
- *(ptr.use_count = c_ALLOC(catomic_long)) = 1;
+ *(ptr.use_count = _i_alloc(catomic_long)) = 1;
return ptr;
}
// c++: std::make_shared<_cx_value>(val)
STC_INLINE _cx_self _cx_memb(_make)(_cx_value val) {
_cx_self ptr;
- struct _cx_memb(_rep_)* rep = c_ALLOC(struct _cx_memb(_rep_));
+ struct _cx_memb(_rep_)* rep = _i_alloc(struct _cx_memb(_rep_));
*(ptr.use_count = &rep->counter) = 1;
*(ptr.get = &rep->value) = val;
return ptr;
@@ -127,8 +127,8 @@ STC_INLINE void _cx_memb(_drop)(_cx_self* self) {
if (self->use_count && _i_atomic_dec_and_test(self->use_count)) {
i_keydrop(self->get);
if ((char *)self->get != (char *)self->use_count + offsetof(struct _cx_memb(_rep_), value))
- c_free(self->get);
- c_free((long*)self->use_count);
+ i_free(self->get);
+ i_free((long*)self->use_count);
}
}
diff --git a/include/stc/cbits.h b/include/stc/cbits.h
index 577ecb13..d72be230 100644
--- a/include/stc/cbits.h
+++ b/include/stc/cbits.h
@@ -198,7 +198,7 @@ struct { uint64_t data64[(i_capacity - 1)/64 + 1]; } typedef i_type;
STC_INLINE i_type _i_memb(_init)(void) { return c_LITERAL(i_type){0}; }
STC_INLINE void _i_memb(_create)(i_type* self) {}
STC_INLINE void _i_memb(_drop)(i_type* self) {}
-STC_INLINE intptr_t _i_memb(_size)(const i_type* self) { return i_capacity; }
+STC_INLINE intptr_t _i_memb(_size)(const i_type* self) { return i_capacity; }
STC_INLINE i_type _i_memb(_move)(i_type* self) { return *self; }
STC_INLINE i_type* _i_memb(_take)(i_type* self, i_type other)
diff --git a/include/stc/cbox.h b/include/stc/cbox.h
index 4f0a2976..c914152c 100644
--- a/include/stc/cbox.h
+++ b/include/stc/cbox.h
@@ -89,7 +89,7 @@ STC_INLINE _cx_self _cx_memb(_from_ptr)(_cx_value* p)
// c++: std::make_unique<i_key>(val)
STC_INLINE _cx_self _cx_memb(_make)(_cx_value val) {
- _cx_self ptr = {c_ALLOC(_cx_value)};
+ _cx_self ptr = {_i_alloc(_cx_value)};
*ptr.get = val; return ptr;
}
@@ -100,7 +100,7 @@ STC_INLINE _cx_raw _cx_memb(_toraw)(const _cx_self* self)
STC_INLINE void _cx_memb(_drop)(_cx_self* self) {
if (self->get) {
i_keydrop(self->get);
- c_free(self->get);
+ i_free(self->get);
}
}
@@ -136,7 +136,7 @@ STC_INLINE _cx_self _cx_memb(_from)(_cx_value val)
STC_INLINE _cx_self _cx_memb(_clone)(_cx_self other) {
if (!other.get)
return other;
- _cx_self out = {c_ALLOC(i_key)};
+ _cx_self out = {_i_alloc(i_key)};
*out.get = i_keyclone((*other.get));
return out;
}
diff --git a/include/stc/ccommon.h b/include/stc/ccommon.h
index d04aaacd..ddfb41b9 100644
--- a/include/stc/ccommon.h
+++ b/include/stc/ccommon.h
@@ -64,24 +64,24 @@
#ifdef __cplusplus
#include <new>
- #define c_ALLOC(T) static_cast<T*>(c_malloc(c_sizeof(T)))
- #define c_NEW(T, ...) new (c_ALLOC(T)) T(__VA_ARGS__)
+ #define _i_alloc(T) static_cast<T*>(i_malloc(c_sizeof(T)))
+ #define _i_new(T, ...) new (_i_alloc(T)) T(__VA_ARGS__)
+ #define c_new(T, ...) new (malloc(sizeof(T))) T(__VA_ARGS__)
#define c_LITERAL(T) T
#else
- #define c_ALLOC(T) ((T*)c_malloc(c_sizeof(T)))
- #define c_NEW(T, ...) ((T*)memcpy(c_ALLOC(T), (T[]){__VA_ARGS__}, sizeof(T)))
+ #define _i_alloc(T) ((T*)i_malloc(c_sizeof(T)))
+ #define _i_new(T, ...) ((T*)memcpy(_i_alloc(T), (T[]){__VA_ARGS__}, sizeof(T)))
+ #define c_new(T, ...) ((T*)memcpy(malloc(sizeof(T)), (T[]){__VA_ARGS__}, sizeof(T)))
#define c_LITERAL(T) (T)
#endif
+#define c_malloc(sz) malloc(c_i2u(sz))
+#define c_calloc(n, sz) calloc(c_i2u(n), c_i2u(sz))
+#define c_realloc(p, sz) realloc(p, c_i2u(sz))
+#define c_free(p) free(p)
-#ifndef c_malloc
- #define c_malloc(sz) malloc(c_i2u(sz))
- #define c_calloc(n, sz) calloc(c_i2u(n), c_i2u(sz))
- #define c_realloc(p, sz) realloc(p, c_i2u(sz))
- #define c_free(p) free(p)
-#endif
#define c_static_assert(b) ((int)(0*sizeof(int[(b) ? 1 : -1])))
#define c_container_of(p, T, m) ((T*)((char*)(p) + 0*sizeof((p) == &((T*)0)->m) - offsetof(T, m)))
-#define c_delete(T, ptr) do { T *_tp = ptr; T##_drop(_tp); c_free(_tp); } while (0)
+#define c_delete(T, ptr) do { T *_tp = ptr; T##_drop(_tp); i_free(_tp); } while (0)
#define c_swap(T, xp, yp) do { T *_xp = xp, *_yp = yp, \
_tv = *_xp; *_xp = *_yp; *_yp = _tv; } while (0)
#define c_sizeof (intptr_t)sizeof
@@ -121,13 +121,14 @@
#define c_make(C, ...) \
C##_from_n((C##_raw[])__VA_ARGS__, c_sizeof((C##_raw[])__VA_ARGS__)/c_sizeof(C##_raw))
+#define c_arraylen(a) \
+ (intptr_t)(sizeof(a)/sizeof 0[a])
typedef const char* crawstr;
#define crawstr_cmp(xp, yp) strcmp(*(xp), *(yp))
#define crawstr_hash(p) cstrhash(*(p))
#define crawstr_len(literal) (c_sizeof("" literal) - 1)
-#define c_ARRAYLEN(a) (intptr_t)(sizeof(a)/sizeof 0[a])
#define c_SV(...) c_MACRO_OVERLOAD(c_SV, __VA_ARGS__)
#define c_SV_1(lit) c_SV_2(lit, crawstr_len(lit))
#define c_SV_2(str, n) (c_LITERAL(csview){str, n})
diff --git a/include/stc/cdeq.h b/include/stc/cdeq.h
index 56c0e867..fd508bf6 100644
--- a/include/stc/cdeq.h
+++ b/include/stc/cdeq.h
@@ -229,7 +229,7 @@ STC_DEF void
_cx_memb(_shrink_to_fit)(_cx_self *self) {
if (self->_len != self->_cap) {
c_memmove(self->_base, self->data, self->_len*c_sizeof(i_key));
- _cx_value* d = (_cx_value*)c_realloc(self->_base, self->_len*c_sizeof(i_key));
+ _cx_value* d = (_cx_value*)i_realloc(self->_base, self->_len*c_sizeof(i_key));
if (d) {
self->_base = d;
self->_cap = self->_len;
@@ -242,7 +242,7 @@ STC_DEF void
_cx_memb(_drop)(_cx_self* self) {
if (self->_base) {
_cx_memb(_clear)(self);
- c_free(self->_base);
+ i_free(self->_base);
}
}
@@ -250,7 +250,7 @@ static intptr_t
_cx_memb(_realloc_)(_cx_self* self, const intptr_t n) {
const intptr_t cap = (intptr_t)((float)self->_len*1.7f) + n + 7;
const intptr_t nfront = _cdeq_nfront(self);
- _cx_value* d = (_cx_value*)c_realloc(self->_base, cap*c_sizeof(i_key));
+ _cx_value* d = (_cx_value*)i_realloc(self->_base, cap*c_sizeof(i_key));
if (!d)
return 0;
self->_cap = cap;
diff --git a/include/stc/clist.h b/include/stc/clist.h
index 81443b59..de874927 100644
--- a/include/stc/clist.h
+++ b/include/stc/clist.h
@@ -70,7 +70,7 @@ _c_clist_types(clist_VOID, int);
_c_clist_complete_types(clist_VOID, dummy);
#define _c_clist_insert_entry_after(ref, val) \
- _cx_node *entry = (_cx_node *)c_malloc(c_sizeof *entry); entry->value = val; \
+ _cx_node *entry = (_cx_node *)i_malloc(c_sizeof *entry); entry->value = val; \
_c_clist_insert_node_after(ref, entry)
#define _c_clist_insert_node_after(ref, entry) \
@@ -348,7 +348,7 @@ STC_DEF void
_cx_memb(_erase_node_after)(_cx_self* self, _cx_node* ref) {
_cx_node* node = _cx_memb(_unlink_node_after)(self, ref);
i_keydrop((&node->value));
- c_free(node);
+ i_free(node);
}
STC_DEF _cx_node*
diff --git a/include/stc/cmap.h b/include/stc/cmap.h
index f5547125..f3c82469 100644
--- a/include/stc/cmap.h
+++ b/include/stc/cmap.h
@@ -318,8 +318,8 @@ STC_INLINE void _cx_memb(_wipe_)(_cx_self* self) {
STC_DEF void _cx_memb(_drop)(_cx_self* self) {
_cx_memb(_wipe_)(self);
- c_free(self->_hashx);
- c_free((void *) self->table);
+ i_free(self->_hashx);
+ i_free((void *) self->table);
}
STC_DEF void _cx_memb(_clear)(_cx_self* self) {
@@ -395,11 +395,11 @@ _cx_memb(_insert_entry_)(_cx_self* self, _cx_rawkey rkey) {
STC_DEF _cx_self
_cx_memb(_clone)(_cx_self m) {
if (m.table) {
- _cx_value *t = (_cx_value *)c_malloc(c_sizeof(_cx_value)*m.bucket_count),
+ _cx_value *t = (_cx_value *)i_malloc(c_sizeof(_cx_value)*m.bucket_count),
*dst = t, *m_end = m.table + m.bucket_count;
- uint8_t *h = (uint8_t *)c_memcpy(c_malloc(m.bucket_count + 1), m._hashx, m.bucket_count + 1);
+ uint8_t *h = (uint8_t *)c_memcpy(i_malloc(m.bucket_count + 1), m._hashx, m.bucket_count + 1);
if (!(t && h))
- { c_free(t), c_free(h), t = 0, h = 0, m.bucket_count = 0; }
+ { i_free(t), i_free(h), t = 0, h = 0, m.bucket_count = 0; }
else
for (; m.table != m_end; ++m.table, ++m._hashx, ++dst)
if (*m._hashx)
@@ -422,8 +422,8 @@ _cx_memb(_reserve)(_cx_self* self, const int64_t newcap) {
_nbuckets |= 1;
#endif
_cx_self m = {
- (_cx_value *)c_malloc(c_sizeof(_cx_value)*_nbuckets),
- (uint8_t *)c_calloc(_nbuckets + 1, 1),
+ (_cx_value *)i_malloc(c_sizeof(_cx_value)*_nbuckets),
+ (uint8_t *)i_calloc(_nbuckets + 1, 1),
self->size, _nbuckets,
};
bool ok = m.table && m._hashx;
@@ -439,8 +439,8 @@ _cx_memb(_reserve)(_cx_self* self, const int64_t newcap) {
}
c_swap(_cx_self, self, &m);
}
- c_free(m._hashx);
- c_free(m.table);
+ i_free(m._hashx);
+ i_free(m.table);
return ok;
}
diff --git a/include/stc/cpque.h b/include/stc/cpque.h
index 55df70ef..4955f2e0 100644
--- a/include/stc/cpque.h
+++ b/include/stc/cpque.h
@@ -55,7 +55,7 @@ STC_INLINE _cx_self _cx_memb(_from_n)(const _cx_raw* raw, intptr_t n)
STC_INLINE bool _cx_memb(_reserve)(_cx_self* self, const intptr_t cap) {
if (cap != self->_len && cap <= self->_cap) return true;
- _cx_value *d = (_cx_value *)c_realloc(self->data, cap*c_sizeof *d);
+ _cx_value *d = (_cx_value *)i_realloc(self->data, cap*c_sizeof *d);
return d ? (self->data = d, self->_cap = cap, true) : false;
}
@@ -79,7 +79,7 @@ STC_INLINE void _cx_memb(_clear)(_cx_self* self) {
}
STC_INLINE void _cx_memb(_drop)(_cx_self* self)
- { _cx_memb(_clear)(self); c_free(self->data); }
+ { _cx_memb(_clear)(self); i_free(self->data); }
STC_INLINE intptr_t _cx_memb(_size)(const _cx_self* q)
{ return q->_len; }
diff --git a/include/stc/csmap.h b/include/stc/csmap.h
index 0f21f954..6a1899b9 100644
--- a/include/stc/csmap.h
+++ b/include/stc/csmap.h
@@ -231,7 +231,7 @@ STC_DEF bool
_cx_memb(_reserve)(_cx_self* self, const int64_t cap) {
if ((i_size)cap <= self->cap)
return false;
- _cx_node* nodes = (_cx_node*)c_realloc(self->nodes, (cap + 1)*c_sizeof(_cx_node));
+ _cx_node* nodes = (_cx_node*)i_realloc(self->nodes, (cap + 1)*c_sizeof(_cx_node));
if (!nodes)
return false;
nodes[0] = c_LITERAL(_cx_node){{0, 0}, 0};
@@ -581,7 +581,7 @@ STC_DEF void
_cx_memb(_drop)(_cx_self* self) {
if (self->cap) {
_cx_memb(_drop_r_)(self->nodes, self->root);
- c_free(self->nodes);
+ i_free(self->nodes);
}
}
diff --git a/include/stc/cspan.h b/include/stc/cspan.h
index cc3d03b3..6c7bb273 100644
--- a/include/stc/cspan.h
+++ b/include/stc/cspan.h
@@ -124,10 +124,10 @@ typedef struct { int32_t d[6]; } cspan_idx6;
{.data=(container)->data, .shape={(int32_t)(container)->_len}}
#define cspan_from_array(array) \
- {.data=(array) + c_static_assert(sizeof(array) != sizeof(void*)), .shape={c_ARRAYLEN(array)}}
+ {.data=(array) + c_static_assert(sizeof(array) != sizeof(void*)), .shape={c_arraylen(array)}}
#define cspan_size(self) _cspan_size((self)->shape, cspan_rank(self))
-#define cspan_rank(self) c_ARRAYLEN((self)->shape)
+#define cspan_rank(self) c_arraylen((self)->shape)
#define cspan_index(self, ...) c_PASTE(cspan_idx_, c_NUMARGS(__VA_ARGS__))(self, __VA_ARGS__)
#define cspan_idx_1 cspan_idx_4
diff --git a/include/stc/cstack.h b/include/stc/cstack.h
index dd4686e9..54bf7850 100644
--- a/include/stc/cstack.h
+++ b/include/stc/cstack.h
@@ -59,12 +59,12 @@ STC_INLINE void _cx_memb(_create)(_cx_self* self)
{ self->_len = 0; self->_cap = 0; self->data = NULL; }
STC_INLINE _cx_self _cx_memb(_with_capacity)(intptr_t cap) {
- _cx_self out = {(_cx_value *) c_malloc(cap*c_sizeof(i_key)), 0, cap};
+ _cx_self out = {(_cx_value *) i_malloc(cap*c_sizeof(i_key)), 0, cap};
return out;
}
STC_INLINE _cx_self _cx_memb(_with_size)(intptr_t size, i_key null) {
- _cx_self out = {(_cx_value *) c_malloc(size*c_sizeof null), size, size};
+ _cx_self out = {(_cx_value *) i_malloc(size*c_sizeof null), size, size};
while (size) out.data[--size] = null;
return out;
}
@@ -79,7 +79,7 @@ STC_INLINE void _cx_memb(_clear)(_cx_self* self) {
STC_INLINE void _cx_memb(_drop)(_cx_self* self) {
_cx_memb(_clear)(self);
#ifndef i_capacity
- c_free(self->data);
+ i_free(self->data);
#endif
}
@@ -100,7 +100,7 @@ STC_INLINE intptr_t _cx_memb(_capacity)(const _cx_self* self) {
STC_INLINE bool _cx_memb(_reserve)(_cx_self* self, intptr_t n) {
if (n < self->_len) return true;
#ifndef i_capacity
- _cx_value *t = (_cx_value *)c_realloc(self->data, n*c_sizeof *t);
+ _cx_value *t = (_cx_value *)i_realloc(self->data, n*c_sizeof *t);
if (t) { self->_cap = n, self->data = t; return true; }
#endif
return false;
@@ -154,7 +154,7 @@ STC_INLINE _cx_value* _cx_memb(_emplace)(_cx_self* self, _cx_raw raw)
#if !defined i_no_clone
STC_INLINE _cx_self _cx_memb(_clone)(_cx_self v) {
- _cx_self out = {(_cx_value *)c_malloc(v._len*c_sizeof(_cx_value)), v._len, v._len};
+ _cx_self out = {(_cx_value *)i_malloc(v._len*c_sizeof(_cx_value)), v._len, v._len};
if (!out.data) out._cap = 0;
else for (intptr_t i = 0; i < v._len; ++v.data)
out.data[i++] = i_keyclone((*v.data));
diff --git a/include/stc/cvec.h b/include/stc/cvec.h
index 06664b4d..84c91228 100644
--- a/include/stc/cvec.h
+++ b/include/stc/cvec.h
@@ -277,13 +277,13 @@ _cx_memb(_drop)(_cx_self* self) {
if (self->_cap == 0)
return;
_cx_memb(_clear)(self);
- c_free(self->data);
+ i_free(self->data);
}
STC_DEF bool
_cx_memb(_reserve)(_cx_self* self, const intptr_t cap) {
if (cap > self->_cap || (cap && cap == self->_len)) {
- _cx_value* d = (_cx_value*)c_realloc(self->data, cap*c_sizeof(i_key));
+ _cx_value* d = (_cx_value*)i_realloc(self->data, cap*c_sizeof(i_key));
if (!d)
return false;
self->data = d;
diff --git a/include/stc/priv/altnames.h b/include/stc/priv/altnames.h
index e3ce03a0..0b01d251 100644
--- a/include/stc/priv/altnames.h
+++ b/include/stc/priv/altnames.h
@@ -20,9 +20,6 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#define c_alloc c_ALLOC
-#define c_new c_NEW
-#define c_arraylen c_ARRAYLEN
#define c_forlist c_FORLIST
#define c_forrange c_FORRANGE
#define c_foreach c_FOREACH
@@ -38,3 +35,5 @@
#define c_defer c_DEFER
#define c_sv c_SV
#define c_ARGSV c_SVARG
+#define c_NEW c_new
+#define c_ARRAYLEN c_arraylen
diff --git a/include/stc/priv/template.h b/include/stc/priv/template.h
index 6eb82bcb..79627ff3 100644
--- a/include/stc/priv/template.h
+++ b/include/stc/priv/template.h
@@ -48,6 +48,16 @@
#define i_size intptr_t
#endif
+#ifndef i_allocator
+ #define i_allocator c_
+#endif
+#ifndef i_malloc
+ #define i_malloc c_PASTE(i_allocator, malloc)
+ #define i_calloc c_PASTE(i_allocator, calloc)
+ #define i_realloc c_PASTE(i_allocator, realloc)
+ #define i_free c_PASTE(i_allocator, free)
+#endif
+
#if !(defined i_key || defined i_key_str || defined i_key_ssv || \
defined i_keyclass || defined i_keyboxed)
#if defined _i_ismap
@@ -317,6 +327,12 @@
#undef i_static
#undef i_extern
+#undef i_allocator
+#undef i_malloc
+#undef i_calloc
+#undef i_realloc
+#undef i_free
+
#undef i_no_cmp
#undef i_no_eq
#undef i_no_hash
diff --git a/misc/examples/rawptr_elements.c b/misc/examples/rawptr_elements.c
index 96a9ba86..6fb9208c 100644
--- a/misc/examples/rawptr_elements.c
+++ b/misc/examples/rawptr_elements.c
@@ -10,9 +10,9 @@ typedef int64_t inttype;
#define i_key_str
#define i_val inttype*
#define i_valraw inttype
-#define i_valfrom(raw) c_NEW(inttype, raw)
+#define i_valfrom(raw) c_new(inttype, raw)
#define i_valto(x) **x
-#define i_valclone(x) c_NEW(inttype, *x)
+#define i_valclone(x) c_new(inttype, *x)
#define i_valdrop(x) c_free(*x)
#include <stc/cmap.h>
@@ -32,8 +32,8 @@ int main()
c_AUTO (SIBoxMap, m2)
{
printf("\nMap with pointer elements:\n");
- SIPtrMap_insert(&map, cstr_from("testing"), c_NEW(inttype, 1));
- SIPtrMap_insert(&map, cstr_from("done"), c_NEW(inttype, 2));
+ SIPtrMap_insert(&map, cstr_from("testing"), c_new(inttype, 1));
+ SIPtrMap_insert(&map, cstr_from("done"), c_new(inttype, 2));
// Emplace: implicit key, val construction:
SIPtrMap_emplace(&map, "hello", 3);
diff --git a/misc/examples/shape.c b/misc/examples/shape.c
index 9ce0b946..f71704d9 100644
--- a/misc/examples/shape.c
+++ b/misc/examples/shape.c
@@ -140,9 +140,9 @@ int main(void)
{
c_AUTO (Shapes, shapes)
{
- Triangle* tri1 = c_NEW(Triangle, Triangle_from((Point){5, 7}, (Point){12, 7}, (Point){12, 20}));
- Polygon* pol1 = c_NEW(Polygon, Polygon_init());
- Polygon* pol2 = c_NEW(Polygon, Polygon_init());
+ Triangle* tri1 = c_new(Triangle, Triangle_from((Point){5, 7}, (Point){12, 7}, (Point){12, 20}));
+ Polygon* pol1 = c_new(Polygon, Polygon_init());
+ Polygon* pol2 = c_new(Polygon, Polygon_init());
c_FORLIST (i, Point, {{50, 72}, {123, 73}, {127, 201}, {828, 333}})
Polygon_addPoint(pol1, *i.ref);