res refactor progress
This commit is contained in:
parent
a8fb832bcb
commit
c0bad6e58b
@ -77,6 +77,8 @@ AppArgList ParseAppArgs(Arena *arena, String args_str)
|
||||
u8 c = args_str.text[i];
|
||||
switch (mode)
|
||||
{
|
||||
default: break;
|
||||
|
||||
case 0:
|
||||
{
|
||||
if (c == '-')
|
||||
@ -133,7 +135,6 @@ AppArgList ParseAppArgs(Arena *arena, String args_str)
|
||||
}
|
||||
++i;
|
||||
} break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
@ -557,6 +557,11 @@ ASE_DecodedImage ASE_DecodeImage(Arena *arena, String encoded)
|
||||
|
||||
switch (chunk_type)
|
||||
{
|
||||
default:
|
||||
{
|
||||
BB_SeekToByte(&br, chunk_end_pos);
|
||||
} break;
|
||||
|
||||
//- Decode layer
|
||||
case ASE_ChunkKind_Layer:
|
||||
{
|
||||
@ -659,11 +664,6 @@ ASE_DecodedImage ASE_DecodeImage(Arena *arena, String encoded)
|
||||
} break;
|
||||
}
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
BB_SeekToByte(&br, chunk_end_pos);
|
||||
} break;
|
||||
}
|
||||
}
|
||||
++num_frames;
|
||||
@ -855,6 +855,11 @@ ASE_DecodedSheet ASE_DecodeSheet(Arena *arena, String encoded)
|
||||
|
||||
switch (chunk_type)
|
||||
{
|
||||
default:
|
||||
{
|
||||
BB_SeekToByte(&br, chunk_end_pos);
|
||||
} break;
|
||||
|
||||
//- Decode tags
|
||||
case ASE_ChunkKind_Tags:
|
||||
{
|
||||
@ -931,11 +936,6 @@ ASE_DecodedSheet ASE_DecodeSheet(Arena *arena, String encoded)
|
||||
|
||||
/* TODO */
|
||||
//case ASE_ChunkKind_Userdata
|
||||
|
||||
default:
|
||||
{
|
||||
BB_SeekToByte(&br, chunk_end_pos);
|
||||
} break;
|
||||
}
|
||||
}
|
||||
++num_frames;
|
||||
|
||||
@ -31,8 +31,8 @@ Struct(TempArena)
|
||||
|
||||
Struct(ArenaCtx)
|
||||
{
|
||||
Arena *scratch_arenas[ScratchArenasPerCtx];
|
||||
Arena *perm_arena;
|
||||
Arena *scratch_arenas[ScratchArenasPerCtx];
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
@ -182,18 +182,20 @@ Inline ArenaCtx *ArenaCtxFromFiberId(i16 fiber_id)
|
||||
{
|
||||
SharedArenaCtx *g = &shared_arena_ctx;
|
||||
ArenaCtx *ctx = &g->arena_contexts[fiber_id];
|
||||
if (!ctx->scratch_arenas[0])
|
||||
if (!ctx->perm_arena)
|
||||
{
|
||||
__profn("Initialize fiber arena ctx");
|
||||
ctx->perm_arena = AcquireArena(Gibi(64));
|
||||
for (i32 i = 0; i < (i32)countof(ctx->scratch_arenas); ++i)
|
||||
{
|
||||
ctx->scratch_arenas[i] = AcquireArena(Gibi(64));
|
||||
}
|
||||
ctx->perm_arena = AcquireArena(Gibi(64));
|
||||
}
|
||||
return ctx;
|
||||
}
|
||||
|
||||
#define PermArena (ArenaCtxFromFiberId(FiberId)->perm_arena)
|
||||
|
||||
////////////////////////////////
|
||||
//~ Scratch helpers
|
||||
|
||||
@ -247,12 +249,3 @@ Inline void EndScratch(TempArena scratch_temp)
|
||||
{
|
||||
EndTempArena(scratch_temp);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ Perm arena helpers
|
||||
|
||||
Inline Arena *GetPermArena(void)
|
||||
{
|
||||
ArenaCtx *ctx = ArenaCtxFromFiberId(FiberId);
|
||||
return ctx->perm_arena;
|
||||
}
|
||||
|
||||
@ -7,16 +7,24 @@ Enum(JobPool)
|
||||
{
|
||||
JobPool_Inherit = -1,
|
||||
|
||||
/* The floating pool contains a large number of lower priority worker
|
||||
* threads that have affinity over the entire CPU. Other pools should push
|
||||
* jobs that only block and do no work here so that they can yield on the
|
||||
* blocking job rather than blocking themselves. */
|
||||
JobPool_Floating = 0,
|
||||
/* Contains critical-priority worker threads affinitized over the entire CPU.
|
||||
* Meant to take on high-bandwidth temporary work (e.g. loading a level). */
|
||||
JobPool_Hyper = 0,
|
||||
|
||||
JobPool_Background = 1,
|
||||
JobPool_Audio = 2,
|
||||
JobPool_User = 3,
|
||||
JobPool_Sim = 4,
|
||||
/* Contains low-priority worker threads affinitized over the entire CPU.
|
||||
* Meant to take on blocking work that higher-priority workers can continue doing actual work. */
|
||||
JobPool_Blocking = 1,
|
||||
|
||||
/* Contains low-priority worker threads affinitized to cores that don't interfere with workers in specialized pools.
|
||||
* Meant to take on asynchronous work from higher priority pools. */
|
||||
JobPool_Background = 2,
|
||||
|
||||
/* Contains high-priority worker threads affinitized to cores that don't interfere with workers in other specialized pools.
|
||||
* These pools are meant to only have work pushed onto them from jobs within the same pool (e.g. pushing 100 rendering
|
||||
* jobs will not interfere with cores running workers on the Sim pool as long as the jobs are pushed onto the User pool). */
|
||||
JobPool_Audio = 3,
|
||||
JobPool_User = 4,
|
||||
JobPool_Sim = 5,
|
||||
|
||||
JobPool_Count
|
||||
};
|
||||
|
||||
@ -543,6 +543,14 @@ String FormatStringV(Arena *arena, String fmt, va_list args)
|
||||
FmtArg arg = va_arg(args, FmtArg);
|
||||
switch (arg.kind)
|
||||
{
|
||||
default:
|
||||
{
|
||||
/* Unknown format type */
|
||||
Assert(0);
|
||||
parsed_str = PushString(arena, Lit("<?>"));
|
||||
no_more_args = 1;
|
||||
} break;
|
||||
|
||||
case FmtKind_Char:
|
||||
{
|
||||
parsed_str = StringFromChar(arena, arg.value.c);
|
||||
@ -595,14 +603,6 @@ String FormatStringV(Arena *arena, String fmt, va_list args)
|
||||
parsed_str = PushString(arena, Lit("<?>"));
|
||||
no_more_args = 1;
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
/* Unknown format type */
|
||||
Assert(0);
|
||||
parsed_str = PushString(arena, Lit("<?>"));
|
||||
no_more_args = 1;
|
||||
} break;
|
||||
}
|
||||
/* Update final string len / start */
|
||||
final_len += parsed_str.len;
|
||||
|
||||
@ -20,6 +20,8 @@ Utf8DecodeResult DecodeUtf8(String str)
|
||||
advance = 1;
|
||||
switch (utf8_len)
|
||||
{
|
||||
default: break;
|
||||
|
||||
case 1:
|
||||
{
|
||||
codepoint = c0;
|
||||
@ -75,8 +77,6 @@ Utf8DecodeResult DecodeUtf8(String str)
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -193,7 +193,7 @@ i32 W32_Main(void)
|
||||
/* Startup layers */
|
||||
if (!Atomic32Fetch(&g->panicking))
|
||||
{
|
||||
RunJob(1, W32_StartupLayersJob, JobPool_Floating, JobPriority_High, 0, 0);
|
||||
RunJob(1, W32_StartupLayersJob, JobPool_Hyper, JobPriority_High, 0, 0);
|
||||
}
|
||||
|
||||
/* Wait for startup end or panic */
|
||||
@ -221,7 +221,7 @@ i32 W32_Main(void)
|
||||
/* Run exit callbacks job */
|
||||
if (!Atomic32Fetch(&g->panicking))
|
||||
{
|
||||
RunJob(1, W32_ShutdownLayersJob, JobPool_Floating, JobPriority_High, 0, 0);
|
||||
RunJob(1, W32_ShutdownLayersJob, JobPool_Hyper, JobPriority_High, 0, 0);
|
||||
}
|
||||
|
||||
/* Wait for exit end or panic */
|
||||
|
||||
@ -72,7 +72,7 @@ void InitJobWorkers(void)
|
||||
name_fmt = Lit("Sim worker #%F");
|
||||
pool->num_worker_threads = 4;
|
||||
pool->thread_affinity_mask = 0x000000000000000Full;
|
||||
pool->thread_priority = THREAD_PRIORITY_TIME_CRITICAL;
|
||||
pool->thread_priority = THREAD_PRIORITY_ABOVE_NORMAL;
|
||||
} break;
|
||||
|
||||
case JobPool_User:
|
||||
@ -80,7 +80,7 @@ void InitJobWorkers(void)
|
||||
name_fmt = Lit("User worker #%F");
|
||||
pool->num_worker_threads = 4;
|
||||
pool->thread_affinity_mask = 0x00000000000000F0ull;
|
||||
pool->thread_priority = THREAD_PRIORITY_TIME_CRITICAL;
|
||||
pool->thread_priority = THREAD_PRIORITY_ABOVE_NORMAL;
|
||||
} break;
|
||||
|
||||
case JobPool_Audio:
|
||||
@ -97,13 +97,23 @@ void InitJobWorkers(void)
|
||||
name_fmt = Lit("Background worker #%F");
|
||||
pool->num_worker_threads = 2;
|
||||
pool->thread_affinity_mask = 0x0000000000000C00ull;
|
||||
pool->thread_priority = THREAD_PRIORITY_NORMAL;
|
||||
} break;
|
||||
|
||||
case JobPool_Floating:
|
||||
case JobPool_Blocking:
|
||||
{
|
||||
name_fmt = Lit("Floating worker #%F");
|
||||
pool->num_worker_threads = 8;
|
||||
pool->thread_affinity_mask = 0x0000000000000FFFull;
|
||||
pool->thread_priority = THREAD_PRIORITY_NORMAL;
|
||||
} break;
|
||||
|
||||
case JobPool_Hyper:
|
||||
{
|
||||
name_fmt = Lit("Floating worker #%F");
|
||||
pool->num_worker_threads = 8;
|
||||
pool->thread_affinity_mask = 0x0000000000000FFFull;
|
||||
pool->thread_priority = THREAD_PRIORITY_HIGHEST;
|
||||
} break;
|
||||
}
|
||||
pool->worker_threads_arena = AcquireArena(Gibi(64));
|
||||
@ -1091,11 +1101,11 @@ W32_ThreadDef(W32_JobWorkerEntryFunc, worker_ctx_arg)
|
||||
{
|
||||
switch (wait_size)
|
||||
{
|
||||
default: cancel_wait = 1; Assert(0); break; /* Invalid wait size */
|
||||
case 1: cancel_wait = (u8)_InterlockedCompareExchange8(wait_addr, 0, 0) != *(u8 *)wait_cmp; break;
|
||||
case 2: cancel_wait = (u16)_InterlockedCompareExchange16(wait_addr, 0, 0) != *(u16 *)wait_cmp; break;
|
||||
case 4: cancel_wait = (u32)_InterlockedCompareExchange(wait_addr, 0, 0) != *(u32 *)wait_cmp; break;
|
||||
case 8: cancel_wait = (u64)_InterlockedCompareExchange64(wait_addr, 0, 0) != *(u64 *)wait_cmp; break;
|
||||
default: cancel_wait = 1; Assert(0); break; /* Invalid wait size */
|
||||
}
|
||||
}
|
||||
if (wait_time != 0 && !cancel_wait)
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
GPU_D12_SharedState GPU_D12_shared_state = ZI;
|
||||
|
||||
////////////////////////////////
|
||||
//~ @hookdef Startup hook
|
||||
|
||||
@ -34,7 +36,7 @@ GPU_Fence GPU_GetGlobalFence(void)
|
||||
GPU_Resource *GPU_AcquireResource(GPU_ResourceDesc desc)
|
||||
{
|
||||
LAX desc;
|
||||
return (GPU_Resource *)0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void GPU_ReleaseResource(GPU_Resource *resource, GPU_Fence fence, GPU_ReleaseFlag flags)
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
////////////////////////////////
|
||||
//~ Shared state
|
||||
|
||||
Struct(GPU_D12_SharedState)
|
||||
{
|
||||
i32 _;
|
||||
};
|
||||
|
||||
extern GPU_D12_SharedState GPU_D12_shared_state;
|
||||
174
src/json/json.c
174
src/json/json.c
@ -38,16 +38,16 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
{
|
||||
switch (src.text[pos])
|
||||
{
|
||||
JSON_Case_Newline:
|
||||
JSON_Case_Space:
|
||||
{
|
||||
++pos;
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
whitespace_done = 1;
|
||||
} break;
|
||||
|
||||
case JSON_Case_Newline:
|
||||
case JSON_Case_Space:
|
||||
{
|
||||
++pos;
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -66,6 +66,8 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
/* Lex known token kinds */
|
||||
switch (src.text[pos])
|
||||
{
|
||||
default: break;
|
||||
|
||||
/* Symbols */
|
||||
case ',':
|
||||
{
|
||||
@ -112,7 +114,7 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
{
|
||||
switch (src.text[pos + 1])
|
||||
{
|
||||
JSON_Case_Digit0Through9:
|
||||
case JSON_Case_Digit0Through9:
|
||||
{
|
||||
next_is_digit = 1;
|
||||
} break;
|
||||
@ -124,7 +126,7 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
break;
|
||||
}
|
||||
} FALLTHROUGH;
|
||||
JSON_Case_Digit0Through9:
|
||||
case JSON_Case_Digit0Through9:
|
||||
{
|
||||
t->kind = JSON_TokenKind_Number;
|
||||
JSON_LexNumberState state = JSON_LexNumberState_Whole;
|
||||
@ -133,7 +135,12 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
{
|
||||
switch (src.text[pos])
|
||||
{
|
||||
JSON_Case_Digit0Through9:
|
||||
default:
|
||||
{
|
||||
number_done = 1;
|
||||
} break;
|
||||
|
||||
case JSON_Case_Digit0Through9:
|
||||
{
|
||||
++pos;
|
||||
} break;
|
||||
@ -146,13 +153,13 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
u8 c1 = src.text[pos + 1];
|
||||
switch (c1)
|
||||
{
|
||||
JSON_Case_Digit0Through9:
|
||||
default: break;
|
||||
|
||||
case JSON_Case_Digit0Through9:
|
||||
{
|
||||
/* Consume '.' */
|
||||
++consume;
|
||||
} break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
if (consume)
|
||||
@ -175,7 +182,7 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
u8 c1 = src.text[pos + 1];
|
||||
switch (c1)
|
||||
{
|
||||
JSON_Case_Digit0Through9:
|
||||
case JSON_Case_Digit0Through9:
|
||||
{
|
||||
/* Consume 'E'/'e' */
|
||||
++consume;
|
||||
@ -189,13 +196,13 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
u8 c2 = src.text[pos + 2];
|
||||
switch (c2)
|
||||
{
|
||||
JSON_Case_Digit0Through9:
|
||||
default: break;
|
||||
|
||||
case JSON_Case_Digit0Through9:
|
||||
{
|
||||
/* Consume 'E'/'e' & '+'/'-' */
|
||||
consume += 2;
|
||||
} break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
@ -213,11 +220,6 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
number_done = 1;
|
||||
}
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
number_done = 1;
|
||||
} break;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
@ -235,7 +237,12 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
next_escaped = 0;
|
||||
switch (src.text[pos])
|
||||
{
|
||||
JSON_Case_Newline:
|
||||
default:
|
||||
{
|
||||
++pos;
|
||||
} break;
|
||||
|
||||
case JSON_Case_Newline:
|
||||
{
|
||||
++pos;
|
||||
string_done = 1;
|
||||
@ -259,11 +266,6 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
next_escaped = 1;
|
||||
}
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
++pos;
|
||||
} break;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
@ -283,16 +285,16 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
/* Don't match if word continues past keyword */
|
||||
switch (src.text[pos + keyword.len])
|
||||
{
|
||||
JSON_Case_Symbol:
|
||||
JSON_Case_Space:
|
||||
JSON_Case_Newline:
|
||||
{
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
match = 0;
|
||||
} break;
|
||||
|
||||
case JSON_Case_Symbol:
|
||||
case JSON_Case_Space:
|
||||
case JSON_Case_Newline:
|
||||
{
|
||||
} break;
|
||||
}
|
||||
}
|
||||
if (match)
|
||||
@ -311,8 +313,6 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
pos += keyword.len;
|
||||
}
|
||||
} break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -324,17 +324,17 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
|
||||
{
|
||||
switch (src.text[pos])
|
||||
{
|
||||
JSON_Case_Symbol:
|
||||
JSON_Case_Space:
|
||||
JSON_Case_Newline:
|
||||
{
|
||||
unknown_done = 1;
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
++pos;
|
||||
} break;
|
||||
|
||||
case JSON_Case_Symbol:
|
||||
case JSON_Case_Space:
|
||||
case JSON_Case_Newline:
|
||||
{
|
||||
unknown_done = 1;
|
||||
} break;
|
||||
}
|
||||
}
|
||||
t->end = pos;
|
||||
@ -384,7 +384,14 @@ f64 interpret_number(String src)
|
||||
{
|
||||
switch (src.text[pos])
|
||||
{
|
||||
JSON_Case_Digit0Through9:
|
||||
default:
|
||||
{
|
||||
/* Unreachable */
|
||||
Assert(0);
|
||||
++pos;
|
||||
} break;
|
||||
|
||||
case JSON_Case_Digit0Through9:
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
@ -440,6 +447,13 @@ f64 interpret_number(String src)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
default:
|
||||
{
|
||||
/* Unreachable */
|
||||
Assert(0);
|
||||
++pos;
|
||||
} break;
|
||||
|
||||
case JSON_LexNumberState_Whole:
|
||||
{
|
||||
whole_sign = -1;
|
||||
@ -451,13 +465,6 @@ f64 interpret_number(String src)
|
||||
exponent_sign = -1;
|
||||
++pos;
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
/* Unreachable */
|
||||
Assert(0);
|
||||
++pos;
|
||||
} break;
|
||||
}
|
||||
} break;
|
||||
|
||||
@ -465,27 +472,20 @@ f64 interpret_number(String src)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
default:
|
||||
{
|
||||
/* Unreachable */
|
||||
Assert(0);
|
||||
++pos;
|
||||
} break;
|
||||
|
||||
case JSON_LexNumberState_Exponent:
|
||||
{
|
||||
exponent_sign = 1;
|
||||
++pos;
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
/* Unreachable */
|
||||
Assert(0);
|
||||
++pos;
|
||||
} break;
|
||||
}
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
/* Unreachable */
|
||||
Assert(0);
|
||||
++pos;
|
||||
} break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -578,6 +578,15 @@ String interpret_string(Arena *arena, String src, String *error)
|
||||
{
|
||||
switch (src.text[pos])
|
||||
{
|
||||
default:
|
||||
{
|
||||
if (error)
|
||||
{
|
||||
*error = Lit("Invalid escape character in string.");
|
||||
return result;
|
||||
}
|
||||
} break;
|
||||
|
||||
case '"':
|
||||
case '\\':
|
||||
case '/':
|
||||
@ -634,21 +643,19 @@ String interpret_string(Arena *arena, String src, String *error)
|
||||
/* TODO */
|
||||
} break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
{
|
||||
if (error)
|
||||
{
|
||||
*error = Lit("Invalid escape character in string.");
|
||||
return result;
|
||||
}
|
||||
} break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (src.text[pos])
|
||||
{
|
||||
default:
|
||||
{
|
||||
*PushStructNoZero(arena, u8) = src.text[pos];
|
||||
++result.len;
|
||||
++pos;
|
||||
} break;
|
||||
|
||||
case '\\':
|
||||
{
|
||||
escaped = 1;
|
||||
@ -661,13 +668,6 @@ String interpret_string(Arena *arena, String src, String *error)
|
||||
valid_close = 1;
|
||||
++pos;
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
*PushStructNoZero(arena, u8) = src.text[pos];
|
||||
++result.len;
|
||||
++pos;
|
||||
} break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -801,6 +801,13 @@ void JSON_Parse(Arena *arena, JSON_Parser *p)
|
||||
/* Parse value */
|
||||
switch (at->kind)
|
||||
{
|
||||
default:
|
||||
{
|
||||
JSON_PushError(arena, p, at, Lit("Value expected."));
|
||||
at = at->next;
|
||||
goto abort;
|
||||
} break;
|
||||
|
||||
case JSON_TokenKind_Number:
|
||||
{
|
||||
String t_text = STRING(at->end - at->start, &src.text[at->start]);
|
||||
@ -861,13 +868,6 @@ void JSON_Parse(Arena *arena, JSON_Parser *p)
|
||||
at = at->next;
|
||||
is_new_parent = 1;
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
JSON_PushError(arena, p, at, Lit("Value expected."));
|
||||
at = at->next;
|
||||
goto abort;
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -54,21 +54,21 @@ Struct(JSON_Result)
|
||||
//~ Lexer types
|
||||
|
||||
#define JSON_Case_Newline \
|
||||
case 0x0A: /* Line feed or New line */ \
|
||||
0x0A: /* Line feed or New line */ \
|
||||
case 0x0D /* Carriage return */
|
||||
|
||||
#define JSON_Case_Space \
|
||||
case 0x20: /* Space */ \
|
||||
0x20: /* Space */ \
|
||||
case 0x09 /* Horizontal tab */
|
||||
|
||||
#define JSON_Case_Digit0Through9 \
|
||||
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9'
|
||||
'0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9'
|
||||
|
||||
#define JSON_Case_Digit1Through9 \
|
||||
case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9'
|
||||
'1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9'
|
||||
|
||||
#define JSON_Case_Symbol \
|
||||
case ',': case ':': case '[': case ']': case '{': case '}'
|
||||
',': case ':': case '[': case ']': case '{': case '}'
|
||||
|
||||
Enum(JSON_TokenKind)
|
||||
{
|
||||
|
||||
145
src/meta/meta.c
145
src/meta/meta.c
@ -736,6 +736,23 @@ Error *PushError(Arena *arena, ErrorList *list, String file, i64 pos, String s)
|
||||
return e;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ Task
|
||||
|
||||
JobDecl(TaskJob, {i32 _;});
|
||||
|
||||
JobDef(TaskJob, sig, id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
////////////////////////////////
|
||||
//~ Build
|
||||
|
||||
@ -890,60 +907,76 @@ void StartupMeta(void)
|
||||
}
|
||||
|
||||
//- Generate compiler flags
|
||||
StringList shared_compiler_flags = ZI;
|
||||
StringList msvc_compiler_flags = ZI;
|
||||
StringList clang_compiler_flags = ZI;
|
||||
StringList compiler_defs = ZI;
|
||||
StringList warning_flags_msvc = ZI;
|
||||
StringList warning_flags_clang = ZI;
|
||||
StringList flags_msvc = ZI;
|
||||
StringList flags_clang = ZI;
|
||||
StringList compiler_flags_msvc = ZI;
|
||||
StringList compiler_flags_clang = ZI;
|
||||
StringList linker_flags_msvc = ZI;
|
||||
StringList linker_flags_clang = ZI;
|
||||
{
|
||||
//- Shared
|
||||
PushStringToList(arena, &shared_compiler_flags, Lit("-DIsConsoleApp=0"));
|
||||
PushStringToList(arena, &shared_compiler_flags, Lit("-DRtcIsEnabled=1"));
|
||||
PushStringToList(arena, &shared_compiler_flags, Lit("-DAsanIsEnabled=0"));
|
||||
PushStringToList(arena, &shared_compiler_flags, Lit("-DCrtlibIsEnabled=1"));
|
||||
PushStringToList(arena, &shared_compiler_flags, Lit("-DDebinfoEnabled=1"));
|
||||
PushStringToList(arena, &shared_compiler_flags, Lit("-DDeveloperIsEnabled=1"));
|
||||
PushStringToList(arena, &shared_compiler_flags, Lit("-DProfilingIsEnabled=0"));
|
||||
PushStringToList(arena, &shared_compiler_flags, Lit("-DUnoptimizedIsEnabled=1"));
|
||||
PushStringToList(arena, &shared_compiler_flags, Lit("-DTestsAreEnabled=0"));
|
||||
//- Shared definitions
|
||||
PushStringToList(arena, &compiler_defs, Lit("-DIsConsoleApp=0"));
|
||||
PushStringToList(arena, &compiler_defs, Lit("-DRtcIsEnabled=1"));
|
||||
PushStringToList(arena, &compiler_defs, Lit("-DAsanIsEnabled=0"));
|
||||
PushStringToList(arena, &compiler_defs, Lit("-DCrtlibIsEnabled=1"));
|
||||
PushStringToList(arena, &compiler_defs, Lit("-DDebinfoEnabled=1"));
|
||||
PushStringToList(arena, &compiler_defs, Lit("-DDeveloperIsEnabled=1"));
|
||||
PushStringToList(arena, &compiler_defs, Lit("-DProfilingIsEnabled=0"));
|
||||
PushStringToList(arena, &compiler_defs, Lit("-DUnoptimizedIsEnabled=1"));
|
||||
PushStringToList(arena, &compiler_defs, Lit("-DTestsAreEnabled=0"));
|
||||
|
||||
//- Msvc
|
||||
{
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-Z7"));
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-DEBUG:FULL"));
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-Fo:pp_gen.obj"));
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-Fe:pp.exe"));
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-nologo"));
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-diagnostics:column"));
|
||||
PushStringToList(arena, &flags_msvc, Lit("-Fe:pp.exe"));
|
||||
PushStringToList(arena, &flags_msvc, Lit("-nologo"));
|
||||
PushStringToList(arena, &compiler_flags_msvc, Lit("-Fo:pp_gen.obj"));
|
||||
PushStringToList(arena, &compiler_flags_msvc, Lit("-diagnostics:column"));
|
||||
|
||||
/* Debug info */
|
||||
PushStringToList(arena, &flags_msvc, Lit("-DEBUG:FULL"));
|
||||
PushStringToList(arena, &compiler_flags_msvc, Lit("-Z7"));
|
||||
|
||||
/* Enable warnings */
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-W4"));
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-we4013")); /* function undefined; assuming extern returning int */
|
||||
PushStringToList(arena, &warning_flags_msvc, Lit("-W4"));
|
||||
PushStringToList(arena, &warning_flags_msvc, Lit("-WX"));
|
||||
// PushStringToList(arena, &warning_flags_msvc, Lit("-we4013")); /* function undefined; assuming extern returning int */
|
||||
|
||||
/* Disable warnings */
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4244")); /* function': conversion from 'int' to 'f32', possible loss of data */
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4201")); /* nonstandard extension used: nameless struct/union */
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4324")); /* structure was padded due to alignment specifier */
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4100")); /* unreferenced parameter */
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4101")); /* unreferenced local variable */
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4189")); /* local variable is initialized but not referenced */
|
||||
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4200")); /* nonstandard extension used: zero-sized array in struct/union */
|
||||
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4244")); /* 'function': conversion from 'int' to 'f32', possible loss of data */
|
||||
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4201")); /* nonstandard extension used: nameless struct/union */
|
||||
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4324")); /* structure was padded due to alignment specifier */
|
||||
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4100")); /* unreferenced parameter */
|
||||
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4101")); /* unreferenced local variable */
|
||||
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4189")); /* local variable is initialized but not referenced */
|
||||
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4200")); /* nonstandard extension used: zero-sized array in struct/union */
|
||||
}
|
||||
|
||||
//- Clang
|
||||
{
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-std=c99"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-fno-finite-loops"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-g -gcodeview"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-O0"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-msse4.2"));
|
||||
PushStringToList(arena, &flags_clang, Lit("-std=c99"));
|
||||
PushStringToList(arena, &flags_clang, Lit("-fno-finite-loops"));
|
||||
PushStringToList(arena, &flags_clang, Lit("-g -gcodeview"));
|
||||
PushStringToList(arena, &flags_clang, Lit("-O0"));
|
||||
PushStringToList(arena, &flags_clang, Lit("-msse4.2"));
|
||||
|
||||
/* Enable warnings */
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-Wall"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-Werror"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-Wframe-larger-than=65536"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-Wmissing-prototypes"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-Wunused-variable"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-Wunused-but-set-variable"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-Wunused-parameter"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wall"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Werror"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wframe-larger-than=65536"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wmissing-prototypes"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wmissing-declarations"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wunused-variable"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wunused-but-set-variable"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wunused-parameter"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wimplicit-fallthrough"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wswitch"));
|
||||
|
||||
/* Disable warnings */
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-Wno-initializer-overrides"));
|
||||
PushStringToList(arena, &clang_compiler_flags, Lit("-Wno-microsoft-enum-forward-reference"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wno-initializer-overrides"));
|
||||
PushStringToList(arena, &warning_flags_clang, Lit("-Wno-microsoft-enum-forward-reference"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -952,21 +985,27 @@ void StartupMeta(void)
|
||||
String clang_cmd_str = ZI;
|
||||
/* Msvc */
|
||||
{
|
||||
String flags_str = StringF(arena,
|
||||
String compiler_str = StringF(arena,
|
||||
"%F %F %F %F",
|
||||
FmtString(StringFromList(arena, flags_msvc, Lit(" "))),
|
||||
FmtString(StringFromList(arena, compiler_flags_msvc, Lit(" "))),
|
||||
FmtString(StringFromList(arena, warning_flags_msvc, Lit(" "))),
|
||||
FmtString(StringFromList(arena, compiler_defs, Lit(" "))));
|
||||
String linker_str = StringF(arena,
|
||||
"%F %F",
|
||||
FmtString(StringFromList(arena, shared_compiler_flags, Lit(" "))),
|
||||
FmtString(StringFromList(arena, msvc_compiler_flags, Lit(" ")))
|
||||
);
|
||||
msvc_cmd_str = StringF(arena, "\"cl\" %F %F", FmtString(c_out_file), FmtString(flags_str));
|
||||
FmtString(StringFromList(arena, flags_msvc, Lit(" "))),
|
||||
FmtString(StringFromList(arena, linker_flags_msvc, Lit(" "))));
|
||||
msvc_cmd_str = StringF(arena, "\"cl\" %F %F -link %F", FmtString(c_out_file), FmtString(compiler_str), FmtString(linker_str));
|
||||
}
|
||||
/* Clang */
|
||||
{
|
||||
String flags_str = StringF(arena,
|
||||
"%F %F",
|
||||
FmtString(StringFromList(arena, shared_compiler_flags, Lit(" "))),
|
||||
FmtString(StringFromList(arena, clang_compiler_flags, Lit(" ")))
|
||||
);
|
||||
clang_cmd_str = StringF(arena, "\"clang\" %F %F", FmtString(c_out_file), FmtString(flags_str));
|
||||
String compiler_str = StringF(arena,
|
||||
"%F %F %F %F",
|
||||
FmtString(StringFromList(arena, flags_clang, Lit(" "))),
|
||||
FmtString(StringFromList(arena, compiler_flags_clang, Lit(" "))),
|
||||
FmtString(StringFromList(arena, warning_flags_clang, Lit(" "))),
|
||||
FmtString(StringFromList(arena, compiler_defs, Lit(" "))));
|
||||
clang_cmd_str = StringF(arena, "\"clang\" %F %F", FmtString(c_out_file), FmtString(compiler_str));
|
||||
}
|
||||
|
||||
//- Compile C
|
||||
|
||||
@ -624,6 +624,8 @@ N_EventList N_BeginUpdate(Arena *arena, N_Host *host)
|
||||
{
|
||||
switch (packet_kind)
|
||||
{
|
||||
default: break;
|
||||
|
||||
//- Read packet kind: TryConnect
|
||||
case N_PacketKind_TryConnect:
|
||||
{
|
||||
@ -754,8 +756,6 @@ N_EventList N_BeginUpdate(Arena *arena, N_Host *host)
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
host->bytes_received += packet->data.len;
|
||||
@ -867,6 +867,8 @@ void N_EndUpdate(N_Host *host)
|
||||
N_Channel *channel = node->channel;
|
||||
switch (kind)
|
||||
{
|
||||
default: break;
|
||||
|
||||
//- Process command: TryConnect
|
||||
case N_CmdKind_TryConnect:
|
||||
{
|
||||
@ -971,8 +973,6 @@ void N_EndUpdate(N_Host *host)
|
||||
packet->data_len = BB_GetNumBytesWritten(&bw);
|
||||
}
|
||||
} break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -520,6 +520,11 @@ LRESULT CALLBACK P_W32_Win32WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARA
|
||||
b32 is_release = 0;
|
||||
switch (msg)
|
||||
{
|
||||
default:
|
||||
{
|
||||
result = DefWindowProcW(hwnd, msg, wparam, lparam);
|
||||
} break;
|
||||
|
||||
case WM_QUIT:
|
||||
case WM_CLOSE:
|
||||
case WM_DESTROY:
|
||||
@ -766,11 +771,6 @@ LRESULT CALLBACK P_W32_Win32WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARA
|
||||
mmi->ptMinTrackSize.x = 100;
|
||||
mmi->ptMinTrackSize.y = 100;
|
||||
} break;
|
||||
|
||||
default:
|
||||
{
|
||||
result = DefWindowProcW(hwnd, msg, wparam, lparam);
|
||||
} break;
|
||||
}
|
||||
|
||||
return result;
|
||||
@ -923,6 +923,8 @@ void P_MkDir(String path)
|
||||
String err = ZI;
|
||||
switch (err_code)
|
||||
{
|
||||
default: break;
|
||||
|
||||
case ERROR_BAD_PATHNAME:
|
||||
{
|
||||
err = Lit("Bad path name");
|
||||
@ -942,8 +944,6 @@ void P_MkDir(String path)
|
||||
{
|
||||
err = Lit("User canceled the operation");
|
||||
} break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
if (err.len > 0)
|
||||
{
|
||||
|
||||
@ -1811,6 +1811,8 @@ void UpdateUser(P_Window *window)
|
||||
|
||||
switch (bind)
|
||||
{
|
||||
default: break;
|
||||
|
||||
/* Movement */
|
||||
case BindKind_MoveUp:
|
||||
{
|
||||
@ -1831,8 +1833,6 @@ void UpdateUser(P_Window *window)
|
||||
{
|
||||
input_move_dir.x += 1;
|
||||
} break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1036,6 +1036,12 @@ void StepSim(SimStepCtx *ctx)
|
||||
CmdKind kind = cmd_ent->cmd_kind;
|
||||
switch (kind)
|
||||
{
|
||||
default:
|
||||
{
|
||||
/* Invalid cmd kind */
|
||||
Assert(0);
|
||||
} break;
|
||||
|
||||
case CmdKind_Control:
|
||||
{
|
||||
/* Player's will send control cmds a lot, so keep it around to prevent re-creating it each time */
|
||||
@ -1172,12 +1178,6 @@ void StepSim(SimStepCtx *ctx)
|
||||
}
|
||||
} break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
{
|
||||
/* Invalid cmd kind */
|
||||
Assert(0);
|
||||
} break;
|
||||
}
|
||||
|
||||
/* Release cmd */
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
Readonly S_Texture S_NilTexture = ZI;
|
||||
Readonly S_Sheet S_NilSheet = ZI;
|
||||
S_SharedState S_shared_state = ZI;
|
||||
|
||||
////////////////////////////////
|
||||
@ -32,13 +34,13 @@ S_Tag S_TagFromResource(R_Tag resource)
|
||||
|
||||
S_Texture *S_TextureFromTagAwait(S_Tag tag)
|
||||
{
|
||||
S_Texture *result = ZI;
|
||||
S_Texture *result = &S_NilTexture;
|
||||
return result;
|
||||
}
|
||||
|
||||
S_Texture *S_TextureFromTagAsync(S_Tag tag)
|
||||
{
|
||||
S_Texture *result = ZI;
|
||||
S_Texture *result = &S_NilTexture;
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -47,13 +49,13 @@ S_Texture *S_TextureFromTagAsync(S_Tag tag)
|
||||
|
||||
S_Sheet *S_SheetFromTagAwait(S_Tag tag)
|
||||
{
|
||||
S_Sheet *result = ZI;
|
||||
S_Sheet *result = &S_NilSheet;
|
||||
return result;
|
||||
}
|
||||
|
||||
S_Sheet *S_SheetFromTagAsync(S_Tag tag)
|
||||
{
|
||||
S_Sheet *result = ZI;
|
||||
S_Sheet *result = &S_NilSheet;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@ -18,6 +18,8 @@ Struct(S_Texture)
|
||||
u32 height;
|
||||
};
|
||||
|
||||
extern Readonly S_Texture S_NilTexture;
|
||||
|
||||
////////////////////////////////
|
||||
//~ Sheet types
|
||||
|
||||
@ -89,6 +91,8 @@ Struct(S_Sheet)
|
||||
Dict *slice_groups_dict;
|
||||
};
|
||||
|
||||
extern Readonly S_Sheet S_NilSheet;
|
||||
|
||||
////////////////////////////////
|
||||
//~ Shared state
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user