update
This commit is contained in:
18
core.h
18
core.h
@@ -139,25 +139,27 @@ inline function Vec4 vec4(real32 x, real32 y, real32 z, real32 w) {
|
|||||||
size_t length;\
|
size_t length;\
|
||||||
size_t capacity;\
|
size_t capacity;\
|
||||||
} prefix ## List
|
} prefix ## List
|
||||||
|
#define ListElementType(list) MemberTypeUnderlying(type, data)
|
||||||
|
#define ListElementSize(list) MemberSizeUnderlying(type, data)
|
||||||
|
|
||||||
DefineList(string, String);
|
DefineList(string, String);
|
||||||
|
|
||||||
#define PushList(arena, type, size) (type){ (MemberTypeUnderlying(type, data) *)pushSize(arena, MemberSizeUnderlying(type, data)*size), size, 0 }
|
#define PushList(arena, type, size) (type){ (ListElementType(type) *)pushSize(arena, ListElementSize(type)*size), size, 0 }
|
||||||
#define EmptyList(type) (type){ NULL, 0, 0 }
|
#define EmptyList(type) (type){ NULL, 0, 0 }
|
||||||
#define PushListZero(arena, type, size) (type){ (MemberTypeUnderlying(type, data) *)pushSizeFill(arena, MemberSizeUnderlying(type, data)*size, 0), size, 0 }
|
#define PushListZero(arena, type, size) (type){ (ListElementType(type) *)pushSizeFill(arena, ListElementSize(type)*size, 0), size, 0 }
|
||||||
#define PushFullList(arena, type, size) (type){ (MemberTypeUnderlying(type, data) *)pushSize(arena, MemberSizeUnderlying(type, data)*size), size, size }
|
#define PushFullList(arena, type, size) (type){ (ListElementType(type) *)pushSize(arena, ListElementSize(type)*size), size, size }
|
||||||
#define PushFullListZero(arena, type, size) (type){ (MemberTypeUnderlying(type, data) *)pushSizeFill(arena, MemberSizeUnderlying(type, data)*size, 0), size, size }
|
#define PushFullListZero(arena, type, size) (type){ (ListElementType(type) *)pushSizeFill(arena, ListElementSize(type)*size, 0), size, size }
|
||||||
#define ArrayAsList(type, array) (type){ array, ArrayCount(array), ArrayCount(array) }
|
#define ArrayAsList(type, array) (type){ array, ArrayCount(array), ArrayCount(array) }
|
||||||
|
|
||||||
#define AppendList(list, element) \
|
#define AppendList(list, element) \
|
||||||
if ((list)->length < (list)->capacity) { \
|
if ((list)->length < (list)->capacity) { \
|
||||||
(list)->data[(list)->length++] = (element); \
|
(list)->data[(list)->length++] = (element); \
|
||||||
}
|
}
|
||||||
#define ZeroListFull(list) memset((list)->data, 0, (list)->length * MemberTypeUnderlying(typeof(list), data))
|
#define ZeroListFull(list) memset((list)->data, 0, (list)->length * ListElementSize(*(list)))
|
||||||
#define ZeroList(list) (list)->length = 0; \
|
#define ZeroList(list) (list)->length = 0; \
|
||||||
memset((list)->data, 0, (list)->length * MemberTypeUnderlying(typeof(list), data));
|
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 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)
|
#define ListTail(list, start) ListSlice(list, (list)->length)
|
||||||
|
|
||||||
// ### Strings ###
|
// ### Strings ###
|
||||||
struct string {
|
struct string {
|
||||||
|
|||||||
Reference in New Issue
Block a user