summaryrefslogtreecommitdiffhomepage
path: root/stc/cvector.h
diff options
context:
space:
mode:
authorTylo <[email protected]>2020-06-05 12:13:45 +0200
committerTylo <[email protected]>2020-06-05 12:13:45 +0200
commitf04e2ec242daa3cda4c8d09c41b1d2b2c9d9fbe3 (patch)
treed6cfe16ebe81a7276e7e27d5fa1bf9f763020a38 /stc/cvector.h
parent3ebc1cf7dabf3d733c03f2a6c13046ddfaf032cb (diff)
downloadSTC-modified-f04e2ec242daa3cda4c8d09c41b1d2b2c9d9fbe3.tar.gz
STC-modified-f04e2ec242daa3cda4c8d09c41b1d2b2c9d9fbe3.zip
Added siphash to crandom.h and some small enhancements.
Diffstat (limited to 'stc/cvector.h')
-rw-r--r--stc/cvector.h17
1 files changed, 7 insertions, 10 deletions
diff --git a/stc/cvector.h b/stc/cvector.h
index 27caca6a..292954b1 100644
--- a/stc/cvector.h
+++ b/stc/cvector.h
@@ -94,8 +94,12 @@ typedef struct { \
Value *item, *end; \
} CVectorIter_##tag, cvector_##tag##_iter_t; \
\
-STC_API cvector_##tag##_iter_t \
-cvector_##tag##_begin(CVector_##tag* vec); \
+static inline cvector_##tag##_iter_t \
+cvector_##tag##_begin(CVector_##tag* vec) { \
+ const size_t n = cvector_size(*vec); \
+ cvector_##tag##_iter_t it = {n ? vec->data : NULL, vec->data + n}; \
+ return it; \
+} \
\
static inline cvector_##tag##_iter_t \
cvector_##tag##_next(cvector_##tag##_iter_t it) { \
@@ -190,15 +194,8 @@ STC_API void \
cvector_##tag##_sort(CVector_##tag* self) { \
size_t len = cvector_size(*self); \
if (len) qsort(self->data, len, sizeof(Value), cvector_##tag##_sortCompare); \
-} \
- \
-STC_API cvector_##tag##_iter_t \
-cvector_##tag##_begin(CVector_##tag* vec) { \
- cvector_##tag##_iter_t it; \
- it.item = vec->data, it.end = it.item + cvector_size(*vec); \
- if (it.item == it.end) it.item = NULL; \
- return it; \
}
+
#else
#define implement_CVector_6(tag, Value, valueDestroy, RawValue, valueCompareRaw, valueGetRaw)
#endif