From 78bfd000d40163c0235f817ad00341230cd568b6 Mon Sep 17 00:00:00 2001 From: Allen Webster Date: Tue, 24 Aug 2021 21:16:33 -0700 Subject: [PATCH] min/max macros --- bin/bld_core.sh | 3 +-- bin/compiler_flags.txt | 2 +- source/md.c | 20 +++++++++++--------- source/md.h | 5 +++++ 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/bin/bld_core.sh b/bin/bld_core.sh index 22f24b6..f29c7f4 100644 --- a/bin/bld_core.sh +++ b/bin/bld_core.sh @@ -2,7 +2,7 @@ ###### Usage ################################################################## # ./bld_core.sh [arguments ...] -# +# # command: compile # ./bld_core.sh compile [opts ...] # @@ -14,7 +14,6 @@ # command: link # ./bld_core.sh link [input-file ...] -- [opts ...] # -# # Creates binaries (executables and dynamic libraries) from objects, # libraries, and options with a linker. # First automatically compiles source files into objects. diff --git a/bin/compiler_flags.txt b/bin/compiler_flags.txt index 77e8280..63391f9 100644 --- a/bin/compiler_flags.txt +++ b/bin/compiler_flags.txt @@ -13,4 +13,4 @@ clang>-Wno-unknown-warning-option ###### Debug ################################################################## debug>cl>-Zi -debug>clang>-g \ No newline at end of file +debug>clang>-g diff --git a/source/md.c b/source/md.c index 80d895d..78dfd4e 100644 --- a/source/md.c +++ b/source/md.c @@ -301,7 +301,7 @@ MD_StaticAssert(sizeof(MD_ArenaDefault) <= MD_IMPL_ArenaHeaderSize, arena_def_si static MD_Arena* MD_ArenaDefaultAlloc(MD_u64 cap){ void *mem = MD_IMPL_Reserve(cap); - MD_u64 cmt = ((MD_ArenaDefault_CommitSize < cap) ? MD_ArenaDefault_CommitSize : cap); + MD_u64 cmt = MD_ClampBot(MD_ArenaDefault_CommitSize, cap); MD_IMPL_Commit(mem, cmt); MD_ArenaDefault *arena = (MD_ArenaDefault*)mem; @@ -325,11 +325,11 @@ MD_ArenaDefaultPush(MD_ArenaDefault *arena, MD_u64 size){ MD_u8 *buf = (MD_u8*)arena; if (arena->pos + size <= arena->cap){ MD_u64 pos = arena->pos; - MD_u64 pos_clamped = ((pos > MD_IMPL_ArenaHeaderSize) ? pos : MD_IMPL_ArenaHeaderSize); + MD_u64 pos_clamped = MD_ClampBot(MD_IMPL_ArenaHeaderSize, pos); MD_u64 new_pos = pos_clamped + size; MD_u64 align_m1 = arena->align - 1; MD_u64 new_pos_aligned = (new_pos + align_m1)&(~align_m1); - MD_u64 new_pos_clamped = ((arena->cap < new_pos_aligned) ? arena->cap : new_pos_aligned); + MD_u64 new_pos_clamped = MD_ClampTop(new_pos_aligned, arena->cap); result = buf + pos; arena->pos = new_pos_aligned; @@ -346,7 +346,7 @@ MD_ArenaDefaultPush(MD_ArenaDefault *arena, MD_u64 size){ static void MD_ArenaDefaultPopTo(MD_ArenaDefault *arena, MD_u64 pos){ - MD_u64 pos_clamped = ((pos > MD_IMPL_ArenaHeaderSize) ? pos : MD_IMPL_ArenaHeaderSize); + MD_u64 pos_clamped = MD_ClampBot(MD_IMPL_ArenaHeaderSize, pos); arena->pos = pos_clamped; } @@ -496,8 +496,7 @@ MD_FUNCTION_IMPL void MD_ArenaPutBack(MD_Arena *arena, MD_u64 size){ MD_u64 pos = MD_IMPL_ArenaGetPos(arena); MD_u64 new_pos = pos - size; - MD_u64 new_pos_clamped = ((new_pos < MD_IMPL_ArenaHeaderSize) ? - MD_IMPL_ArenaHeaderSize : new_pos); + MD_u64 new_pos_clamped = MD_ClampBot(MD_IMPL_ArenaHeaderSize, new_pos); MD_IMPL_ArenaPopTo(arena, new_pos_clamped); } @@ -511,7 +510,7 @@ MD_ArenaPushAlign(MD_Arena *arena, MD_u64 boundary){ MD_u64 pos = MD_IMPL_ArenaGetPos(arena); MD_u64 align_m1 = boundary - 1; MD_u64 new_pos_aligned = (pos + align_m1)&(~align_m1); - MD_u64 new_pos_clamped = ((new_pos_aligned > arena->cap) ? new_pos_aligned : arena->cap); + MD_u64 new_pos_clamped = MD_ClampTop(new_pos_aligned, arena->cap); if (new_pos_clamped > pos){ MD_u64 amt = new_pos_clamped - pos; MD_MemoryZero(MD_IMPL_ArenaPush(arena, amt), amt); @@ -978,7 +977,10 @@ MD_S8Stylize(MD_Arena *arena, MD_String8 string, MD_IdentifierStyle word_style, case MD_IdentifierStyle_LowerCamelCase: { - result.str[write_pos] = node == words.first ? MD_CharToLower(result.str[write_pos]) : MD_CharToUpper(result.str[write_pos]); + MD_b32 is_first = (node == words.first); + result.str[write_pos] = (is_first ? + MD_CharToLower(result.str[write_pos]) : + MD_CharToUpper(result.str[write_pos])); for(MD_u64 i = write_pos+1; i < write_pos + node->string.size; i += 1) { result.str[i] = MD_CharToLower(result.str[i]); @@ -3332,7 +3334,7 @@ MD_MakeCmdLineFromOptions(MD_Arena *arena, MD_String8List options) { MD_u64 colon_signifier_pos = MD_S8FindSubstring(option_name, MD_S8Lit(":"), 0, 0); MD_u64 equal_signifier_pos = MD_S8FindSubstring(option_name, MD_S8Lit("="), 0, 0); - MD_u64 signifier_pos = colon_signifier_pos > equal_signifier_pos ? equal_signifier_pos : colon_signifier_pos; + MD_u64 signifier_pos = MD_Min(colon_signifier_pos, equal_signifier_pos); if(signifier_pos < option_name.size) { first_value = MD_S8Skip(option_name, signifier_pos+1); diff --git a/source/md.h b/source/md.h index 5386f7b..dd5deed 100644 --- a/source/md.h +++ b/source/md.h @@ -724,6 +724,11 @@ struct MD_FileIter #define MD_StaticAssert(c,label) MD_u8 MD_static_assert_##label[(c)?(1):(-1)] #define MD_ArrayCount(a) (sizeof(a) / sizeof((a)[0])) +#define MD_Min(a,b) (((a)<(b))?(a):(b)) +#define MD_Max(a,b) (((a)>(b))?(a):(b)) +#define MD_ClampBot(a,b) MD_Max(a,b) +#define MD_ClampTop(a,b) MD_Min(a,b) + //~ Linked List Macros. // terminator modes