From 46b63125bc0c1885da0286d6be89bc935796b944 Mon Sep 17 00:00:00 2001 From: dzaima Date: Wed, 14 Aug 2024 01:57:40 +0300 Subject: [PATCH] ARBITRARY & GUARANTEED --- src/h.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/h.h b/src/h.h index 185b4624..6886d589 100644 --- a/src/h.h +++ b/src/h.h @@ -114,6 +114,8 @@ typedef size_t ux; #define POPC(X) __builtin_popcountll(X) #define LIKELY(X) __builtin_expect((X)!=0,1) #define RARE(X) __builtin_expect((X)!=0,0) +#define ARBITRARY(T) ((T)0) // to be potentially replaced with something better if such arrives +#define GUARANTEED(V) ({ AUTO v_ = (V); __builtin_constant_p(v_) && v_; }) #define fsizeof(T,F,E,N) (offsetof(T, F) + sizeof(E)*(N)) // type, flexible array member name, flexible array member type, item amount #define RFLD(X,T,F) ((T*)((char*)(X) - offsetof(T,F))) // value, result type, field name; reverse-read field: `T* x = …; E v = x->f; x == RFLD(v, T, f)` #define N64x "%"SCNx64