aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--libsimple.h1
-rw-r--r--libsimple/array.h117
3 files changed, 119 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index ad87bba..90e7363 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,7 @@ SUBHDR =\
libsimple/aligned_alloc.h\
libsimple/aligned_allocz.h\
libsimple/aligned_memdup.h\
+ libsimple/array.h\
libsimple/calloc.h\
libsimple/definitions.h\
libsimple/env.h\
diff --git a/libsimple.h b/libsimple.h
index 6e2c08f..f2dd4b9 100644
--- a/libsimple.h
+++ b/libsimple.h
@@ -73,6 +73,7 @@
#include "libsimple/time.h"
#include "libsimple/mem.h"
#include "libsimple/memelem.h"
+#include "libsimple/array.h"
#include "libsimple/str.h"
#include "libsimple/strn.h"
#include "libsimple/overflow.h"
diff --git a/libsimple/array.h b/libsimple/array.h
new file mode 100644
index 0000000..b31088c
--- /dev/null
+++ b/libsimple/array.h
@@ -0,0 +1,117 @@
+/* See LICENSE file for copyright and license details. */
+
+/* TODO test, doc, man */
+
+
+#define libsimple_arrayelem(haystack, needle, n) libsimple_memelem(haystack, needle, sizeof *(haystack), n)
+#ifndef arrayelem
+# define arrayelem(...) libsimple_arrayelem(__VA_ARGS__)
+#endif
+
+
+#define libsimple_rawarrayelem(haystack, needle, n) libsimple_rawmemelem(haystack, needle, sizeof *(haystack), n)
+#ifndef rawarrayelem
+# define rawarrayelem(...) libsimple_rawarrayelem(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arrayscan(haystack, needle, n) libsimple_memelemscan(haystack, needle, sizeof *(haystack), n)
+#ifndef arrayscan
+# define arrayscan(...) libsimple_arrayscan(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arrayrelem(haystack, needle, n) libsimple_memrelem(haystack, needle, sizeof *(haystack), n)
+#ifndef arrayrelem
+# define arrayrelem(...) libsimple_arrayrelem(__VA_ARGS__)
+#endif
+
+
+#define libsimple_rawarrayrelem(haystack, needle, n) libsimple_rawmemrelem(haystack, needle, sizeof *(haystack), n)
+#ifndef rawarrayrelem
+# define rawarrayrelem(...) libsimple_rawarrayrelem(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arrayelem_inv(haystack, needle, n) libsimple_memelem_inv(haystack, needle, sizeof *(haystack), n)
+#ifndef arrayelem_inv
+# define arrayelem_inv(...) libsimple_arrayelem_inv(__VA_ARGS__)
+#endif
+
+
+#define libsimple_rawarrayelem_inv(haystack, needle, n) libsimple_rawmemelem_inv(haystack, needle, sizeof *(haystack), n)
+#ifndef rawarrayelem_inv
+# define rawarrayelem_inv(...) libsimple_rawarrayelem_inv(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arrayscan_inv(haystack, needle, n) libsimple_memelemscan_inv(haystack, needle, sizeof *(haystack), n)
+#ifndef arrayscan_inv
+# define arrayscan_inv(...) libsimple_arrayscan_inv(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arrayrelem_inv(haystack, needle, n) libsimple_memrelem_inv(haystack, needle, sizeof *(haystack), n)
+#ifndef arrayrelem_inv
+# define arrayrelem_inv(...) libsimple_arrayrelem_inv(__VA_ARGS__)
+#endif
+
+
+#define libsimple_rawarrayrelem_inv(haystack, needle, n) libsimple_rawmemrelem_inv(haystack, needle, sizeof *(haystack), n)
+#ifndef rawarrayrelem_inv
+# define rawarrayrelem_inv(...) libsimple_rawarrayrelem_inv(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arrayset(buf, item, n) libsimple_memsetelem(buf, item, (n) * sizeof *(buf))
+#ifndef arrayset
+# define arrayset(...) libsimple_arrayset(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arraypset(buf, item, n) libsimple_mempsetelem(buf, item, (n) * sizeof *(buf))
+#ifndef arraypset
+# define arraypset(...) libsimple_arraypset(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arraycpy(d, s, n) libsimple_memcpy(d, s, (n) * sizeof *(s))
+#ifndef arraycpy
+# define arraycpy(...) libsimple_arraycpy(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arraymove(d, s, n) libsimple_memmove(d, s, (n) * sizeof *(s))
+#ifndef arraymove
+# define arraymove(...) libsimple_arraymove(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arrayelemcpy(d, s, elem, n) libsimple_memelemcpy(d, s, elem, sizeof *(s), n)
+#ifndef arrayelemcpy
+# define arrayelemcpy(...) libsimple_arrayelemcpy(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arrayelemmove(d, s, elem, n) libsimple_memelemmove(d, s, elem, sizeof *(s), n)
+#ifndef arrayelemmove
+# define arrayelemmove(...) libsimple_arrayelemmove(__VA_ARGS__)
+#endif
+
+
+#define libsimple_rawarrayelemcpy(d, s, elem) libsimple_rawmemelemcpy(d, s, elem, sizeof *(s))
+#ifndef rawarrayelemcpy
+# define rawarrayelemcpy(...) libsimple_rawarrayelemcpy(__VA_ARGS__)
+#endif
+
+
+#define libsimple_rawarrayelemmove(d, s, elem) libsimple_rawmemelemmove(d, s, elem, sizeof *(s))
+#ifndef rawarrayelemmove
+# define rawarrayelemmove(...) libsimple_rawarrayelemmove(__VA_ARGS__)
+#endif
+
+
+#define libsimple_arrayreplace(s, old, new, n) libsimple_memreplaceelem(s, old, new, sizeof *(s), n)
+#ifndef arrayreplace
+# define arrayreplace(...) libsimple_arrayreplace(__VA_ARGS__)
+#endif