diff --git a/.vscode/settings.json b/.vscode/settings.json index 03a7ad9..0757542 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -90,7 +90,10 @@ "timeapi.h": "c", "stdlib.h": "c", "metadesk_deps.h": "c", - "stdbool.h": "c" + "stdbool.h": "c", + "map": "c", + "unordered_map": "c", + "stdint.h": "c" }, "workbench.colorCustomizations": { "activityBar.activeBackground": "#713fb8", diff --git a/bin/.clang-format b/bin/.clang-format index 6b74f02..18d366c 100644 --- a/bin/.clang-format +++ b/bin/.clang-format @@ -16,6 +16,9 @@ Macros: - md_enum_underlying(type)=type # WhitespaceSensitiveMacros: [ # ] +IfMacros: +- _Generic_L2 +- _Generic_L3 # TypenameMacros: [Array, Hashtable] SkipMacroDefinitionBody: false @@ -99,7 +102,7 @@ BreakBeforeTernaryOperators: true BreakConstructorInitializers: BeforeComma BreakStringLiterals: true -ColumnLimit: 180 +ColumnLimit: 160 CompactNamespaces: true diff --git a/code/base/base_types.h b/code/base/base_types.h index 1039ebd..d1d159e 100644 --- a/code/base/base_types.h +++ b/code/base/base_types.h @@ -9,33 +9,33 @@ #if defined( COMPILER_MSVC ) # if _MSC_VER < 1300 -typedef distinct(unsigned char, U8); -typedef distinct(signed char, S8); -typedef distinct(unsigned short, U16); -typedef distinct(signed short, S16); -typedef distinct(unsigned int, U32); -typedef distinct(signed int, S32); +typedef unsigned char, U8; +typedef signed char, S8; +typedef unsigned short, U16; +typedef signed short, S16; +typedef unsigned int, U32; +typedef signed int, S32; # else -typedef distinct(unsigned __int8, U8); -typedef distinct(signed __int8, S8); -typedef distinct(unsigned __int16, U16); -typedef distinct(signed __int16, S16); -typedef distinct(unsigned __int32, U32); -typedef distinct(signed __int32, S32); +typedef unsigned __int8 U8; +typedef signed __int8 S8; +typedef unsigned __int16 U16; +typedef signed __int16 S16; +typedef unsigned __int32 U32; +typedef signed __int32 S32; # endif -typedef distinct(unsigned __int64, U64); -typedef distinct(signed __int64, S64); +typedef unsigned __int64 U64; +typedef signed __int64 S64; #else # include -typedef distinct(uint8_t, U8); -typedef distinct(int8_t, S8); -typedef distinct(uint16_t, U16); -typedef distinct(int16_t, S16); -typedef distinct(uint32_t, U32); -typedef distinct(int32_t, S32); -typedef distinct(uint64_t, U64); -typedef distinct(int64_t, S64); +typedef uint8_t, U8; +typedef int8_t, S8; +typedef uint16_t, U16; +typedef int16_t, S16; +typedef uint32_t, U32; +typedef int32_t, S32; +typedef uint64_t, U64; +typedef int64_t, S64; #endif typedef struct U128 U128; @@ -53,8 +53,8 @@ static_assert( sizeof( U16 ) == 2, "sizeof(U16) != 2" ); static_assert( sizeof( U32 ) == 4, "sizeof(U32) != 4" ); static_assert( sizeof( U64 ) == 8, "sizeof(U64) != 8" ); -typedef distinct(size_t, USIZE); -typedef distinct(ptrdiff_t, SSIZE); +typedef size_t USIZE; +typedef ptrdiff_t SSIZE; static_assert( sizeof( USIZE ) == sizeof( SSIZE ), "sizeof(USIZE) != sizeof(SSIZE)" ); @@ -84,15 +84,15 @@ typedef intptr_t SPTR; static_assert( sizeof( UPTR ) == sizeof( SPTR ), "sizeof(UPTR) != sizeof(SPTR)" ); -typedef distinct(float, F32); -typedef distinct(double, F64); +typedef float F32; +typedef double F64; static_assert( sizeof( F32 ) == 4, "sizeof(F32) != 4" ); static_assert( sizeof( F64 ) == 8, "sizeof(F64) != 8" ); -typedef distinct(S8, B8); -typedef distinct(S16, B16); -typedef distinct(S32, B32); +typedef S8 B8; +typedef S16 B16; +typedef S32 B32; typedef void VoidProc(void); distinct_register_selector(VoidProc); diff --git a/code/base/command_line.h b/code/base/command_line.h index 7d76558..c9a506c 100644 --- a/code/base/command_line.h +++ b/code/base/command_line.h @@ -61,15 +61,15 @@ MD_API CmdLine cmd_line_from_string_list__ainfo(AllocatorInfo ainfo, String _Generic(allocator, \ Arena*: cmd_line_insert_opt__arena, \ AllocatorInfo: cmd_line_insert_opt__ainfo, \ - default: assert_generic_selection_fail \ -) resolved_function_call(allocator, cmd_line, string, values) + default: assert_generic_sel_fail \ +) generic_call(allocator, cmd_line, string, values) #define cmd_line_from_string_list(allocator, arguments) \ _Generic(allocator, \ Arena*: cmd_line_from_string_list__arena, \ AllocatorInfo: cmd_line_from_string_list__ainfo, \ - default: assert_generic_selection_fail \ -) resolved_function_call(allocator, arguments) + default: assert_generic_sel_fail \ +) generic_call(allocator, arguments) inline U64 cmd_line_hash_from_string(String8 string) { diff --git a/code/base/generic_macros.h b/code/base/generic_macros.h index 98b661e..4818b5c 100644 --- a/code/base/generic_macros.h +++ b/code/base/generic_macros.h @@ -34,8 +34,8 @@ #define generic_sel_entry_comma_delimiter select_arg_3 // Use the arg expansion macro to select arg 3 which should have the comma delimiter ','. #endif -#ifndef resolved_function_call -#define resolved_function_call // Just used to indicate where the call "occurs" +#ifndef generic_call +#define generic_call // Just used to indicate where the call "occurs" #endif // ---------------------------------------------------------------------------------------------------------------------------------- @@ -54,7 +54,7 @@ typedef struct UNRESOLVED_GENERIC_SELECTION UNRESOLVED_GENERIC_SELECTION; struct UNRESOLVED_GENERIC_SELECTION { void* _THE_VOID_SLOT_; }; -UNRESOLVED_GENERIC_SELECTION const assert_generic_selection_fail = {0}; +UNRESOLVED_GENERIC_SELECTION const assert_generic_sel_fail = {0}; // Which will provide the message: error: called object type 'struct NO_RESOLVED_GENERIC_SELECTION' is not a function or function pointer // ---------------------------------------------------------------------------------------------------------------------------------- @@ -65,8 +65,8 @@ UNRESOLVED_GENERIC_SELECTION const assert_generic_selection_fail = {0}; /* Extendibility slots: */ \ if_generic_selector_defined_include_slot( GENERIC_SLOT_1__function_sig ) \ if_generic_selector_defined_include_slot( GENERIC_SLOT_2__function_sig ) \ - default: assert_generic_selection_fail \ -) resolved_function_call( selector_arg ) + default: assert_generic_sel_fail \ +) generic_call( selector_arg ) // ---------------------------------------------------------------------------------------------------------------------------------- // Then each definiton of a function has an associated define: @@ -99,8 +99,8 @@ size_t generic_example_hash__P_long_long( long long val ) { return val * 2654435 if_generic_selector_defined_include_slot( GENERIC_SLOT_6__example_hash ) \ if_generic_selector_defined_include_slot( GENERIC_SLOT_7__example_hash ) \ if_generic_selector_defined_include_slot( GENERIC_SLOT_8__example_hash ) \ - default: assert_generic_selection_fail \ -) resolved_function_call( function_arguments ) + default: assert_generic_sel_fail \ +) generic_call( function_arguments ) // Additional Variations: @@ -111,8 +111,8 @@ size_t generic_example_hash__P_long_long( long long val ) { return val * 2654435 if_generic_selector_defined_include_slot( GENERIC_SLOT_2__function_sig ) \ /* ... */ \ if_generic_selector_defined_include_slot(GENERIC_SLOT_N__function_sig ) \ - default: assert_generic_selection_fail \ -) resolved_function_call( selector_arg, __VA_ARG__ ) + default: assert_generic_sel_fail \ +) generic_call( selector_arg, __VA_ARG__ ) // If the function does not take the arugment as a parameter: #define function_generic_example_direct_type( selector_arg ) _Generic( \ @@ -121,8 +121,8 @@ size_t generic_example_hash__P_long_long( long long val ) { return val * 2654435 if_generic_selector_defined_include_slot( GENERIC_SLOT_2__function_sig ) \ /* ... */ \ if_generic_selector_defined_include_slot(GENERIC_SLOT_N__function_sig ) \ - default: assert_generic_selection_fail \ -) resolved_function_call() + default: assert_generic_sel_fail \ +) generic_call(selector_arg) #ifndef type_to_expression @@ -132,38 +132,37 @@ size_t generic_example_hash__P_long_long( long long val ) { return val * 2654435 #endif // _Generic also suffers from type compability flatting distinctions between typedef by resolving the selection to the underling type and qualifier. -// To resolve this these distinctions must be enforced using structs that enforce the typedef +// To resolve this these distinctions must be enforce by keeping "compatible" types in separate _Generic expressions: -#ifndef distinct_register_selector -// Will define the metadata struct for generic selection usage with the distinct_lookup function macro -// Generally does not need to be used unless getting an error similar to: "_Generic association compatible with previous association type" -#define distinct_register_selector(type) typedef struct { type* UNUSED__; } Distinct_Typedef_ ## type -#endif +#define example_with__l2(expr) _Generic( \ +(expr), \ + S64 : example_with_s64, \ + default: assert_generic_sel_fail \ +) +#define example_with(expr) \ +_Generic((expr), \ + SSIZE : example_with_SSIZEZ \ + default : example_with_not_SSIZE(allocator, in) \ +) generic_call(allocator, in) -#ifndef distinct_lookup -// This is used by a generic selector to lookup a unique struct typeid of a typedef if distinct_register_selector function macro was utilized -// Only necessary to use with _Generic if getting an error similar to: "_Generic association compatible with previous association type" -#define distinct_lookup(type) Distinct_Typedef_ ## type -#endif +// This can be made more concise with he following "layer" indicating _Generic macros -// Example: ------------------------------------------------------------------------------------------------------------------------- -// Now this can work so long as typedef_generic_selector was used on the S64 && SSIZE typedefs -#define generic_example_do_something_with(selector_arg, in) _Generic( \ -(selector_arg), \ - distinct_lookup(S64) : do_something_with_s64, default: assert_generic_selection_fail, \ - distinct_lookup(SSIZE): do_something_with_ssize, default: assert_generic_selection_fail, \ - default : assert_generic_selection_fail \ -) resolved_function_call(selector_arg) -// ---------------------------------------------------------------------------------------------------------------------------------- +#define _Generic_L2(expr, ...) default: _Generic(expr, __VA_ARGS__) +#define _Generic_L3(expr, ...) default: _Generic(expr, __VA_ARGS__) -#ifndef distinct -// Can inlay with typedef and a distinct_register_selector. Usage: typedef distinct(int, SomeType); -// Generally does not need to be used unless getting an error similar to: "_Generic association compatible with previous association type" -// Use distinct_lookup, to resolve the distinct type for the generic selection entry. -#define distinct(underlying_type, type) underlying_type type; distinct_register_selector(type) -#endif +#define example_with_generic_layers(expr) \ +_Generic( (expr), \ + S64 : example_with_s64, \ +_Generic_L2((expr), \ + SSIZE: example_with_SSIZZE \ + default: assert_generic_sel_fail \ +), \ +) generic_call(expr) // Removing example definitions +#undef example_with +#undef example_with__l2 +#undef example_with_generic_layers #undef function_generic_example #undef GENERIC_SLOT_1__example_hash #undef GENERIC_SLOT_2__example_hash diff --git a/code/base/macros.h b/code/base/macros.h index e3ae984..1d8de2c 100644 --- a/code/base/macros.h +++ b/code/base/macros.h @@ -179,3 +179,9 @@ } \ while(0); #endif + +#define ct_if(expr, then, else) _Generic( \ +(&(char[1 + !!(EXPR)]){0}), \ + char (*)[2]: (THEN), \ + char (*)[1]: (ELSE) \ +) diff --git a/code/base/math.h b/code/base/math.h index 66aeee4..4247f95 100644 --- a/code/base/math.h +++ b/code/base/math.h @@ -972,8 +972,8 @@ void rng1s64_list_push__ainfo (AllocatorInfo ainfo, Rng1S64Lis Rng1S64Array rng1s64_array_from_list_push__arena(Arena* arena, Rng1S64List* list); Rng1S64Array rng1s64_array_from_list_push__ainfo(AllocatorInfo ainfo, Rng1S64List* list); -#define rng1s64_list_push(allocator, list, rng) _Generic(allocator, Arena*: rng1s64_list_push__arena, AllocatorInfo: rng1s64_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, rng) -#define rng1s64_array_from_list_push(allocator, list) _Generic(allocator, Arena*: rng1s64_array_from_list_push__arena, AllocatorInfo: rng1s64_array_from_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list) +#define rng1s64_list_push(allocator, list, rng) _Generic(allocator, Arena*: rng1s64_list_push__arena, AllocatorInfo: rng1s64_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, rng) +#define rng1s64_array_from_list_push(allocator, list) _Generic(allocator, Arena*: rng1s64_array_from_list_push__arena, AllocatorInfo: rng1s64_array_from_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list) force_inline void rng1s64_list_push__arena (Arena* arena, Rng1S64List* list, Rng1S64 rng) { rng1s64_list_push__ainfo (arena_allocator(arena), list, rng); } force_inline Rng1S64Array rng1s64_array_from_list_push__arena(Arena* arena, Rng1S64List* list) { return rng1s64_array_from_list_push__ainfo(arena_allocator(arena), list); } diff --git a/code/base/memory_substrate.c b/code/base/memory_substrate.c index 4dd3dcf..64ec253 100644 --- a/code/base/memory_substrate.c +++ b/code/base/memory_substrate.c @@ -296,7 +296,7 @@ varena_allocator_proc(void* allocator_data, AllocatorMode mode, SSIZE requested_ { case AllocatorMode_Alloc: { - assert(requested_size != 0); + assert_msg(requested_size != 0, "requested_size is 0"); requested_size = align_pow2(requested_size, alignment); diff --git a/code/base/strings.h b/code/base/strings.h index c90645f..009d1ad 100644 --- a/code/base/strings.h +++ b/code/base/strings.h @@ -238,7 +238,7 @@ inline U64 cstring8_length (U8* c) { U8* p = c; for (; *p != 0; p += 1); retur inline U64 cstring16_length(U16* c) { U16* p = c; for (; *p != 0; p += 1); return(p - c); } inline U64 cstring32_length(U32* c) { U32* p = c; for (; *p != 0; p += 1); return(p - c); } -#define cstring_length(c) _Generic(c, U8: cstring8_length, U16: cstring16_length, U32: cstring32_length)(c) +#define cstring_length(c) _Generic(c, U8*: cstring8_length, U16*: cstring16_length, U32*: cstring32_length)(c) //////////////////////////////// //~ rjf: String Constructors @@ -322,10 +322,10 @@ MD_API String8 str8_copy__ainfo(AllocatorInfo ainfo, String8 s); MD_API String8 str8fv__ainfo (AllocatorInfo ainfo, char* fmt, va_list args); String8 str8f__ainfo (AllocatorInfo ainfo, char* fmt, ...); -#define str8_cat(allocator, s1, s2) _Generic(allocator, Arena*: str8_cat__arena, AllocatorInfo: str8_cat__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, s1, s2) -#define str8_copy(allocator, s) _Generic(allocator, Arena*: str8_copy__arena, AllocatorInfo: str8_copy__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, s) -#define str8fv(allocator, fmt, args) _Generic(allocator, Arena*: str8fv__arena, AllocatorInfo: str8fv__ainfo , default: assert_generic_selection_fail) resolved_function_call(allocator, fmt, args) -#define str8f(allocator, fmt, ...) _Generic(allocator, Arena*: str8f__arena, AllocatorInfo: str8f__ainfo , default: assert_generic_selection_fail) resolved_function_call(allocator, fmt, __VA_ARGS__) +#define str8_cat(allocator, s1, s2) _Generic(allocator, Arena*: str8_cat__arena, AllocatorInfo: str8_cat__ainfo, default: assert_generic_sel_fail) generic_call(allocator, s1, s2) +#define str8_copy(allocator, s) _Generic(allocator, Arena*: str8_copy__arena, AllocatorInfo: str8_copy__ainfo, default: assert_generic_sel_fail) generic_call(allocator, s) +#define str8fv(allocator, fmt, args) _Generic(allocator, Arena*: str8fv__arena, AllocatorInfo: str8fv__ainfo , default: assert_generic_sel_fail) generic_call(allocator, fmt, args) +#define str8f(allocator, fmt, ...) _Generic(allocator, Arena*: str8f__arena, AllocatorInfo: str8f__ainfo , default: assert_generic_sel_fail) generic_call(allocator, fmt, __VA_ARGS__) force_inline String8 str8_cat__arena (Arena* arena, String8 s1, String8 s2) { return str8_cat__ainfo (arena_allocator(arena), s1, s2); } force_inline String8 str8_copy__arena(Arena* arena, String8 s) { return str8_copy__ainfo(arena_allocator(arena), s); } @@ -409,9 +409,9 @@ inline String8 upper_from_str8__ainfo (AllocatorInfo ainfo, String8 string) inline String8 lower_from_str8__ainfo (AllocatorInfo ainfo, String8 string) { string = str8_copy(ainfo, string); for(U64 idx = 0; idx < string.size; idx += 1) { string.str[idx] = char_to_lower(string.str[idx]); } return string; } inline String8 backslashed_from_str8__ainfo(AllocatorInfo ainfo, String8 string) { string = str8_copy(ainfo, string); for(U64 idx = 0; idx < string.size; idx += 1) { string.str[idx] = char_is_slash(string.str[idx]) ? '\\' : string.str[idx]; } return string; } -#define upper_from_str8(allocator, string) _Generic(allocator, Arena*: upper_from_str8__arena, AllocatorInfo: upper_from_str8__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string) -#define lower_from_str8(allocator, string) _Generic(allocator, Arena*: lower_from_str8__arena, AllocatorInfo: lower_from_str8__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string) -#define backslashed_from_str8(allocator, string) _Generic(allocator, Arena*: backslashed_from_str8__arena, AllocatorInfo: backslashed_from_str8__ainfo , default: assert_generic_selection_fail) resolved_function_call(allocator, string) +#define upper_from_str8(allocator, string) _Generic(allocator, Arena*: upper_from_str8__arena, AllocatorInfo: upper_from_str8__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string) +#define lower_from_str8(allocator, string) _Generic(allocator, Arena*: lower_from_str8__arena, AllocatorInfo: lower_from_str8__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string) +#define backslashed_from_str8(allocator, string) _Generic(allocator, Arena*: backslashed_from_str8__arena, AllocatorInfo: backslashed_from_str8__ainfo , default: assert_generic_sel_fail) generic_call(allocator, string) //////////////////////////////// //~ rjf: String Matching @@ -461,12 +461,12 @@ MD_API String8 str8_from_s64__ainfo (AllocatorInfo ainfo, S64 u64, U32 ra String8 str8_from_bits_u32__ainfo(AllocatorInfo ainfo, U32 x); String8 str8_from_bits_u64__ainfo(AllocatorInfo ainfo, U64 x); -#define str8_from_memory_size(allocator, z) _Generic(allocator, Arena*: str8_from_memory_size__arena, AllocatorInfo: str8_from_memory_size__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, z) -#define str8_from_u64(allocator, u64, radix, min_digits, digit_group_separator) _Generic(allocator, Arena*: str8_from_u64__arena, AllocatorInfo: str8_from_u64__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, u64, radix, min_digits, digit_group_separator) -#define str8_from_s64(allocator, s64, radix, min_digits, digit_group_separator) _Generic(allocator, Arena*: str8_from_s64__arena, AllocatorInfo: str8_from_s64__ainfo , default: assert_generic_selection_fail) resolved_function_call(allocator, s64, radix, min_digits, digit_group_separator) +#define str8_from_memory_size(allocator, z) _Generic(allocator, Arena*: str8_from_memory_size__arena, AllocatorInfo: str8_from_memory_size__ainfo, default: assert_generic_sel_fail) generic_call(allocator, z) +#define str8_from_u64(allocator, u64, radix, min_digits, digit_group_separator) _Generic(allocator, Arena*: str8_from_u64__arena, AllocatorInfo: str8_from_u64__ainfo, default: assert_generic_sel_fail) generic_call(allocator, u64, radix, min_digits, digit_group_separator) +#define str8_from_s64(allocator, s64, radix, min_digits, digit_group_separator) _Generic(allocator, Arena*: str8_from_s64__arena, AllocatorInfo: str8_from_s64__ainfo , default: assert_generic_sel_fail) generic_call(allocator, s64, radix, min_digits, digit_group_separator) -#define str8_from_bits_u32(allocator, x) _Generic(allocator, Arena*: str8_from_bits_u32__arena, AllocatorInfo: str8_from_bits_u32__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, x) -#define str8_from_bits_u64(allocator, x) _Generic(allocator, Arena*: str8_from_bits_u64__arena, AllocatorInfo: str8_from_bits_u64__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, x) +#define str8_from_bits_u32(allocator, x) _Generic(allocator, Arena*: str8_from_bits_u32__arena, AllocatorInfo: str8_from_bits_u32__ainfo, default: assert_generic_sel_fail) generic_call(allocator, x) +#define str8_from_bits_u64(allocator, x) _Generic(allocator, Arena*: str8_from_bits_u64__arena, AllocatorInfo: str8_from_bits_u64__ainfo, default: assert_generic_sel_fail) generic_call(allocator, x) force_inline String8 str8_from_memory_size__arena(Arena* arena, SSIZE z) { return str8_from_memory_size__ainfo(arena_allocator(arena), z); } force_inline String8 str8_from_u64__arena (Arena* arena, U64 u64, U32 radix, U8 min_digits, U8 digit_group_separator) { return str8_from_u64__ainfo (arena_allocator(arena), u64, radix, min_digits, digit_group_separator); } @@ -663,12 +663,12 @@ String8Node* str8_list_push_front__ainfo (AllocatorInfo ainfo, String8List* list String8Node* str8_list_pushf__ainfo (AllocatorInfo ainfo, String8List* list, char* fmt, ...); String8Node* str8_list_push_frontf__ainfo(AllocatorInfo ainfo, String8List* list, char* fmt, ...); -#define str8_list_aligner(allocator, list, min, align) _Generic(allocator, Arena*: str8_list_aligner__arena, AllocatorInfo: str8_list_aligner__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, min, align) -#define str8_list_copy(allocator, list) _Generic(allocator, Arena*: str8_list_copy__arena, AllocatorInfo: str8_list_copy__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list) -#define str8_list_push(allocator, list, string) _Generic(allocator, Arena*: str8_list_push__arena, AllocatorInfo: str8_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, string) -#define str8_list_push_front(allocator, list, string) _Generic(allocator, Arena*: str8_list_push_front__arena, AllocatorInfo: str8_list_push_front__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, string) -#define str8_list_pushf(allocator, list, fmt, ...) _Generic(allocator, Arena*: str8_list_pushf__arena, AllocatorInfo: str8_list_pushf__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, fmt, __VA_ARGS__) -#define str8_list_push_frontf(allocaotr, list, fmt, ...) _Generic(allocator, Arena*: str8_list_push_frontf__arena, AllocatorInfo: str8_list_push_frontf__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, fmt, __VA_ARGS__) +#define str8_list_aligner(allocator, list, min, align) _Generic(allocator, Arena*: str8_list_aligner__arena, AllocatorInfo: str8_list_aligner__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, min, align) +#define str8_list_copy(allocator, list) _Generic(allocator, Arena*: str8_list_copy__arena, AllocatorInfo: str8_list_copy__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list) +#define str8_list_push(allocator, list, string) _Generic(allocator, Arena*: str8_list_push__arena, AllocatorInfo: str8_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, string) +#define str8_list_push_front(allocator, list, string) _Generic(allocator, Arena*: str8_list_push_front__arena, AllocatorInfo: str8_list_push_front__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, string) +#define str8_list_pushf(allocator, list, fmt, ...) _Generic(allocator, Arena*: str8_list_pushf__arena, AllocatorInfo: str8_list_pushf__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, fmt, __VA_ARGS__) +#define str8_list_push_frontf(allocaotr, list, fmt, ...) _Generic(allocator, Arena*: str8_list_push_frontf__arena, AllocatorInfo: str8_list_push_frontf__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, fmt, __VA_ARGS__) force_inline String8Node* str8_list_ligner__arena (Arena* arena, String8List* list, U64 min, U64 align) { return str8_list_aligner__ainfo (arena_allocator(arena), list, min, align); } force_inline String8List str8_list_copy__arena (Arena* arena, String8List* list) { return str8_list_copy__ainfo (arena_allocator(arena), list); } @@ -745,10 +745,10 @@ MD_API String8 str8_list_join__ainfo (AllocatorInfo ainfo, String8List* lis void str8_list_from_flags__arena(Arena* arena, String8List* list, U32 flags, String8* flag_string_table, U32 flag_string_count); void str8_list_from_flags__ainfo(AllocatorInfo ainfo, String8List* list, U32 flags, String8* flag_string_table, U32 flag_string_count); -#define str8_split(allocator, string, split_chars, split_char_count, flags) _Generic(allocator, Arena*: str8_split__arena, AllocatorInfo: str8_split__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string, split_chars, split_char_count, flags) -#define str8_split_by_string_chars(allocator, string, split_chars, flags) _Generic(allocator, Arena*: str8_split_by_string_chars__arena, AllocatorInfo: str8_split_by_string_chars__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string, split_chars, flags) -#define str8_list_split_by_string_chars(allocator, list, split_chars, flags) _Generic(allocator, Arena*: str8_list_split_by_string_chars__arena, AllocatorInfo: str8_list_split_by_string_chars__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, split_chars, flags) -#define str8_list_join(allocator, list, params) _Generic(allocator, Arena*: str8_list_join__arena, AllocatorInfo: str8_list_join__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, params ) +#define str8_split(allocator, string, split_chars, split_char_count, flags) _Generic(allocator, Arena*: str8_split__arena, AllocatorInfo: str8_split__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string, split_chars, split_char_count, flags) +#define str8_split_by_string_chars(allocator, string, split_chars, flags) _Generic(allocator, Arena*: str8_split_by_string_chars__arena, AllocatorInfo: str8_split_by_string_chars__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string, split_chars, flags) +#define str8_list_split_by_string_chars(allocator, list, split_chars, flags) _Generic(allocator, Arena*: str8_list_split_by_string_chars__arena, AllocatorInfo: str8_list_split_by_string_chars__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, split_chars, flags) +#define str8_list_join(allocator, list, params) _Generic(allocator, Arena*: str8_list_join__arena, AllocatorInfo: str8_list_join__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, params ) force_inline String8List str8_split__arena (Arena* arena, String8 string, U8* split_chars, U64 split_char_count, StringSplitFlags flags) { return str8_split__ainfo (arena_allocator(arena), string, split_chars, split_char_count, flags); } force_inline String8List str8_split_by_string_chars__arena (Arena* arena, String8 string, String8 split_chars, StringSplitFlags flags) { return str8_split_by_string_chars__ainfo (arena_allocator(arena), string, split_chars, flags); } @@ -785,8 +785,8 @@ str8_list_from_flags__ainfo(AllocatorInfo ainfo, String8List* list, U32 flags, S //////////////////////////////// //~ rjf; String Arrays -#define str8_array_from_list(allocator, list) _Generic(allocator, Arena*: str8_array_from_list__arena, AllocatorInfo: str8_array_from_list__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list) -#define str8_array_reserve(allocator, count) _Generic(allocaotr, Arena*: str8_array_reserve__arena AllocatorInfo: str8_array_reserve__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, count) +#define str8_array_from_list(allocator, list) _Generic(allocator, Arena*: str8_array_from_list__arena, AllocatorInfo: str8_array_from_list__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list) +#define str8_array_reserve(allocator, count) _Generic(allocaotr, Arena*: str8_array_reserve__arena AllocatorInfo: str8_array_reserve__ainfo, default: assert_generic_sel_fail) generic_call(allocator, count) inline String8Array str8_array_from_list__ainfo(AllocatorInfo ainfo, String8List* list) { @@ -822,14 +822,14 @@ MD_API String8 str8_skip_last_dot (String8 string); force_inline String8List str8_split_path__arena(Arena* arena, String8 string) { String8List result = str8_split(arena, string, (U8*)"/\\", 2, 0); return(result); } force_inline String8List str8_split_path__ainfo(AllocatorInfo ainfo, String8 string) { String8List result = str8_split(ainfo, string, (U8*)"/\\", 2, 0); return(result); } -#define str8_split_path(allocator, string) _Generic(allocator, Arena*: str8_split_path__arena, AllocatorInfo: str8_split_path__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string) +#define str8_split_path(allocator, string) _Generic(allocator, Arena*: str8_split_path__arena, AllocatorInfo: str8_split_path__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string) MD_API PathStyle path_style_from_str8 (String8 string); MD_API void str8_path_list_resolve_dots_in_place( String8List* path, PathStyle style); MD_API String8 str8_path_list_join_by_style__arena (Arena* arena, String8List* path, PathStyle style); MD_API String8 str8_path_list_join_by_style__ainfo (AllocatorInfo ainfo, String8List* path, PathStyle style); -#define str8_path_list_join_by_style(allocator, path, style) _Generic(allocator, Arena*: str8_path_list_join_by_style__arena, AllocatorInfo: str8_split_path__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, path, style) +#define str8_path_list_join_by_style(allocator, path, style) _Generic(allocator, Arena*: str8_path_list_join_by_style__arena, AllocatorInfo: str8_split_path__ainfo, default: assert_generic_sel_fail) generic_call(allocator, path, style) force_inline String8 str8_path_list_join_by_style__arena(Arena* arena, String8List* path, PathStyle style) { return str8_path_list_join_by_style__ainfo(arena_allocator(arena), path, style); } @@ -870,10 +870,10 @@ inline U32 utf8_from_utf32_single(U8* buffer, U32 character){ return(utf8_encode //////////////////////////////// //~ rjf: Unicode String Conversions -#define str8_from_str16(allocator, string_in) _Generic(allocator, Arena*: str8_from_str16__arena, AllocatorInfo: str8_from_str16__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string_in) -#define str16_from_str8(allocator, string_in) _Generic(allocator, Arena*: str16_from_str8__arena, AllocatorInfo: str16_from_str8__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string_in) -#define str8_from_str32(allocator, string_in) _Generic(allocator, Arena*: str8_from_str32__arena, AllocatorInfo: str8_from_str32__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string_in) -#define str32_from_str8(allocator, string_in) _Generic(allocator, Arena*: str32_from_str8__arena, AllocatorInfo: str32_from_str8__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string_in) +#define str8_from_str16(allocator, string_in) _Generic(allocator, Arena*: str8_from_str16__arena, AllocatorInfo: str8_from_str16__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string_in) +#define str16_from_str8(allocator, string_in) _Generic(allocator, Arena*: str16_from_str8__arena, AllocatorInfo: str16_from_str8__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string_in) +#define str8_from_str32(allocator, string_in) _Generic(allocator, Arena*: str8_from_str32__arena, AllocatorInfo: str8_from_str32__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string_in) +#define str32_from_str8(allocator, string_in) _Generic(allocator, Arena*: str32_from_str8__arena, AllocatorInfo: str32_from_str8__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string_in) MD_API String8 str8_from_str16__arena(Arena* arena, String16 in); MD_API String16 str16_from_str8__arena(Arena* arena, String8 in); @@ -1011,9 +1011,9 @@ MD_API String8 date_time_string__ainfo (AllocatorInfo ainfo, DateTime* MD_API String8 file_name_date_time_string__ainfo(AllocatorInfo ainfo, DateTime* date_time); MD_API String8 string_from_elapsed_time__ainfo (AllocatorInfo ainfo, DateTime date_time); -#define date_time_string(allocator, date_time) _Generic(allocator, Arena*: date_time_string__arena, AllocatorInfo: date_time_string__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, date_time) -#define file_name_date_time_string(allocator, date_time) _Generic(allocator, Arena*: file_name_date_time_string__arena, AllocatorInfo: file_name_date_time_string__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, date_time) -#define string_from_elapsed_time(allocator, date_time) _Generic(allocator, Arena*: string_from_elapsed_time__arena, AllocatorInfo: string_from_elapsed_time__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, date_time) +#define date_time_string(allocator, date_time) _Generic(allocator, Arena*: date_time_string__arena, AllocatorInfo: date_time_string__ainfo, default: assert_generic_sel_fail) generic_call(allocator, date_time) +#define file_name_date_time_string(allocator, date_time) _Generic(allocator, Arena*: file_name_date_time_string__arena, AllocatorInfo: file_name_date_time_string__ainfo, default: assert_generic_sel_fail) generic_call(allocator, date_time) +#define string_from_elapsed_time(allocator, date_time) _Generic(allocator, Arena*: string_from_elapsed_time__arena, AllocatorInfo: string_from_elapsed_time__ainfo, default: assert_generic_sel_fail) generic_call(allocator, date_time) force_inline String8 push_date_time_string__arena (Arena* arena, DateTime* date_time) { return date_time_string__ainfo (arena_allocator(arena), date_time); } force_inline String8 push_file_name_date_time_string__arena(Arena* arena, DateTime* date_time) { return file_name_date_time_string__ainfo(arena_allocator(arena), date_time); } @@ -1060,7 +1060,7 @@ string_from_guid__ainfo(AllocatorInfo ainfo, Guid guid) { return result; } -#define string_from_guid(allocator, guid) _Generic(allocator, Arena*: string_from_guid__arena, AllocatorInfo: string_from_guid__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, guid) +#define string_from_guid(allocator, guid) _Generic(allocator, Arena*: string_from_guid__arena, AllocatorInfo: string_from_guid__ainfo, default: assert_generic_sel_fail) generic_call(allocator, guid) inline Guid guid_from_string(String8 string) { Guid guid = {0}; try_guid_from_string(string, &guid); return guid; } @@ -1072,7 +1072,7 @@ MD_API B32 try_guid_from_string(String8 string, Guid* guid_out); String8 indented_from_string__arena(Arena* arena, String8 string); MD_API String8 indented_from_string__ainfo(AllocatorInfo arena, String8 string); -#define indented_from_string(allocator, string) _Generic(allocator, Arena*: indented_from_string__arena, AllocatorInfo: indented_from_string__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string) +#define indented_from_string(allocator, string) _Generic(allocator, Arena*: indented_from_string__arena, AllocatorInfo: indented_from_string__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string) force_inline String8 indented_from_string__arena(Arena* arena, String8 string) { return indented_from_string__ainfo(arena_allocator(arena), string); } @@ -1084,8 +1084,8 @@ MD_API String8 escaped_from_raw_str8__ainfo(AllocatorInfo ainfo, String8 string) String8 raw_from_escaped_str8__arena(Arena* arena, String8 string); MD_API String8 raw_from_escaped_str8__ainfo(AllocatorInfo ainfo, String8 string); -#define escaped_from_raw_str8(allocator, string) _Generic(allocator, Arena*: escaped_from_raw_str8__arena, AllocatorInfo: escaped_from_raw_str8__ainfo(, default): assert_generic_selection_fail) resolved_function_call(allocator, string) -#define raw_from_escaped_str8(allocator, string) _Generic(allocator, Arena*: raw_from_escaped_str8__arena, AllocatorInfo: raw_from_escaped_str8__ainfo(, default): assert_generic_selection_fail) resolved_function_call(allocator, string) +#define escaped_from_raw_str8(allocator, string) _Generic(allocator, Arena*: escaped_from_raw_str8__arena, AllocatorInfo: escaped_from_raw_str8__ainfo(, default): assert_generic_sel_fail) generic_call(allocator, string) +#define raw_from_escaped_str8(allocator, string) _Generic(allocator, Arena*: raw_from_escaped_str8__arena, AllocatorInfo: raw_from_escaped_str8__ainfo(, default): assert_generic_sel_fail) generic_call(allocator, string) force_inline String8 escaped_from_raw_str8__arena(Arena* arena, String8 string) { return escaped_from_raw_str8__ainfo(arena_allocator(arena), string); } force_inline String8 raw_from_escaped_str8__arena(Arena* arena, String8 string) { return raw_from_escaped_str8__ainfo(arena_allocator(arena), string); } @@ -1097,7 +1097,7 @@ force_inline String8 raw_from_escaped_str8__arena(Arena* arena, String8 string) MD_API String8List wrapped_lines_from_string__ainfo(AllocatorInfo ainfo, String8 string, U64 first_line_max_width, U64 max_width, U64 wrap_indent); #define wrapped_lines_from_string(allocator, string, first_line_max_width, max_width, wrap_indent) \ -_Generic(allocator, Arena*: wrapped_lines_from_string__arena, AllocatorInfo: wrapped_lines_from_string__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string, first_line_max_width, max_width, wrap_indent) +_Generic(allocator, Arena*: wrapped_lines_from_string__arena, AllocatorInfo: wrapped_lines_from_string__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string, first_line_max_width, max_width, wrap_indent) force_inline String8List wrapped_lines_from_string__arena(Arena* arena, String8 string, U64 first_line_max_width, U64 max_width, U64 wrap_indent) { return wrapped_lines_from_string__ainfo(arena_allocator(arena), string, first_line_max_width, max_width, wrap_indent); } @@ -1107,7 +1107,7 @@ force_inline String8List wrapped_lines_from_string__arena(Arena* arena, String8 inline String8 hex_string_from_rgba_4f32__arena(Arena* arena, Vec4F32 rgba) { String8 hex_string = str8f(arena, "%02x%02x%02x%02x", (U8)(rgba.x * 255.f), (U8)(rgba.y * 255.f), (U8)(rgba.z * 255.f), (U8)(rgba.w * 255.f)); return hex_string; } inline String8 hex_string_from_rgba_4f32__ainfo(AllocatorInfo ainfo, Vec4F32 rgba) { String8 hex_string = str8f(ainfo, "%02x%02x%02x%02x", (U8)(rgba.x * 255.f), (U8)(rgba.y * 255.f), (U8)(rgba.z * 255.f), (U8)(rgba.w * 255.f)); return hex_string; } -#define hex_string_from_rgba_4f32(allocator, rgba) _Generic(allocator, Arena*: hex_string_from_rgba_4f32__arena, AllocatorInfo: hex_string_from_rgba_4f32__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, rgba) +#define hex_string_from_rgba_4f32(allocator, rgba) _Generic(allocator, Arena*: hex_string_from_rgba_4f32__arena, AllocatorInfo: hex_string_from_rgba_4f32__ainfo, default: assert_generic_sel_fail) generic_call(allocator, rgba) MD_API Vec4F32 rgba_from_hex_string_4f32(String8 hex_string); @@ -1119,8 +1119,8 @@ MD_API FuzzyMatchRangeList fuzzy_match_find__ainfo (AllocatorInfo ainf FuzzyMatchRangeList fuzzy_match_range_list_copy__arena(Arena* arena, FuzzyMatchRangeList* src); MD_API FuzzyMatchRangeList fuzzy_match_range_list_copy__ainfo(AllocatorInfo ainfo, FuzzyMatchRangeList* src); -#define fuzzy_match_find(allocator, needle, haystack) _Generic(allocator, Arena*: fuzzy_match_find__arena, AllocatorInfo: fuzzy_match_find__ainfo) resolved_function_call(allocator, needle, haystack) -#define fuzzy_match_range_list_copy(allocator, src) _Generic(allocator, Arena*: fuzzy_match_range_list_copy__arena, AllocatorInfo: fuzzy_match_range_list_copy__ainfo) resolved_function_call(allocator, src) +#define fuzzy_match_find(allocator, needle, haystack) _Generic(allocator, Arena*: fuzzy_match_find__arena, AllocatorInfo: fuzzy_match_find__ainfo) generic_call(allocator, needle, haystack) +#define fuzzy_match_range_list_copy(allocator, src) _Generic(allocator, Arena*: fuzzy_match_range_list_copy__arena, AllocatorInfo: fuzzy_match_range_list_copy__ainfo) generic_call(allocator, src) force_inline FuzzyMatchRangeList fuzzy_match_find__arena (Arena *arena, String8 needle, String8 haystack) { return fuzzy_match_find__ainfo (arena_allocator(arena), needle, haystack); } force_inline FuzzyMatchRangeList fuzzy_match_range_list_copy__arena(Arena* arena, FuzzyMatchRangeList* src) { return fuzzy_match_range_list_copy__ainfo(arena_allocator(arena), src); } @@ -1168,18 +1168,18 @@ MD_API void str8_serial_push_u32__ainfo (AllocatorInfo ainfo, String8Lis void str8_serial_push_cstr__ainfo (AllocatorInfo ainfo, String8List* srl, String8 str); void str8_serial_push_string__ainfo (AllocatorInfo ainfo, String8List* srl, String8 str); -#define str8_serial_begin(allocator, srl) _Generic(allocator, Arena*: str8_serial_begin__arena, AllocatorInfo: str8_serial_begin__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl) -#define str8_serial_end(allocator, srl) _Generic(allocator, Arena*: str8_serial_end__arena, AllocatorInfo: str8_serial_end__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl) -#define str8_serial_push_align(allocator, srl, align) _Generic(allocator, Arena*: str8_serial_push_align__arena, AllocatorInfo: str8_serial_push_align__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, align) -#define str8_serial_push_size(allocator, srl, size) _Generic(allocator, Arena*: str8_serial_push_size__arena, AllocatorInfo: str8_serial_push_size__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, size) -#define str8_serial_push_data(allocator, srl, data, usize) _Generic(allocator, Arena*: str8_serial_push_data__arena, AllocatorInfo: str8_serial_push_data__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, data, usize) -#define str8_serial_push_data_list(allocator, srl, first) _Generic(allocator, Arena*: str8_serial_push_data_list__arena, AllocatorInfo: str8_serial_push_data_list__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, first) -#define str8_serial_push_u64(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u64__arena, AllocatorInfo: str8_serial_push_u64__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, x) -#define str8_serial_push_u32(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u32__arena, AllocatorInfo: str8_serial_push_u32__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, x) -#define str8_serial_push_u16(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u16__arena, AllocatorInfo: str8_serial_push_u16__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, x) -#define str8_serial_push_u8(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u8__arena, AllocatorInfo: str8_serial_push_u8__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, x) -#define str8_serial_push_cstr(allocator, srl, str) _Generic(allocator, Arena*: str8_serial_push_cstr__arena, AllocatorInfo: str8_serial_push_cstr__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, str) -#define str8_serial_push_string(allocator, slr, str) _Generic(allocator, Arena*: str8_serial_push_string__arena, AllocatorInfo: str8_serial_push_string__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, srl, str) +#define str8_serial_begin(allocator, srl) _Generic(allocator, Arena*: str8_serial_begin__arena, AllocatorInfo: str8_serial_begin__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl) +#define str8_serial_end(allocator, srl) _Generic(allocator, Arena*: str8_serial_end__arena, AllocatorInfo: str8_serial_end__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl) +#define str8_serial_push_align(allocator, srl, align) _Generic(allocator, Arena*: str8_serial_push_align__arena, AllocatorInfo: str8_serial_push_align__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, align) +#define str8_serial_push_size(allocator, srl, size) _Generic(allocator, Arena*: str8_serial_push_size__arena, AllocatorInfo: str8_serial_push_size__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, size) +#define str8_serial_push_data(allocator, srl, data, usize) _Generic(allocator, Arena*: str8_serial_push_data__arena, AllocatorInfo: str8_serial_push_data__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, data, usize) +#define str8_serial_push_data_list(allocator, srl, first) _Generic(allocator, Arena*: str8_serial_push_data_list__arena, AllocatorInfo: str8_serial_push_data_list__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, first) +#define str8_serial_push_u64(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u64__arena, AllocatorInfo: str8_serial_push_u64__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, x) +#define str8_serial_push_u32(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u32__arena, AllocatorInfo: str8_serial_push_u32__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, x) +#define str8_serial_push_u16(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u16__arena, AllocatorInfo: str8_serial_push_u16__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, x) +#define str8_serial_push_u8(allocator, srl, x) _Generic(allocator, Arena*: str8_serial_push_u8__arena, AllocatorInfo: str8_serial_push_u8__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, x) +#define str8_serial_push_cstr(allocator, srl, str) _Generic(allocator, Arena*: str8_serial_push_cstr__arena, AllocatorInfo: str8_serial_push_cstr__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, str) +#define str8_serial_push_string(allocator, slr, str) _Generic(allocator, Arena*: str8_serial_push_string__arena, AllocatorInfo: str8_serial_push_string__ainfo, default: assert_generic_sel_fail) generic_call(allocator, srl, str) force_inline U64 str8_serial_push_align__arena(Arena* arena, String8List* srl, U64 align) { return str8_serial_push_align__ainfo(arena_allocator(arena), srl, align); } force_inline void* str8_serial_push_size__arena (Arena* arena, String8List* srl, U64 size) { return str8_serial_push_size__ainfo (arena_allocator(arena), srl, size); } @@ -1270,18 +1270,19 @@ inline U64 str8_deserial_read_block (String8 string, U64 off, U64 size, String //////////////////////////////// // Second-order Generic Selectors -#define str8_from(allocator, in) \ -_Generic(in, \ - String16 : _Generic(allocator, Arena*: str8_from_str16__arena, AllocatorInfo: str8_from_str16__ainfo, default: assert_generic_selection_fail), \ - String32 : _Generic(allocator, Arena*: str8_from_str32__arena, AllocatorInfo: str8_from_str32__ainfo, default: assert_generic_selection_fail), \ - distinct_lookup(U64) : _Generic(allocator, Arena*: str8_from_u64__arena, AllocatorInfo: str8_from_s64__ainfo, default: assert_generic_selection_fail), \ - distinct_lookup(S64) : _Generic(allocator, Arena*: str8_from_s64__arena, AllocatorInfo: str8_from_s64__ainfo, default: assert_generic_selection_fail), \ - distinct_lookup(SSIZE): _Generic(allocator, Arena*: str8_from_memory_size__arena, AllocatorInfo: str8_from_memory_size__ainfo, default: assert_generic_selection_fail), \ - default : assert_generic_selection_fail \ -) resolved_function_call(allocator, in) +#define str8_from(allocator, in) \ +_Generic((in), \ + SSIZE : _Generic(allocator, Arena*: str8_from_memory_size__arena, AllocatorInfo: str8_from_memory_size__ainfo, default: assert_generic_sel_fail), \ +_Generic_L2((in), \ + String16: _Generic(allocator, Arena*: str8_from_str16__arena, AllocatorInfo: str8_from_str16__ainfo, default: assert_generic_sel_fail), \ + String32: _Generic(allocator, Arena*: str8_from_str32__arena, AllocatorInfo: str8_from_str32__ainfo, default: assert_generic_sel_fail), \ + U64 : _Generic(allocator, Arena*: str8_from_u64__arena, AllocatorInfo: str8_from_u64__ainfo, default: assert_generic_sel_fail), \ + S64 : _Generic(allocator, Arena*: str8_from_s64__arena, AllocatorInfo: str8_from_s64__ainfo, default: assert_generic_sel_fail), \ + default : assert_generic_sel_fail) \ +) generic_call(allocator, in) -#define str16_from(allocator, in) \ -_Generic(in, \ - String8: _Generic(allocator, Arena*: str16_from_str8__arena, AllocatorInfo: str16_from_str8__ainfo, default: assert_generic_selection_fail), \ - default: assert_generic_selection_fail \ -) resolved_function_call(allocator, in) +#define str16_from(allocator, in) \ +_Generic(in, \ + String8: _Generic(allocator, Arena*: str16_from_str8__arena, AllocatorInfo: str16_from_str8__ainfo, default: assert_generic_sel_fail), \ + default: assert_generic_sel_fail \ +) generic_call(allocator, in) diff --git a/code/base/thread_context.h b/code/base/thread_context.h index 6b963d8..771469c 100644 --- a/code/base/thread_context.h +++ b/code/base/thread_context.h @@ -55,8 +55,8 @@ _Generic(conflicts, \ int : scratch_begin__arena, \ Arena** : scratch_begin__arena, \ AllocatorInfo: scratch_begin__ainfo, \ - default : assert_generic_selection_fail \ -) resolved_function_call(conflicts, (Opt_ScratchBegin){__VA_ARGS__}) + default : assert_generic_sel_fail \ +) generic_call(conflicts, (Opt_ScratchBegin){__VA_ARGS__}) #define scratch_end(scratch) temp_end(scratch) diff --git a/code/mdesk/mdesk.h b/code/mdesk/mdesk.h index 05d921a..2759bc1 100644 --- a/code/mdesk/mdesk.h +++ b/code/mdesk/mdesk.h @@ -281,8 +281,8 @@ MD_API void msg_list_push__ainfo (AllocatorInfo ainfo, MsgList* msgs, Node* node void msg_list_pushf__arena(Arena* arena, MsgList* msgs, Node* node, MsgKind kind, char *fmt, ...); void msg_list_pushf__ainfo(AllocatorInfo ainfo, MsgList* msgs, Node* node, MsgKind kind, char *fmt, ...); -#define msg_list_push(allocator, msgs, node, kind, string) _Generic(allocator, Arena*: msg_list_push__arena, AllocatorInfo: msg_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, msgs, node, kind, string) -#define msg_list_pushf(allocator, msgs, node, kind, string, fmt, ...) _Generic(allocator, Arena*: msg_list_pushf__arena, AllocatorInfo: msg_list_pushf__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, msgs, node, kind, fmt, __VA_ARGS__) +#define msg_list_push(allocator, msgs, node, kind, string) _Generic(allocator, Arena*: msg_list_push__arena, AllocatorInfo: msg_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, msgs, node, kind, string) +#define msg_list_pushf(allocator, msgs, node, kind, string, fmt, ...) _Generic(allocator, Arena*: msg_list_pushf__arena, AllocatorInfo: msg_list_pushf__ainfo, default: assert_generic_sel_fail) generic_call(allocator, msgs, node, kind, fmt, __VA_ARGS__) MD_API void msg_list_concat_in_place(MsgList* dst, MsgList* to_push); @@ -321,9 +321,9 @@ MD_API void token_chunk_list_push__ainfo (AllocatorInfo ainfo, Toke MD_API TokenArray token_array_from_chunk_list__arena (Arena* arena, TokenChunkList* chunks); MD_API TokenArray token_array_from_chunk_list__ainfo (AllocatorInfo ainfo, TokenChunkList* chunks); -#define string_list_from_token_flags(allocator, flags) _Generic(allocator, Arena*: string_list_from_token_flags__arena, AllocatorInfo: string_list_from_token_flags__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, flags) -#define token_chunk_list_push(allocator, list, cap, token) _Generic(allocator, Arena*: token_chunk_list_push__arena, AllocatorInfo: token_chunk_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list, cap, token) -#define token_array_from_chunk_list(allocator, chunks) _Generic(allocator, Arena*: token_array_from_chunk_list__arena, AllocatorInfo: token_array_from_chunk_list__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, chunks) +#define string_list_from_token_flags(allocator, flags) _Generic(allocator, Arena*: string_list_from_token_flags__arena, AllocatorInfo: string_list_from_token_flags__ainfo, default: assert_generic_sel_fail) generic_call(allocator, flags) +#define token_chunk_list_push(allocator, list, cap, token) _Generic(allocator, Arena*: token_chunk_list_push__arena, AllocatorInfo: token_chunk_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list, cap, token) +#define token_array_from_chunk_list(allocator, chunks) _Generic(allocator, Arena*: token_array_from_chunk_list__arena, AllocatorInfo: token_array_from_chunk_list__ainfo, default: assert_generic_sel_fail) generic_call(allocator, chunks) force_inline String8List string_list_from_token_flags__arena(Arena* arena, TokenFlags flags) { return string_list_from_token_flags__ainfo(arena_allocator(arena), flags); } force_inline void token_chunk_list_push__arena (Arena* arena, TokenChunkList* list, U64 cap, Token token) { token_chunk_list_push__ainfo(arena_allocator(arena), list, cap, token); } @@ -380,7 +380,7 @@ MD_API NodeRec node_rec_depth_first(Node* node, Node* subtree_root, U64 child_of Node* push_node__arena(Arena* arena, NodeKind kind, NodeFlags flags, String8 string, String8 raw_string, U64 src_offset); Node* push_node__ainfo(AllocatorInfo ainfo, NodeKind kind, NodeFlags flags, String8 string, String8 raw_string, U64 src_offset); -#define push_node(allocator, kind, flags, string, raw_string, src_offset) _Generic(allocator, Arena*: push_node__arena, AllocatorInfo: push_node__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, kind, flags, string, raw_string, src_offset) +#define push_node(allocator, kind, flags, string, raw_string, src_offset) _Generic(allocator, Arena*: push_node__arena, AllocatorInfo: push_node__ainfo, default: assert_generic_sel_fail) generic_call(allocator, kind, flags, string, raw_string, src_offset) void node_insert_tag (Node* parent, Node* prev_child, Node* node); void node_insert_child(Node* parent, Node* prev_child, Node* node); @@ -449,7 +449,7 @@ U64 tag_count_from_node (Node* node); MD_API String8 string_from_children__arena(Arena* arena, Node* root); String8 string_from_children__ainfo(AllocatorInfo ainfo, Node* root); -#define string_from_children(allocator, root) _Generic(allocator, Arena*: string_from_children__arena, AllocatorInfo: string_from_children__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, root) +#define string_from_children(allocator, root) _Generic(allocator, Arena*: string_from_children__arena, AllocatorInfo: string_from_children__ainfo, default: assert_generic_sel_fail) generic_call(allocator, root) force_inline String8 string_from_children__arena(Arena* arena, Node* root) { return string_from_children__ainfo(arena_allocator(arena), root); } @@ -561,7 +561,7 @@ MD_API B32 node_match(Node* a, Node* b, StringMatchFlags flags); MD_API Node* tree_copy__arena(Arena* arena, Node* src_root); MD_API Node* tree_copy__ainfo(AllocatorInfo ainfo, Node* src_root); -#define tree_copy(allocator, src_root) _Generic(allocator, Arena*: tree_copy__arena, AllocatorInfo: tree_copy__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, src_root) +#define tree_copy(allocator, src_root) _Generic(allocator, Arena*: tree_copy__arena, AllocatorInfo: tree_copy__ainfo, default: assert_generic_sel_fail) generic_call(allocator, src_root) force_inline Node* tree_copy__arena(Arena* arena, Node* src_root) { return tree_copy__ainfo(arena_allocator(arena), src_root); } @@ -571,7 +571,7 @@ force_inline Node* tree_copy__arena(Arena* arena, Node* src_root) { return tree_ MD_API TokenizeResult tokenize_from_text__arena(Arena* arena, String8 text); MD_API TokenizeResult tokenize_from_text__ainfo(AllocatorInfo ainfo, String8 text); -#define tokenize_from_text(allocator, text) _Generic(allocator, Arena*: tokenize_from_text__arena, AllocatorInfo: tokenize_from_text__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, text) +#define tokenize_from_text(allocator, text) _Generic(allocator, Arena*: tokenize_from_text__arena, AllocatorInfo: tokenize_from_text__ainfo, default: assert_generic_sel_fail) generic_call(allocator, text) force_inline TokenizeResult tokenize_from_text__arena(Arena* arena, String8 text) { return tokenize_from_text__ainfo(arena_allocator(arena), text); } @@ -581,7 +581,7 @@ force_inline TokenizeResult tokenize_from_text__arena(Arena* arena, String8 text MD_API ParseResult parse_from_text_tokens__arena(Arena* arena, String8 filename, String8 text, TokenArray tokens); MD_API ParseResult parse_from_text_tokens__ainfo(AllocatorInfo ainfo, String8 filename, String8 text, TokenArray tokens); -#define parse_from_text_tokens(allocator, filename, text, tokens) _Generic(allocator, Arena*: parse_from_text_tokens__arena, AllocatorInfo: parse_from_text_tokens__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, filename, text, tokens) +#define parse_from_text_tokens(allocator, filename, text, tokens) _Generic(allocator, Arena*: parse_from_text_tokens__arena, AllocatorInfo: parse_from_text_tokens__ainfo, default: assert_generic_sel_fail) generic_call(allocator, filename, text, tokens) force_inline ParseResult parse_from_text_tokens__arena(Arena* arena, String8 filename, String8 text, TokenArray tokens) { return parse_from_text_tokens__ainfo(arena_allocator(arena), filename, text, tokens); } @@ -592,7 +592,7 @@ force_inline ParseResult parse_from_text_tokens__arena(Arena* arena, String8 fil MD_API ParseResult parse_from_text__arena(Arena* arena, String8 filename, String8 text); MD_API ParseResult parse_from_text__ainfo(AllocatorInfo ainfo, String8 filename, String8 text); -#define parse_from_text(allocator, filename, text) _Generic(allocator, Arena*: parse_from_text__arena, AllocatorInfo: parse_from_text__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, filename, text) +#define parse_from_text(allocator, filename, text) _Generic(allocator, Arena*: parse_from_text__arena, AllocatorInfo: parse_from_text__ainfo, default: assert_generic_sel_fail) generic_call(allocator, filename, text) #define tree_from_string(allocator, string) (parse_from_text((allocator), str8_zero(), (string)).root) force_inline ParseResult parse_from_text__arena(Arena* arena, String8 filename, String8 text) { return parse_from_text__ainfo(arena_allocator(arena), filename, text); } @@ -603,6 +603,6 @@ force_inline ParseResult parse_from_text__arena(Arena* arena, String8 filename, MD_API String8List debug_string_list_from_tree__arena(Arena* arena, Node* root); MD_API String8List debug_string_list_from_tree__ainfo(AllocatorInfo ainfo, Node* root); -#define debug_string_list_from_tree(allocator, string) _Generic(allocator, Arena*: debug_string_list_from_tree__arena, AllocatorInfo: debug_string_list_from_tree__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, string) +#define debug_string_list_from_tree(allocator, string) _Generic(allocator, Arena*: debug_string_list_from_tree__arena, AllocatorInfo: debug_string_list_from_tree__ainfo, default: assert_generic_sel_fail) generic_call(allocator, string) force_inline String8List debug_string_list_from_tree__arena(Arena* arena, Node* root) { return debug_string_list_from_tree__ainfo(arena_allocator(arena), root); } diff --git a/code/os/os.h b/code/os/os.h index 38280fe..902410b 100644 --- a/code/os/os.h +++ b/code/os/os.h @@ -156,8 +156,8 @@ void os_handle_list_push__ainfo (AllocatorInfo ainfo, OS_HandleLi OS_HandleArray os_handle_array_from_list__arena(Arena* arena, OS_HandleList* list); OS_HandleArray os_handle_array_from_list__ainfo(AllocatorInfo ainfo, OS_HandleList* list); -#define os_handle_ist_push(arena, handles, handle) _Generic(allocator, Arena*: os_handle_list_push__arena, AllocatorInfo: os_handle_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, handles, handle) -#define os_handle_array_from_list(allocator, list) _Generic(allocator, Arena*: os_handle_array_from_list__arena, AllocatorInfo: os_handle_list_push__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, list) +#define os_handle_ist_push(arena, handles, handle) _Generic(allocator, Arena*: os_handle_list_push__arena, AllocatorInfo: os_handle_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, handles, handle) +#define os_handle_array_from_list(allocator, list) _Generic(allocator, Arena*: os_handle_array_from_list__arena, AllocatorInfo: os_handle_list_push__ainfo, default: assert_generic_sel_fail) generic_call(allocator, list) force_inline void os_handle_list_push__arena (Arena* arena, OS_HandleList* handles, OS_Handle handle) { os_handle_list__push_ainfo (arena_allocator(arena), handles, handle); } force_inline OS_HandleArray os_handle_array_from_list__arena(Arena* arena, OS_HandleList* list) { return os_handle_array_from_list__ainfo(arena_allocator(arena), list); } @@ -199,7 +199,7 @@ os_string_list_from_argcv__ainfo(AllocatorInfo ainfo, int argc, char** argv) { return result; } -#define os_string_list_from_argcv(allocator, argc, argv) _Generic(allocator, Arena*: os_string_list_from_argcv__arena, AllocatorInfo: os_string_list_from_argcv__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, argc, argv) +#define os_string_list_from_argcv(allocator, argc, argv) _Generic(allocator, Arena*: os_string_list_from_argcv__arena, AllocatorInfo: os_string_list_from_argcv__ainfo, default: assert_generic_sel_fail) generic_call(allocator, argc, argv) force_inline String8List os_string_list_from_argcv__arena(Arena* arena, int argc, char** argv) { return os_string_list_from_argcv__ainfo(arena_allocator(arena), argc, argv); } @@ -221,7 +221,7 @@ MD_API FileProperties os_properties_from_file_path (String8 path); MD_API String8 os_full_path_from_path__arena(Arena* arena, String8 path); MD_API String8 os_full_path_from_path__ainfo(AllocatorInfo arena, String8 path); -#define os_full_path_from_path(allocator, path) _Generic(allocator, Arena*: os_full_path_from_path__arena, AllocatorInfo: os_full_path_from_path__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, path) +#define os_full_path_from_path(allocator, path) _Generic(allocator, Arena*: os_full_path_from_path__arena, AllocatorInfo: os_full_path_from_path__ainfo, default: assert_generic_sel_fail) generic_call(allocator, path) force_inline String8 os_full_path_from_path__arena(Arena* arena, String8 path) { return os_full_path_from_path__ainfo(arena_allocator(arena), path); } @@ -238,8 +238,8 @@ MD_API OS_FileIter* os_file_iter_begin__ainfo(AllocatorInfo ainfo, String8 MD_API B32 os_file_iter_next__ainfo (AllocatorInfo arena, OS_FileIter* iter, OS_FileInfo* info_out); MD_API void os_file_iter_end ( OS_FileIter* iter); -#define os_file_iter_begin(allocator, path, flags) _Generic(allocator, Arena*: os_file_iter_begin__arena, AllocatorInfo: os_file_iter_begin__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, path) -#define os_file_iter_next(allocator, iter, info_out) _Generic(allocator, Arena*: os_file_iter_next__arena, AllocatorInfo: os_file_iter_next__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, path) +#define os_file_iter_begin(allocator, path, flags) _Generic(allocator, Arena*: os_file_iter_begin__arena, AllocatorInfo: os_file_iter_begin__ainfo, default: assert_generic_sel_fail) generic_call(allocator, path) +#define os_file_iter_next(allocator, iter, info_out) _Generic(allocator, Arena*: os_file_iter_next__arena, AllocatorInfo: os_file_iter_next__ainfo, default: assert_generic_sel_fail) generic_call(allocator, path) force_inline OS_FileIter* os_file_iter_begin__arena(Arena* arena, String8 path, OS_FileIterFlags flags) { reutrn (); } force_inline B32 os_file_iter_next__arena (Arena* arena, OS_FileIter* iter, OS_FileInfo* info_out) { reutrn (); } @@ -261,8 +261,8 @@ MD_API B32 os_append_data_to_file_path (String8 path, String8 data) MD_API String8 os_string_from_file_range__arena(Arena* arena, OS_Handle file, Rng1U64 range); MD_API String8 os_string_from_file_range__ainfo(AllocatorInfo ainfo, OS_Handle file, Rng1U64 range); -#define os_data_from_file_path(allocator, path) _Generic(allocator, Arena*: os_data_from_file_path__arena, AllocatorInfo: os_data_from_file_path__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, path) -#define os_string_from_file_range(allocator, file, range) _Generic(allocator, Arena*: os_string_from_file_range__arena, AllocatorInfo: os_string_from_file_range__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, file, range) +#define os_data_from_file_path(allocator, path) _Generic(allocator, Arena*: os_data_from_file_path__arena, AllocatorInfo: os_data_from_file_path__ainfo, default: assert_generic_sel_fail) generic_call(allocator, path) +#define os_string_from_file_range(allocator, file, range) _Generic(allocator, Arena*: os_string_from_file_range__arena, AllocatorInfo: os_string_from_file_range__ainfo, default: assert_generic_sel_fail) generic_call(allocator, file, range) force_inline String8 os_data_from_file_path__arena(Arena* arena, String8 path) { return os_data_from_file_path__ainfo(arena_allocator(arena), path); } @@ -292,7 +292,7 @@ inline S64 os_file_id_compare(OS_FileID a, OS_FileID b) { S64 cmp = memory_compa String8 os_string_from_guid__arena(Arena* arena, OS_Guid guid); String8 os_string_from_guid__ainfo(AllocatorInfo ainfo, OS_Guid guid); -#define os_string_from_guid(allocator, guid) _Generic(allocator, Arena*: os_string_from_guid__arena, AllocatorInfo: os_string_from_guid__ainfo, default: assert_generic_selection_fail) resolved_function_call(allocator, guid) +#define os_string_from_guid(allocator, guid) _Generic(allocator, Arena*: os_string_from_guid__arena, AllocatorInfo: os_string_from_guid__ainfo, default: assert_generic_sel_fail) generic_call(allocator, guid) force_inline String8 os_string_from_guid__arena(Arena* arena, OS_Guid guid) { os_string_from_guid__ainfo(arena_allocator(arena), guid); } @@ -325,7 +325,7 @@ MD_API OS_ProcessInfo* os_get_process_info(void); String8 os_get_current_path__arena(Arena* arena); String8 os_get_current_path__ainfo(AllocatorInfo arena); -#define os_get_current_path(allocator) _Generic(allocator, Arena*: os_get_current_path__arena, AllocatorInfo: os_get_current_path__ainfo) resolved_function_call(allocator) +#define os_get_current_path(allocator) _Generic(allocator, Arena*: os_get_current_path__arena, AllocatorInfo: os_get_current_path__ainfo) generic_call(allocator) force_inline String8 os_get_current_path__arena(Arena* arena) { return os_get_current_path__ainfo(arena_allocator(arena)); } diff --git a/code/os/os_resolve.h b/code/os/os_resolve.h index 0db1088..96b5566 100644 --- a/code/os/os_resolve.h +++ b/code/os/os_resolve.h @@ -1,4 +1,4 @@ -ifdef INTELLISENSE_DIRECTIVES +#ifdef INTELLISENSE_DIRECTIVES # include "base/context_cracking.h" # include "base/namespace.h" #endif diff --git a/gen_c11/c11.refactor b/gen_c11/c11.refactor index dc41d97..f65ef49 100644 --- a/gen_c11/c11.refactor +++ b/gen_c11/c11.refactor @@ -83,12 +83,12 @@ word COMMA_OPERATOR, MD_COMMA_OPERATOR namespace select_arg_, md_select_arg_ namespace generic_sel_entry_, md_generic_sel_entry_ -word resolved_function_call, md_resolved_function_call +word generic_call, md_generic_call word if_generic_selector_defined_include_slot, md_if_generic_selector_defined_include_slot -word UNRESOLVED_GENERIC_SELECTION, MD_UNRESOLVED_GENERIC_SELECTION -word assert_generic_selection_fail, md_assert_generic_selection_fail +word UNRESOLVED_GENERIC_SELECTION, MD_UNRESOLVED_GENERIC_SELECTION +word assert_generic_sel_fail, md_assert_generic_sel_fail namespace GENERIC_SLOT_1__, MD_GENERIC_SLOT_1__ namespace generic_example_hash_, md_generic_example_hash_ @@ -1115,7 +1115,7 @@ namespace MsgKind, MD_MsgKind word Msg, MD_Msg word MsgList, MD_MsgList -word TokenFlags, MD_MsgFlags +word TokenFlags, MD_TokenFlags namespace TokenFlag_, MD_TokenFlag_ word TokenFlagGroups, MD_TokenFlagGroups namespace TokenFlagGroup_, MD_TokenFlagGroup_ diff --git a/gen_c11/gen_c11.c b/gen_c11/gen_c11.c index 09a7139..2ef05bf 100644 --- a/gen_c11/gen_c11.c +++ b/gen_c11/gen_c11.c @@ -272,7 +272,7 @@ int main() preprocess_endif(); new_line(); - print_section(r_tp_stb_sprintf_h, lit("STB snprintf Header")); + print_section(r_tp_stb_sprintf_header, lit("STB snprintf Header")); print_fmt("%S", implementation_guard_end); new_line(); diff --git a/gen_c11/gen_common.h b/gen_c11/gen_common.h index dfe29ae..ec265a0 100644 --- a/gen_c11/gen_common.h +++ b/gen_c11/gen_common.h @@ -182,7 +182,7 @@ void register_library_macros() ((gen_Macro) { lit("generic_sel_entry_type"), MT_Expression, }), ((gen_Macro) { lit("generic_sel_entry_function"), MT_Expression, }), ((gen_Macro) { lit("generic_sel_entry_comma_delimiter"), MT_Expression, }), - ((gen_Macro) { lit("resolved_function_call"), MT_Expression, MF_Functional }), + ((gen_Macro) { lit("generic_call"), MT_Expression, MF_Functional }), ((gen_Macro) { lit("if_generic_selector_defined_include_slot"), MT_Expression, }), ((gen_Macro) { lit("function_generic_example"), MT_Expression, MF_Functional }), ((gen_Macro) { lit("GENERIC_SLOT_1__example_hash"), MT_Expression, }), @@ -191,10 +191,8 @@ void register_library_macros() ((gen_Macro) { lit("function_generic_example_varadic"), MT_Expression, MF_Functional }), ((gen_Macro) { lit("function_generic_example_direct_type"), MT_Expression, MF_Functional }), ((gen_Macro) { lit("type_to_expression"), MT_Expression, MF_Functional }), - ((gen_Macro) { lit("distinct_register_selector"), MT_Statement, MF_Functional }), - ((gen_Macro) { lit("distinct_lookup"), MT_Expression, MF_Functional }), - ((gen_Macro) { lit("generic_example_do_something_with"), MT_Expression, MF_Functional }), - ((gen_Macro) { lit("distinct"), MT_Typename, MF_Functional }) + ((gen_Macro) { lit("_Generic_L2"), MT_Expression, MF_Functional }), + ((gen_Macro) { lit("_Generic_L3"), MT_Expression, MF_Functional }) )); // base/profiling.h gen_register_macros(args(