summaryrefslogtreecommitdiff
path: root/prb_macros.h
diff options
context:
space:
mode:
Diffstat (limited to 'prb_macros.h')
-rw-r--r--prb_macros.h92
1 files changed, 43 insertions, 49 deletions
diff --git a/prb_macros.h b/prb_macros.h
index a9a465d..5a38ae4 100644
--- a/prb_macros.h
+++ b/prb_macros.h
@@ -1,61 +1,55 @@
#ifndef PRB_MACROS_H
#define PRB_MACROS_H
-#define Assert(e) if (!(e)) { *(int *)0 = 0; }
+#define ASSERT(E) if (!(E)) { *(int *)0 = 0; }
-#define ArrayCount(a) (sizeof(a)/sizeof(*(a)))
+#define ARRCNT(A) (sizeof(A)/sizeof(*(A)))
-#define IntFromPtr(p) (unsigned long long)((char *)(p)-(char *)0)
-#define PtrFromInt(n) (void *)((char *)0+(n))
+#define OFFSETOF(T, E) ((size_t)(&(((T *)(0))->E)))
-#define Member(t, m) (((t *)0)->m)
-#define OffsetOfMember(t, m) (IntFromPtr(&Member(t, m)))
+#define MIN(A, B) (((A) < (B)) ? (A) : (B))
+#define MAX(A, B) (((A) > (B)) ? (A) : (B))
-#define Min(a, b) (((a) < (b)) ? (a) : (b))
-#define Max(a, b) (((a) > (b)) ? (a) : (b))
+#define CLAMP(A, X, B) (((X) < (A)) ? (A) : \
+ (((X) > (B)) ? (B) : (X)))
+#define CLAMPTOP(A, B) MIN(A, B)
+#define CLAMPBOT(A, B) MAX(A, B)
-#define Clamp(a, x, b) (((x) < (a)) ? (a) : \
- (((x) > (b)) ? (b) : (x)))
-#define ClampTop(a, b) Min(a, b)
-#define ClampBottom(a, b) Max(a, b)
-
-#define Swap(t, a, b) { t temp = a; a = b; b = temp; }
+#define SWAP(T, A, B) { T tmp = A; A = B; B = tmp; }
/* NOTE(pryazha): Memory */
-#define MemoryZero(p, n) memset((p), 0, (n))
-#define MemoryZeroStruct(p) MemoryZero((p), sizeof(*(p)))
-#define MemoryZeroArray(p) MemoryZero((p), sizeof(p))
-
-#define MemoryCopy(d, s, n) memmove((d), (s), (n))
-#define MemoryCopyStruct(d, s) MemoryCopy((d), (s), Min(sizeof(*(d)), sizeof(*(s))))
-#define MemoryCopyArray(d, s) MemoryCopy((d), (s), Min(sizeof(d), sizeof(s)))
-
-#define MemoryMatch(a, b, n) (memcmp((a), (b), (n)) == 0)
-
-#define Kilobytes(n) n*1024
-#define Megabytes(n) Kilobytes(n)*1024
-#define Gigabytes(n) Megabytes(n)*1024
-
-/* NOTE(pryazha): Linked lists */
-#define SLLPush(f, l, n) \
- ((f) == 0 ? \
- ((f) = (l) = (n), (n)->next = 0) : \
- ((l)->next = (n), (l) = (n), (n)->next = 0))
-#define SLLPop(f, l) \
- ((f) == (l) ? \
- ((f) = (l) = 0) : \
- ((f) = (f)->next))
-
-#define DLLPushBack_NP(f, l, n, next, prev) \
- ((f) == 0 ? \
- ((f) = (l) = (n), (n)->next = (n)->prev = 0) : \
- ((n)->prev = (l), (l)->next = (n), (l) = (n), (n)->next = 0))
-#define DLLPushBack(f, l, n) DLLPushBack_NP(f, l, n, next, prev)
-#define DLLPushFront(f, l, n) DLLPushBack_NP(l, f, n, prev, next)
-#define DLLRemove(f, l, n) \
- ((f) == (n) ? \
- ((f) == (l) ? (f) = (l) = 0 : ((f) = (f)->next, (f)->prev = 0)) : \
- ((l) == (n) ? ((l) = (l)->prev, (l)->next = 0) : \
- ((n)->next->prev = (n)->prev, (n)->prev->next = (n)->next)))
+#define MEM0(P, N) memset((P), 0, (N))
+#define MEM0STRUCT(P) MEM0((P), sizeof(*(P)))
+
+#define MEMCPY(D, S, N) memmove((D), (S), (N))
+
+#define MEMMATCH(A, B, N) (memcmp((A), (B), (N)) == 0)
+
+#define KB(N) N*1024
+#define MB(N) KB(N)*1024
+#define GB(N) MB(N)*1024
+
+/* NOTE(pryazha): Singly-linked list */
+#define SLLPUSH(F, L, N) \
+ ((F) == 0 ? \
+ ((F) = (L) = (N), (N)->next = 0) : \
+ ((L)->next = (N), (L) = (N), (N)->next = 0))
+#define SLLPOP(F, L) \
+ ((F) == (L) ? \
+ ((F) = (L) = 0) : \
+ ((F) = (F)->next))
+
+/* NOTE(pryazha): Doubly-linked list */
+#define DLLPUSHBACK_NP(F, L, N, next, prev) \
+ ((F) == 0 ? \
+ ((F) = (L) = (N), (N)->next = (N)->prev = 0) : \
+ ((N)->prev = (L), (L)->next = (N), (L) = (N), (N)->next = 0))
+#define DLLPUSHBACK(F, L, N) DLLPUSHBACK_NP(F, L, N, next, prev)
+#define DLLPUSHFRONT(F, L, N) DLLPUSHBACK_NP(L, F, N, prev, next)
+#define DLLREMOVE(F, L, N) \
+ ((F) == (N) ? \
+ ((F) == (L) ? (F) = (L) = 0 : ((F) = (F)->next, (F)->prev = 0)) : \
+ ((L) == (N) ? ((L) = (L)->prev, (L)->next = 0) : \
+ ((N)->next->prev = (N)->prev, (N)->prev->next = (N)->next)))
#endif /* PRB_MACROS_H */