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