From edd7a4955dc31ea3e0893008f8b31bbded22a1b6 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 25 Nov 2018 15:42:18 +0100 Subject: Add array.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- Makefile | 1 + libsimple.h | 1 + libsimple/array.h | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 libsimple/array.h 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 -- cgit v1.2.3-70-g09d2