remove gnu stuff
This commit is contained in:
31
core.h
31
core.h
@@ -44,9 +44,7 @@ typedef struct string string;
|
||||
|
||||
#define ArrayCount(arr) (sizeof(arr) / sizeof((arr)[0]))
|
||||
#define MemberSize(type, memberName) sizeof(((type *)0)->memberName)
|
||||
#define MemberType(type, memberName) typeof(((type *)0)->memberName)
|
||||
#define MemberSizeUnderlying(type, memberName) sizeof(*((type *)0)->memberName)
|
||||
#define MemberTypeUnderlying(type, memberName) typeof(*((type *)0)->memberName)
|
||||
|
||||
// ### Arenas ###
|
||||
typedef struct {
|
||||
@@ -139,27 +137,32 @@ inline function Vec4 vec4(real32 x, real32 y, real32 z, real32 w) {
|
||||
size_t length;\
|
||||
size_t capacity;\
|
||||
} prefix ## List
|
||||
#define ListElementType(list) MemberTypeUnderlying(type, data)
|
||||
#define ListElementSize(list) MemberSizeUnderlying(type, data)
|
||||
#define ListElementSize(list) MemberSizeUnderlying(list, data)
|
||||
|
||||
DefineList(string, String);
|
||||
|
||||
#define PushList(arena, type, size) (type){ (ListElementType(type) *)pushSize(arena, ListElementSize(type)*size), size, 0 }
|
||||
#define PushList(arena, type, size) (type){ pushSize(arena, ListElementSize(type)*size), 0, size }
|
||||
#define EmptyList(type) (type){ NULL, 0, 0 }
|
||||
#define PushListZero(arena, type, size) (type){ (ListElementType(type) *)pushSizeFill(arena, ListElementSize(type)*size, 0), size, 0 }
|
||||
#define PushFullList(arena, type, size) (type){ (ListElementType(type) *)pushSize(arena, ListElementSize(type)*size), size, size }
|
||||
#define PushFullListZero(arena, type, size) (type){ (ListElementType(type) *)pushSizeFill(arena, ListElementSize(type)*size, 0), size, size }
|
||||
#define PushListZero(arena, type, size) (type){ pushSizeFill(arena, ListElementSize(type)*size, 0), 0, size }
|
||||
#define PushFullList(arena, type, size) (type){ pushSize(arena, ListElementSize(type)*size), size, size }
|
||||
#define PushFullListZero(arena, type, size) (type){ pushSizeFill(arena, ListElementSize(type)*size, 0), size, size }
|
||||
#define ArrayAsList(type, array) (type){ array, ArrayCount(array), ArrayCount(array) }
|
||||
|
||||
#define AppendList(list, element) \
|
||||
if ((list)->length < (list)->capacity) { \
|
||||
(list)->data[(list)->length++] = (element); \
|
||||
}
|
||||
#define ZeroListFull(list) memset((list)->data, 0, (list)->length * ListElementSize(*(list)))
|
||||
#define ZeroListFull(list) memset((list)->data, 0, (list)->length * sizeof((list)->data[0]))
|
||||
#define ZeroList(list) (list)->length = 0; \
|
||||
memset((list)->data, 0, (list)->length * ListElementType(*(list)));
|
||||
#define ListSlice(list, start, stop) (stop > (list)->length || start > stop ? {0} : { (list)->data + start, stop - start, stop - start, })
|
||||
#define ListTail(list, start) ListSlice(list, (list)->length)
|
||||
memset((list)->data, 0, (list)->length * sizeof((list)->data[0]))
|
||||
|
||||
// Following two macros do not use pointers due to copying
|
||||
#define ListSlice(list, start, stop) {\
|
||||
.data= (stop > (list).length || start > stop) ? 0 : (list).data + start,\
|
||||
.length=(stop > (list).length || start > stop) ? 0 : stop - start,\
|
||||
.capacity=(stop > (list).length || start > stop) ? 0 : stop - start,\
|
||||
}
|
||||
#define ListTail(list, start) ListSlice(list, start, (list).length)
|
||||
|
||||
// ### Strings ###
|
||||
struct string {
|
||||
@@ -230,8 +233,8 @@ typedef enum {
|
||||
} StdStream;
|
||||
|
||||
#define ANSI_INSTRUCTION_FROM_ENUM(ansiCodeEnum) ANSI_INSTRUCTION(ansiCodeEnum)
|
||||
#define ANSI_INSTRUCTION(ansiCode) "\u001b[" #ansiCode "m"
|
||||
#define ANSI_INSTRUCTION_STR(ansiCodeStr) "\u001b[" ansiCodeStr "m"
|
||||
#define ANSI_INSTRUCTION(ansiCode) "\x1b[" #ansiCode "m"
|
||||
#define ANSI_INSTRUCTION_STR(ansiCodeStr) "\x1b[" ansiCodeStr "m"
|
||||
#define ANSI_RESET ANSI_INSTRUCTION(0)
|
||||
|
||||
#define ANSI_fg_black 30
|
||||
|
||||
Reference in New Issue
Block a user