From 2dd68fc47fd69f243439fd26f6176ebd959cffdb Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Thu, 30 May 2019 23:23:02 -0400 Subject: [PATCH] Formalized the macro magic that actually works into sharedbits/{start,end}.h. Now to do arrays! --- sharedbits/TODO.md | 4 ++++ sharedbits/alloc_header.h | 11 ++--------- sharedbits/alloc_impl.h | 11 ++--------- sharedbits/array_header.h | 11 ++--------- sharedbits/array_impl.h | 11 ++--------- sharedbits/end.h | 5 +++++ sharedbits/start.h | 8 ++++++++ 7 files changed, 25 insertions(+), 36 deletions(-) create mode 100644 sharedbits/TODO.md create mode 100644 sharedbits/end.h create mode 100644 sharedbits/start.h diff --git a/sharedbits/TODO.md b/sharedbits/TODO.md new file mode 100644 index 00000000..43c9c79d --- /dev/null +++ b/sharedbits/TODO.md @@ -0,0 +1,4 @@ +- figure out how to tell meson to look here for changes, if I need to +- document this properly (I should also write development documentation for all of libui in general...) + - note that none of these files should have include guards +- figure out if we can macro-ize macro names (likely not) diff --git a/sharedbits/alloc_header.h b/sharedbits/alloc_header.h index 0caab3ce..b0957544 100644 --- a/sharedbits/alloc_header.h +++ b/sharedbits/alloc_header.h @@ -1,11 +1,6 @@ // 30 may 2019 -#ifndef sharedbitsPrefix -#error you must define sharedbitsPrefix before including this -#endif -#define sharedbitsPrefixMakeName(x, y) x ## y -#define sharedbitsPrefixExpandMakeName(x, y) sharedbitsPrefixMakeName(x, y) -#define sharedbitsPrefixName(Name) sharedbitsPrefixExpandMakeName(sharedbitsPrefix, Name) +#include "start.h" extern void *sharedbitsPrefixName(Alloc)(size_t n, const char *what); extern void *sharedbitsPrefixName(Realloc)(void *p, size_t nOld, size_t nNew, const char *what); @@ -19,6 +14,4 @@ you may also want to define the following: #define sharedbitsPrefixName(ResizeArray)(x, T, old, new) ((T *) sharedbitsPrefix ## Realloc(x, old * sizeof (T), new * sizeof (T), #T "[]")) */ -#undef sharedbitsPrefixName -#undef sharedbitsPrefixExpand -#undef sharedbitsPrefixMakeName +#include "end.h" diff --git a/sharedbits/alloc_impl.h b/sharedbits/alloc_impl.h index 6f29488c..36c64bbc 100644 --- a/sharedbits/alloc_impl.h +++ b/sharedbits/alloc_impl.h @@ -1,12 +1,7 @@ // 30 may 2019 // requires: alloc_header.h -#ifndef sharedbitsPrefix -#error you must define sharedbitsPrefix before including this -#endif -#define sharedbitsPrefixMakeName(x, y) x ## y -#define sharedbitsPrefixExpandMakeName(x, y) sharedbitsPrefixMakeName(x, y) -#define sharedbitsPrefixName(Name) sharedbitsPrefixExpandMakeName(sharedbitsPrefix, Name) +#include "start.h" extern void sharedbitsPrefixName(InternalError)(const char *fmt, ...); @@ -36,6 +31,4 @@ void sharedbitsPrefixName(Free)(void *p) free(p); } -#undef sharedbitsPrefixName -#undef sharedbitsPrefixExpand -#undef sharedbitsPrefixMakeName +#include "end.h" diff --git a/sharedbits/array_header.h b/sharedbits/array_header.h index 6832ac85..268be7e4 100644 --- a/sharedbits/array_header.h +++ b/sharedbits/array_header.h @@ -1,13 +1,6 @@ // 30 may 2019 // requires: alloc_header.h -#ifndef sharedbitsPrefix -#error you must define sharedbitsPrefix before including this -#endif -#define sharedbitsPrefixMakeName(x, y) x ## y -#define sharedbitsPrefixExpand(x) x -#define sharedbitsPrefixName(Name) sharedbitsPrefixMakeName(sharedbitsPrefixExpand(sharedbitsPrefix), Name) +#include "start.h" -#undef sharedbitsPrefixName -#undef sharedbitsPrefixExpand -#undef sharedbitsPrefixMakeName +#include "end.h" diff --git a/sharedbits/array_impl.h b/sharedbits/array_impl.h index a86abbaf..4d476408 100644 --- a/sharedbits/array_impl.h +++ b/sharedbits/array_impl.h @@ -1,13 +1,6 @@ // 30 may 2019 // requires: array_header.h -#ifndef sharedbitsPrefix -#error you must define sharedbitsPrefix before including this -#endif -#define sharedbitsPrefixMakeName(x, y) x ## y -#define sharedbitsPrefixExpand(x) x -#define sharedbitsPrefixName(Name) sharedbitsPrefixMakeName(sharedbitsPrefixExpand(sharedbitsPrefix), Name) +#include "start.h" -#undef sharedbitsPrefixName -#undef sharedbitsPrefixExpand -#undef sharedbitsPrefixMakeName +#include "end.h" diff --git a/sharedbits/end.h b/sharedbits/end.h new file mode 100644 index 00000000..109bfbfc --- /dev/null +++ b/sharedbits/end.h @@ -0,0 +1,5 @@ +// 30 may 2019 + +#undef sharedbitsPrefixName +#undef sharedbitsPrefixExpandMakeName +#undef sharedbitsPrefixMakeName diff --git a/sharedbits/start.h b/sharedbits/start.h new file mode 100644 index 00000000..3dcd309f --- /dev/null +++ b/sharedbits/start.h @@ -0,0 +1,8 @@ +// 30 may 2019 + +#ifndef sharedbitsPrefix +#error you must define sharedbitsPrefix before including this +#endif +#define sharedbitsPrefixMakeName(x, y) x ## y +#define sharedbitsPrefixExpandMakeName(x, y) sharedbitsPrefixMakeName(x, y) +#define sharedbitsPrefixName(Name) sharedbitsPrefixExpandMakeName(sharedbitsPrefix, Name)