min/max macros

This commit is contained in:
Allen Webster
2021-08-24 21:16:33 -07:00
parent 5ef50bd3df
commit 78bfd000d4
4 changed files with 18 additions and 12 deletions
+1 -2
View File
@@ -2,7 +2,7 @@
###### Usage ##################################################################
# ./bld_core.sh <command> [arguments ...]
#
#
# command: compile
# ./bld_core.sh compile <source-file> [opts ...]
#
@@ -14,7 +14,6 @@
# command: link
# ./bld_core.sh link <out-name> [input-file ...] -- [opts ...]
#
#
# Creates binaries (executables and dynamic libraries) from objects,
# libraries, and options with a linker.
# First automatically compiles source files into objects.
+1 -1
View File
@@ -13,4 +13,4 @@ clang>-Wno-unknown-warning-option
###### Debug ##################################################################
debug>cl>-Zi
debug>clang>-g
debug>clang>-g
+11 -9
View File
@@ -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);
+5
View File
@@ -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