summaryrefslogtreecommitdiffhomepage
path: root/include/stc/ccommon.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/stc/ccommon.h')
-rw-r--r--include/stc/ccommon.h54
1 files changed, 27 insertions, 27 deletions
diff --git a/include/stc/ccommon.h b/include/stc/ccommon.h
index d7d2d804..0b3083ef 100644
--- a/include/stc/ccommon.h
+++ b/include/stc/ccommon.h
@@ -173,65 +173,65 @@ STC_INLINE char* cstrnstrn(const char *str, const char *needle,
/* Control block macros */
-#define c_FOREACH(...) c_MACRO_OVERLOAD(c_FOREACH, __VA_ARGS__)
-#define c_FOREACH_3(it, C, cnt) \
+#define c_foreach(...) c_MACRO_OVERLOAD(c_foreach, __VA_ARGS__)
+#define c_foreach_3(it, C, cnt) \
for (C##_iter it = C##_begin(&cnt); it.ref; C##_next(&it))
-#define c_FOREACH_4(it, C, start, finish) \
+#define c_foreach_4(it, C, start, finish) \
for (C##_iter it = start, *_endref = (C##_iter*)(finish).ref \
; it.ref != (C##_value*)_endref; C##_next(&it))
-#define c_FORWHILE(i, C, start, cond) \
+#define c_forwhile(i, C, start, cond) \
for (struct {C##_iter it; C##_value *ref; intptr_t index;} \
i = {.it=start, .ref=i.it.ref}; i.it.ref && (cond) \
; C##_next(&i.it), i.ref = i.it.ref, ++i.index)
-#define c_FORPAIR(key, val, C, cnt) /* structured binding */ \
+#define c_forpair(key, val, C, cnt) /* structured binding */ \
for (struct {C##_iter it; const C##_key* key; C##_mapped* val;} _ = {.it=C##_begin(&cnt)} \
; _.it.ref && (_.key = &_.it.ref->first, _.val = &_.it.ref->second) \
; C##_next(&_.it))
-#define c_FORRANGE(...) c_MACRO_OVERLOAD(c_FORRANGE, __VA_ARGS__)
-#define c_FORRANGE_1(stop) c_FORRANGE_3(_c_i, 0, stop)
-#define c_FORRANGE_2(i, stop) c_FORRANGE_3(i, 0, stop)
-#define c_FORRANGE_3(i, start, stop) \
+#define c_forrange(...) c_MACRO_OVERLOAD(c_forrange, __VA_ARGS__)
+#define c_forrange_1(stop) c_forrange_3(_c_i, 0, stop)
+#define c_forrange_2(i, stop) c_forrange_3(i, 0, stop)
+#define c_forrange_3(i, start, stop) \
for (long long i=start, _end=(long long)(stop); i < _end; ++i)
-#define c_FORRANGE_4(i, start, stop, step) \
+#define c_forrange_4(i, start, stop, step) \
for (long long i=start, _inc=step, _end=(long long)(stop) - (_inc > 0) \
; (_inc > 0) ^ (i > _end); i += _inc)
#ifndef __cplusplus
- #define c_FORLIST(it, T, ...) \
+ #define c_forlist(it, T, ...) \
for (struct {T* data; T* ref; int size, index;} \
it = {.data=(T[])__VA_ARGS__, .ref=it.data, .size=(int)(sizeof((T[])__VA_ARGS__)/sizeof(T))} \
; it.index < it.size; ++it.ref, ++it.index)
#else
#include <initializer_list>
- #define c_FORLIST(it, T, ...) \
+ #define c_forlist(it, T, ...) \
for (struct {std::initializer_list<T> _il; std::initializer_list<T>::iterator data, ref; size_t size, index;} \
it = {._il=__VA_ARGS__, .data=it._il.begin(), .ref=it.data, .size=it._il.size()} \
; it.index < it.size; ++it.ref, ++it.index)
#endif
-#define c_WITH(...) c_MACRO_OVERLOAD(c_WITH, __VA_ARGS__)
-#define c_WITH_2(declvar, drop) for (declvar, **_c_i = NULL; !_c_i; ++_c_i, drop)
-#define c_WITH_3(declvar, pred, drop) for (declvar, **_c_i = NULL; !_c_i && (pred); ++_c_i, drop)
-#define c_SCOPE(init, drop) for (int _c_i = (init, 1); _c_i; --_c_i, drop)
-#define c_DEFER(...) for (int _c_i = 1; _c_i; --_c_i, __VA_ARGS__)
+#define c_with(...) c_MACRO_OVERLOAD(c_with, __VA_ARGS__)
+#define c_with_2(declvar, drop) for (declvar, **_c_i = NULL; !_c_i; ++_c_i, drop)
+#define c_with_3(declvar, pred, drop) for (declvar, **_c_i = NULL; !_c_i && (pred); ++_c_i, drop)
+#define c_scope(init, drop) for (int _c_i = (init, 1); _c_i; --_c_i, drop)
+#define c_defer(...) for (int _c_i = 1; _c_i; --_c_i, __VA_ARGS__)
-#define c_AUTO(...) c_MACRO_OVERLOAD(c_AUTO, __VA_ARGS__)
-#define c_AUTO_2(C, a) \
- c_WITH_2(C a = C##_init(), C##_drop(&a))
-#define c_AUTO_3(C, a, b) \
- c_WITH_2(c_EXPAND(C a = C##_init(), b = C##_init()), \
+#define c_auto(...) c_MACRO_OVERLOAD(c_auto, __VA_ARGS__)
+#define c_auto_2(C, a) \
+ c_with_2(C a = C##_init(), C##_drop(&a))
+#define c_auto_3(C, a, b) \
+ c_with_2(c_EXPAND(C a = C##_init(), b = C##_init()), \
(C##_drop(&b), C##_drop(&a)))
-#define c_AUTO_4(C, a, b, c) \
- c_WITH_2(c_EXPAND(C a = C##_init(), b = C##_init(), c = C##_init()), \
+#define c_auto_4(C, a, b, c) \
+ c_with_2(c_EXPAND(C a = C##_init(), b = C##_init(), c = C##_init()), \
(C##_drop(&c), C##_drop(&b), C##_drop(&a)))
-#define c_AUTO_5(C, a, b, c, d) \
- c_WITH_2(c_EXPAND(C a = C##_init(), b = C##_init(), c = C##_init(), d = C##_init()), \
+#define c_auto_5(C, a, b, c, d) \
+ c_with_2(c_EXPAND(C a = C##_init(), b = C##_init(), c = C##_init(), d = C##_init()), \
(C##_drop(&d), C##_drop(&c), C##_drop(&b), C##_drop(&a)))
/* Generic functions */
-#define c_drop(C, ...) do { c_FORLIST (_i, C*, {__VA_ARGS__}) C##_drop(*_i.ref); } while(0)
+#define c_drop(C, ...) do { c_forlist (_i, C*, {__VA_ARGS__}) C##_drop(*_i.ref); } while(0)
#define c_find_if(...) c_MACRO_OVERLOAD(c_find_if, __VA_ARGS__)
#define c_find_if_4(it, C, cnt, pred) do { \
intptr_t index = 0; \