Files
etaHEN/Source Code/include/sparse.h
LM 03d016fd31 etaHEN Goes Open Source
etaHEN Goes Open Source

clean tmp files

....
2025-09-07 11:10:19 -04:00

27 lines
1.2 KiB
C

#ifndef __SPARSE_H__
#define __SPARSE_H__
#pragma once
#define JOIN_HELPER(x, y) x##y
#define JOIN(x, y) JOIN_HELPER(x, y)
#define TYPE_PAD(size) char JOIN(_pad_, __COUNTER__)[size]
#define TYPE_VARIADIC_BEGIN(name) name { union {
#define TYPE_BEGIN(name, size) name { union { TYPE_PAD(size)
#define TYPE_END(...) }; } __VA_ARGS__
#define TYPE_FIELD(field, offset) struct { TYPE_PAD(offset); field; }
#define TYPE_CHECK_SIZE(name, size) \
_Static_assert(sizeof(name) == (size), "Size of " #name " != " #size)
#define TYPE_CHECK_FIELD_OFFSET(name, member, offset) \
_Static_assert(offsetof(name, member) == (offset), "Offset of " #name "." #member " != " #offset)
#define TYPE_CHECK_FIELD_SIZE(name, member, size) \
_Static_assert(sizeof(((name*)0)->member) == (size), "Size of " #name "." #member " != " #size)
#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))
#define KCALL_REL32(k, src, dest) do { *(uint32_t *)(k + src + 1) = (dest - src - k - 5); } while(0);
#endif