From 6411af15a664a1bc4e8c3dfcc6f2ea19e178cbd7 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Tue, 13 May 2025 23:17:25 -0400 Subject: [PATCH] Finished V1 --- build.ps1 | 51 +- demo.str_cache.c | 220 +- demo.str_cache.listing.txt | 12019 +++++++++++++++++++++++++++++++++++ 3 files changed, 12189 insertions(+), 101 deletions(-) create mode 100644 demo.str_cache.listing.txt diff --git a/build.ps1 b/build.ps1 index d8d7616..2c30d3b 100644 --- a/build.ps1 +++ b/build.ps1 @@ -5,27 +5,28 @@ if ($IsWindows) { } # https://learn.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-by-category?view=msvc-170 -$flag_all_c = '/TC' +$flag_all_c = '/TC' $flag_c11 = '/std:c11' $flag_all_cpp = '/TP' -$flag_compile = '/c' +$flag_compile = '/c' +$flag_charset_utf8 = '/utf-8' $flag_debug = '/Zi' -$flag_define = '/D' -$flag_exceptions_disabled = '/EHsc-' -$flag_RTTI_disabled = '/GR-' +$flag_define = '/D' +$flag_exceptions_disabled = '/EHsc-' +$flag_RTTI_disabled = '/GR-' $flag_include = '/I' $flag_full_src_path = '/FC' $flag_nologo = '/nologo' -$flag_dll = '/LD' -$flag_dll_debug = '/LDd' -$flag_linker = '/link' +$flag_dll = '/LD' +$flag_dll_debug = '/LDd' +$flag_linker = '/link' # $flag_link_lib = '/lib' $flag_link_dll = '/DLL' -$flag_link_no_incremental = '/INCREMENTAL:NO' -$flag_link_mapfile = '/MAP:' +$flag_link_no_incremental = '/INCREMENTAL:NO' +$flag_link_mapfile = '/MAP:' $flag_link_optimize_references = '/OPT:REF' -$flag_link_win_debug = '/DEBUG' -$flag_link_win_pdb = '/PDB:' +$flag_link_win_debug = '/DEBUG' +$flag_link_win_pdb = '/PDB:' $flag_link_win_machine_32 = '/MACHINE:X86' $flag_link_win_machine_64 = '/MACHINE:X64' $flag_link_win_path_output = '/OUT:' @@ -35,12 +36,12 @@ $flag_link_win_rt_static = '/MT' $flag_link_win_rt_static_debug = '/MTd' $flag_link_win_subsystem_console = '/SUBSYSTEM:CONSOLE' $flag_link_win_subsystem_windows = '/SUBSYSTEM:WINDOWS' -$flag_no_optimization = '/Od' -$flag_optimize_fast = '/O2' -$flag_optimize_size = '/O1' -$flag_optimize_intrinsics = '/Oi' +$flag_no_optimization = '/Od' +$flag_optimize_fast = '/O2' +$flag_optimize_size = '/O1' +$flag_optimize_intrinsics = '/Oi' $flag_optimized_debug_forceinline = '/d2Obforceinline' -$flag_optimized_debug = '/Zo' +$flag_optimized_debug = '/Zo' $flag_preprocess_to_file = '/P' $flag_preprocess_preserve_comments = '/C' # $flag_out_name = '/OUT:' @@ -49,10 +50,10 @@ $flag_path_debug = '/Fd' $flag_path_output = '/Fe' $flag_preprocess_conform = '/Zc:preprocessor' $flag_updated_cpp_macro = "/Zc:__cplusplus" -$flag_set_stack_size = '/F' -$flag_syntax_only = '/Zs' -$flag_wall = '/Wall' -$flag_warnings_as_errors = '/WX' +$flag_set_stack_size = '/F' +$flag_syntax_only = '/Zs' +$flag_wall = '/Wall' +$flag_warnings_as_errors = '/WX' $flag_lib_list = '/LIST' $archiver = 'lib' @@ -77,13 +78,15 @@ $compiler_args += $flag_exceptions_disabled $compiler_args += $flag_RTTI_disabled $compiler_args += $flag_preprocess_conform +# Set charset encoding for both execution and source to UTF-8 + # Dump preprocess file if ($false) { $compiler_args += $flag_preprocess_to_file $compiler_args += $flag_preprocess_preserve_comments } -# Diagnostic loggign +# Diagnostic logging $compiler_args += $flag_full_src_path # Specifing output pathing @@ -105,7 +108,7 @@ $unit = join-path $PSScriptRoot 'demo.str_cache.c' $compiler_args += $flag_compile, $unit # Diagnoistc print for the args -$compiler_args | ForEach-Object { Write-Host $_ } +# $compiler_args | ForEach-Object { Write-Host $_ } write-host # $compiler_args += ( $flag_define + 'DEMO_STR_SLICE' ) @@ -134,7 +137,7 @@ if ($true) { $linker_args += $object # Diagnoistc print for the args - $linker_args | ForEach-Object { Write-Host $_ } + # $linker_args | ForEach-Object { Write-Host $_ } write-host & $linker $linker_args diff --git a/demo.str_cache.c b/demo.str_cache.c index 26a6e30..2959dec 100644 --- a/demo.str_cache.c +++ b/demo.str_cache.c @@ -19,20 +19,26 @@ to see definitions related to a sepecific kind of data or operation (strings, me #if 0 int main() { - VArena cache_arena; varena_init(cache_arena); - StrCache cache = strcache_init(varena_ainfo(cache)); + // This will limit for our V1 read to 64kb at most. + FMem_128KB read_mem = {0}; + FileOpResult read_res = file_read_contents(lit("demo.str_cache.c"), .backing = fmem_slice(read_mem) ); - VArena file_arena; varena_init(file_arena); - Str8 path_text = lit("../demo.strcache.c"); - FileContent text_file = file_read_contents(varena_ainfo(file_arena), path_text); + // This will limit our V1 lex to only 8 megs worth of token tracking on a file. + SliceByte mem_toks = slicemem_alloc(MEGABYTES(16)); + WATL_LexInfo lex_res = watl_lex(pcast(Str8, read_res.content), .pool_toks = mem_toks); - Arena ast_arena; arena_init(ast_arena); + SliceByte mem_cache_strs = slicemem_alloc(MEGABYTES(64)); + SliceByte mem_cache_slots = slicemem_alloc(1024 * 1024 * 16 * size_of(Str8Cache_SliceSlot)); + SliceByte mem_cache_table = slicemem_alloc(1024 * 16 * size_of(Str8Cache_SliceSlot)); + Str8Cache str_cache = str8cache_init(mem_cache_strs, mem_cache_slots, mem_cache_table); - WATL_ParseOps ops = { .str_cache = &cache, .node_backing = arena_ainfo(ast_arena) } - WATL_ParsedInfo parsed = watl_parse(text_file.content, ops); + SliceByte mem_parse_nodes = slicemem_alloc(MEGABYTES(4)); + SliceByte mem_parse_lines = slicemem_alloc(MEGABYTES(4)); + WATL_ParseInfo parse_res = watl_parse(lex_res.tokens, .backing_nodes = mem_parse_nodes, .backing_lines = mem_parse_lines, .str_cache = & str_cache); - watl_dbg_dump(parsed.root); - strcache_dbg_listing(cache); + SliceByte scratch_dmp = slicemem_alloc(MEGABYTES(16)); + Str8 listing = watl_dump_listing(scratch_dmp, parse_res.lines); + file_write_str8(lit("demo.str_cache.listing.txt"), listing); return 0; } #endif @@ -57,8 +63,6 @@ Secondarily for the purposes of using the above sufficiently the following are a * Read/Write Files * Lexing & Parsing * Debug printing - -TODO(Ed): Do we introduce gencpp in this? */ /* @@ -108,7 +112,7 @@ typedef S32 B32; // Functional style cast #define cast(type, data) ((type)(data)) -#define pcast(type, data) * cast(type*, & data) +#define pcast(type, data) * cast(type*, & (data)) #define nullptr cast(void*, 0) @@ -116,7 +120,7 @@ typedef S32 B32; #define glue(A, B) glue_(A,B) // Enforces size querying uses SSIZE type. -#define size_of(data) cast(SSIZE, sizeof(data)) +#define size_of(data) cast(SSIZE, sizeof(data) ) #define stringify_(S) #S #define stringify(S) stringify_(S) @@ -306,7 +310,11 @@ void slice__zero(SliceByte mem, SSIZE typewidth) { // Now for our "Version 1" -#if defined(DEMO__FILE_READ_CONTENTS_V1) || defined(DEMO__WATL_LEX_V1) || defined(DEMO__WATL_PARSE_V1) || defined(DEMO__WATL_DUMP_PREREQ_V1) || defined(DEMO__WATL_DUMP_V1) +#if defined(DEMO__FILE_READ_CONTENTS_V1) || \ + defined(DEMO__WATL_LEX_V1) || \ + defined(DEMO__WATL_PARSE_V1) || \ + defined(DEMO__WATL_DUMP_PREREQ_V1) || \ + defined(DEMO__WATL_DUMP_V1) struct FileOpResult { @@ -406,8 +414,6 @@ FileOpResult file__read_contents(Str8 path, Opts__read_file_contents* opts) { #ifdef DEMO__FILE_READ_CONTENTS_V1 int main() { - set_utf8_codepage(); - // This will limit for our V1 read to 64kb at most. FMem_64KB read_mem = {0}; FileOpResult res = file_read_contents(lit("demo.str_cache.c"), .backing = fmem_slice(read_mem) ); @@ -534,7 +540,10 @@ inline void farena_reset(FArena* arena) { arena->used = 0; } inline ArenaSP farena_save (FArena arena) { ArenaSP savepoint; savepoint.ptr = arena.start; return savepoint; } #pragma endregion FArena -#if defined(DEMO__WATL_LEX_V1) || defined(DEMO__WATL_PARSE_V1) || defined(DEMO__WATL_DUMP_PREREQ_V1) || defined(DEMO__WATL_DUMP_V1) +#if defined(DEMO__WATL_LEX_V1) || \ + defined(DEMO__WATL_PARSE_V1) || \ + defined(DEMO__WATL_DUMP_PREREQ_V1) || \ + defined(DEMO__WATL_DUMP_V1) struct WATL_LexInfo { // For now just the tokens @@ -544,8 +553,10 @@ struct WATL_LexInfo { struct Opts__watl_lex { /* For this operation we'll enforce that the arena must linearly allocate each token, forming a strictly adjacent sent of elements in an array. - This is not necessary and an equivalent process could be done where the tokens instead are semi-contigously organized into linked list with a chained arena, or the tokens are sparely cached. - Where their position in their originating string is not preserved. In this case we're keeping it simple. Tokens are in the same block of memory and they don't use a string cache. + This is not necessary and an equivalent process could be done where the tokens instead are semi-contigously organized into linked list with a chained arena, + or the tokens are sparely cached. + Where their position in their originating string is not preserved. In this case we're keeping it simple. + Tokens are in the same block of memory and they don't use a string cache. */ SliceByte pool_toks; }; @@ -649,8 +660,6 @@ void slicemem_free(SliceByte mem) { #ifdef DEMO__WATL_LEX_V1 int main() { - set_utf8_codepage(); - // This will limit for our V1 read to 64kb at most. FMem_64KB read_mem = {0}; FileOpResult read_res = file_read_contents(lit("demo.str_cache.c"), .backing = fmem_slice(read_mem) ); @@ -930,8 +939,6 @@ WATL_ParseInfo watl__parse(WATL_SliceTok tokens, Opts__watl_parse* opts) { WATL_ #ifdef DEMO__WATL_PARSE_V1 int main() { - set_utf8_codepage(); - // This will limit for our V1 read to 64kb at most. FMem_64KB read_mem = {0}; FileOpResult read_res = file_read_contents(lit("demo.str_cache.c"), .backing = fmem_slice(read_mem) ); @@ -1117,18 +1124,18 @@ Str8 fmt__vtoken(SliceByte backing_tbl, SliceByte backing_buf, Str8 fmt_template entry->value = * token; ++ table.len; } - Str8 result = fmt_vtoken_slice(backing_buf, table, fmt_template); + Str8 result = fmt_vtoken_slice(backing_buf, table, fmt_template); return result; } // Expected to take a Str8 array of entries formatted as a 2D array of key-value pairs (Str8[length][2]) // The array will be tracked using a SliceStr8 structure. -#define fmt_vtoken(backing_tbl, backing_buf, fmt_template, tokens) \ -fmt__vtoken(backing_tbl, backing_buf, lit(fmt_template), \ - &(SliceStr8){ \ - .ptr = cast(Str8*, ((Str8[])tokens)), \ - .len = size_of( ((Str8[])tokens)) / size_of(Str8) \ - } \ +#define fmt_vtoken(backing_tbl, backing_buf, fmt_template, ...) \ +fmt__vtoken(backing_tbl, backing_buf, lit(fmt_template), \ + &(SliceStr8){ \ + .ptr = (Str8[]){ __VA_ARGS__ }, \ + .len = (SSIZE)sizeof( (Str8[]){ __VA_ARGS__ } ) / size_of(Str8) \ + } \ ) #pragma endregion fmt_vtoken @@ -1137,15 +1144,16 @@ void str8gen__append_fmt(Str8Gen* gen, Str8 fmt_template, SliceStr8* tokens) { local_persist FMem_64KB tbl_backing = {0}; SliceByte fmt_backing = {gen->ptr + gen->len, gen->backing.len - gen->len}; - fmt__vtoken(fmem_slice(tbl_backing), fmt_backing, fmt_template, tokens); + Str8 appended = fmt__vtoken(fmem_slice(tbl_backing), fmt_backing, fmt_template, tokens); + gen->len += appended.len; return; } -#define str8gen_append_fmt(gen, fmt_template, tokens) \ -str8gen__append_fmt(& gen, lit(fmt_template), \ - &(SliceStr8){ \ - .ptr = cast(Str8*, ((Str8[])tokens)), \ - .len = size_of( ((Str8[])tokens)) / size_of(Str8) \ - } \ +#define str8gen_append_fmt(gen, fmt_template, ...) \ +str8gen__append_fmt(& gen, lit(fmt_template), \ + &(SliceStr8){ \ + .ptr = (Str8[]){ __VA_ARGS__ }, \ + .len = (SSIZE)sizeof( (Str8[]){ __VA_ARGS__ } ) / size_of(Str8) \ + } \ ) /* @@ -1155,24 +1163,22 @@ Str8 mappings [][2] = { ^^ Add entries as above ^^ } */ -#define fmt_entry(key, value) lit(key), lit(value) +#define fmt_entry(key, value) lit(key), value #ifdef DEMO__WATL_DUMP_PREREQ_V1 int main() { - set_utf8_codepage(); - local_persist FMem_64KB tbl_scratch; SliceByte fmt_scratch = slicemem_alloc(MEGABYTES(8)); - Str8 test_str = fmt_vtoken(fmem_slice(tbl_scratch), fmt_scratch, "Will this work? ", { - fmt_entry("maybe_sub", "IT SUBST!!!") - }); + Str8 test_str = fmt_vtoken(fmem_slice(tbl_scratch), fmt_scratch, "Will this work? ", + fmt_entry("maybe_sub", lit("IT SUBST!!!")) + ); SliceByte scratchgen = slicemem_alloc(MEGABYTES(16)); Str8Gen gen = str8gen_make(scratchgen); - str8gen_append_fmt(gen, "Testing now with Str8Gen!! !", { - fmt_entry("maybe_sub", "lets fucking go!!!") - }); + str8gen_append_fmt(gen, "Testing now with Str8Gen!! !", + fmt_entry("maybe_sub", lit("lets fucking go!!!")) + ); return 0; } #endif @@ -1180,15 +1186,40 @@ int main() /* We'll need to do some integer serialization for our dump listing's metrics. */ + +inline B32 char_is_upper(U8 c) { return('A' <= c && c <= 'Z'); } +inline U8 char_to_lower(U8 c) { if (char_is_upper(c)) { c += ('a' - 'A'); } return(c); } + +inline +U8 integer_symbols(U8 value) { + local_persist + U8 lookup_table[16] = { + '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F', + }; + return lookup_table[value]; +} + Str8 str8_from_u32(SliceByte mem, U32 num, U32 radix, U8 min_digits, U8 digit_group_separator) { Str8 result = {.ptr = mem.ptr, .len = 0}; Str8 prefix = {0}; switch (radix) { - case 16:{prefix = lit("0x");}break; - case 8: {prefix = lit("0o");}break; - case 2: {prefix = lit("0b");}break; + case 16: { prefix = lit("0x"); } break; + case 8: { prefix = lit("0o"); } break; + case 2: { prefix = lit("0b"); } break; + } + + U8 digit_group_size = 3; + switch (radix) + { + default: break; + case 2: + case 8: + case 16: { + digit_group_size = 4; + } + break; } U32 needed_leading_zeros = 0; @@ -1210,12 +1241,57 @@ Str8 str8_from_u32(SliceByte mem, U32 num, U32 radix, U8 min_digits, U8 digit_gr U32 needed_separators = 0; if (digit_group_separator != 0) { - + needed_separators = (needed_digits + needed_leading_zeros) / digit_group_size; + if (needed_separators > 0 && (needed_digits + needed_leading_zeros) % digit_group_size == 0) { + needed_separators -= 1; + } } + + result.len = prefix.len + needed_leading_zeros + needed_separators + needed_digits; + assert(result.len <= mem.len); + } + + // Fill Content + { + U32 num_reduce = num; + U32 digits_until_separator = digit_group_size; + for (U32 idx = 0; idx < result.len; idx += 1) + { + SSIZE separator_pos = result.len - idx - 1; + if (digits_until_separator == 0 && digit_group_separator != 0) { + result.ptr[separator_pos] = digit_group_separator; + digits_until_separator = digit_group_size + 1; + } + else { + result.ptr[separator_pos] = char_to_lower(integer_symbols(num_reduce % radix)); + num_reduce /= radix; + } + digits_until_separator -= 1; + if (num_reduce == 0) { + break; + } + } + for (U32 leading_0_idx = 0; leading_0_idx < needed_leading_zeros; leading_0_idx += 1) { + result.ptr[prefix.len + leading_0_idx] = '0'; + } + } + // Fill Prefix + if (prefix.len > 0) { + slice_copy(result, prefix); } return result; } +// Utilized for file_write_str8: +#if 0 +BOOL WriteFile( + [in] HANDLE hFile, + [in] LPCVOID lpBuffer, + [in] DWORD nNumberOfBytesToWrite, + [out, optional] LPDWORD lpNumberOfBytesWritten, + [in, out, optional] LPOVERLAPPED lpOverlapped +); +#endif /* Lastly: Writting to file using the Win API. */ @@ -1262,44 +1338,36 @@ We now have what we need to create the structural listing dump for WATL's data s Str8 watl_dump_listing(SliceByte buffer, WATL_SliceLine lines) { local_persist FMem_64KB scratch = {0}; + FArena sarena = farena_init(fmem_slice(scratch)); Str8Gen result = str8gen_make(buffer); U32 line_num = 0; for (slice_iter(lines, line)) { - #define fmt_entry_u32(label, num) lit(label), str8_from_u32(fmem_slice(scratch), num, 10, 0, 0) + #define push_str8_u32() (SliceByte){ farena__push(& sarena, size_of(UTF8), 64, lit("UTF8")), 64 } + #define fmt_entry_u32(label, num) lit(label), str8_from_u32(push_str8_u32(), num, 10, 0, 0) ++ line_num; - str8gen_append_fmt(result, "Line - Chunks :\n", {( - fmt_entry_u32("line_num", line_num) - , fmt_entry_u32("chunk_num", line->len) - )}); + str8gen_append_fmt(result, "Line - Chunks :\n" + , fmt_entry("line_num", str8_from_u32(push_str8_u32(), line_num, 10, 0, 0)) + , fmt_entry("chunk_num", str8_from_u32(push_str8_u32(), line->len, 10, 0, 0)) + ); for (slice_iter(* line, chunk)) { - str8gen_append_str8(& result, lit("\t")); Str8 id; switch (* chunk->ptr) { - case WATL_Tok_Space: - id = lit("Space"); - break; - - case WATL_Tok_Tab: - id = lit("Tab"); - break; - - default: - id = lit("Visible"); - break; + case WATL_Tok_Space: id = lit("Space"); break; + case WATL_Tok_Tab: id = lit("Tab"); break; + default: id = lit("Visible"); break; } - - str8gen_append_fmt(result, "(): ''", {( - lit("id"), id + str8gen_append_fmt(result, "\t(): ''\n" + , fmt_entry("id", id) , fmt_entry_u32("size", chunk->len) - , lit("spaces"), * chunk - )}); - - str8gen_append_str8(& result, lit("\n")); + , fmt_entry("chunk", * chunk) + ); } + farena_reset(& sarena); + #undef push_str8_u32 #undef fmt_entry_u32 } return (Str8){ result.ptr, result.len }; @@ -1308,8 +1376,6 @@ Str8 watl_dump_listing(SliceByte buffer, WATL_SliceLine lines) #ifdef DEMO__WATL_DUMP_V1 int main() { - set_utf8_codepage(); - // This will limit for our V1 read to 64kb at most. FMem_128KB read_mem = {0}; FileOpResult read_res = file_read_contents(lit("demo.str_cache.c"), .backing = fmem_slice(read_mem) ); diff --git a/demo.str_cache.listing.txt b/demo.str_cache.listing.txt new file mode 100644 index 0000000..8cba381 --- /dev/null +++ b/demo.str_cache.listing.txt @@ -0,0 +1,12019 @@ +Line 1 - Chunks 1: + Visible(2): '/*' +Line 2 - Chunks 17: + Visible(1): 'A' + Space(1): ' ' + Visible(12): 'introduction' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'C11' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(3): 'str' + Space(1): ' ' + Visible(5): 'cache' + Space(1): ' ' + Visible(5): 'demo.' +Line 3 - Chunks 37: + Visible(10): 'Attempting' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(8): 'showcase' + Space(1): ' ' + Visible(6): 'better' + Space(1): ' ' + Visible(11): 'conventions' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(10): 'constructs' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(2): 'C;' + Space(1): ' ' + Visible(10): 'Discovered' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(2): 'me' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(4): '2025' + Space(1): ' ' + Visible(4): 'from' + Space(1): ' ' + Visible(8): 'scouring' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'internet.' +Line 4 - Chunks 1: + Visible(2): '*/' +Line 5 - Chunks 0: +Line 6 - Chunks 1: + Visible(2): '/*' +Line 7 - Chunks 17: + Visible(3): 'The' + Space(1): ' ' + Visible(5): 'below' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(11): 'implemented' + Space(1): ' ' + Visible(6): 'within' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(6): 'single' + Space(1): ' ' + Visible(5): 'file.' +Line 8 - Chunks 37: + Visible(7): 'Because' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(5): 'this,' + Space(1): ' ' + Visible(11): 'definitions' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(4): 'kept' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(12): 'need-to-have' + Space(1): ' ' + Visible(5): 'basis' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(6): 'target' + Space(1): ' ' + Visible(4): 'only' + Space(1): ' ' + Visible(3): 'one' + Space(1): ' ' + Visible(6): 'vendor' + Space(1): ' ' + Visible(6): 'target' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(10): 'toolchain.' +Line 9 - Chunks 33: + Visible(2): 'We' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(3): 'not' + Space(1): ' ' + Visible(3): 'use' + Space(1): ' ' + Visible(6): 'nearly' + Space(1): ' ' + Visible(3): 'any' + Space(1): ' ' + Visible(9): 'libraries' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(9): 'targeting' + Space(1): ' ' + Visible(4): 'only' + Space(1): ' ' + Visible(7): 'Windows' + Space(1): ' ' + Visible(2): '11' + Space(1): ' ' + Visible(3): 'x64' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(5): 'MSVC.' +Line 10 - Chunks 0: +Line 11 - Chunks 47: + Visible(4): 'Even' + Space(1): ' ' + Visible(2): 'so' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(10): 'constructs' + Space(1): ' ' + Visible(7): 'defined' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(5): 'their' + Space(1): ' ' + Visible(12): 'dependencies' + Space(1): ' ' + Visible(3): 'can' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(8): 'properly' + Space(1): ' ' + Visible(10): 'abstracted' + Space(1): ' ' + Visible(4): 'into' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(9): 'ergonomic' + Space(1): ' ' + Visible(7): 'library' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(8): 'multiple' + Space(1): ' ' + Visible(7): 'targets' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(6): 'enough' + Space(1): ' ' + Visible(4): 'time' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(5): 'pain.' +Line 12 - Chunks 49: + Visible(3): 'The' + Space(1): ' ' + Visible(10): 'difference' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(4): 'just' + Space(1): ' ' + Visible(4): 'more' + Space(1): ' ' + Visible(10): 'preprocess' + Space(1): ' ' + Visible(13): 'conditionals,' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(3): 'how' + Space(1): ' ' + Visible(3): 'far' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'library' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(6): 'trying' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(7): 'support' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'larger' + Space(1): ' ' + Visible(5): 'range' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(7): 'targets' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(5): 'their' + Space(1): ' ' + Visible(3): 'age' + Space(1): ' ' + Visible(11): 'discrpancy.' +Line 13 - Chunks 11: + Visible(3): 'The' + Space(1): ' ' + Visible(4): 'more' + Space(1): ' ' + Visible(7): 'minimal' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'less' + Space(1): ' ' + Visible(6): 'cruft.' +Line 14 - Chunks 0: +Line 15 - Chunks 35: + Visible(11): 'Definitions' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(7): 'defined' + Space(1): ' ' + Visible(8): 'linearly' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(9): 'on-demand' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(7): 'needed.' + Space(1): ' ' + Visible(5): 'Since' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(4): 'read' + Space(1): ' ' + Visible(9): 'linearly.' +Line 16 - Chunks 33: + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'cause' + Space(1): ' ' + Visible(15): 'non-categorical' + Space(1): ' ' + Visible(12): 'organization' + Space(1): ' ' + Visible(2): 'so' + Space(1): ' ' + Visible(2): 'it' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(4): 'more' + Space(1): ' ' + Visible(9): 'difficult' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'sift' + Space(1): ' ' + Visible(7): 'through' + Space(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(3): 'you' + Space(1): ' ' + Visible(6): 'wanted' +Line 17 - Chunks 29: + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'see' + Space(1): ' ' + Visible(11): 'definitions' + Space(1): ' ' + Visible(7): 'related' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(9): 'sepecific' + Space(1): ' ' + Visible(4): 'kind' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(4): 'data' + Space(1): ' ' + Visible(2): 'or' + Space(1): ' ' + Visible(9): 'operation' + Space(1): ' ' + Visible(9): '(strings,' + Space(1): ' ' + Visible(7): 'memory,' + Space(1): ' ' + Visible(5): 'etc).' +Line 18 - Chunks 1: + Visible(2): '*/' +Line 19 - Chunks 3: + Visible(3): '#if' + Space(1): ' ' + Visible(1): '0' +Line 20 - Chunks 3: + Visible(3): 'int' + Space(1): ' ' + Visible(6): 'main()' +Line 21 - Chunks 1: + Visible(1): '{' +Line 22 - Chunks 24: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'limit' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(4): 'read' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): '64kb' + Space(1): ' ' + Visible(2): 'at' + Space(1): ' ' + Visible(5): 'most.' +Line 23 - Chunks 8: + Tab(1): ' ' + Visible(10): 'FMem_128KB' + Space(3): ' ' + Visible(8): 'read_mem' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 24 - Chunks 16: + Tab(1): ' ' + Visible(12): 'FileOpResult' + Space(1): ' ' + Visible(8): 'read_res' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(43): 'file_read_contents(lit("demo.str_cache.c"),' + Space(1): ' ' + Visible(8): '.backing' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'fmem_slice(read_mem)' + Space(1): ' ' + Visible(2): ');' +Line 25 - Chunks 0: +Line 26 - Chunks 36: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'limit' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(3): 'lex' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'only' + Space(1): ' ' + Visible(1): '8' + Space(1): ' ' + Visible(4): 'megs' + Space(1): ' ' + Visible(5): 'worth' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(8): 'tracking' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'file.' +Line 27 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(4): ' ' + Visible(8): 'mem_toks' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'slicemem_alloc(MEGABYTES(16));' +Line 28 - Chunks 16: + Tab(1): ' ' + Visible(12): 'WATL_LexInfo' + Space(1): ' ' + Visible(7): 'lex_res' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'watl_lex(pcast(Str8,' + Space(1): ' ' + Visible(18): 'read_res.content),' + Space(1): ' ' + Visible(10): '.pool_toks' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'mem_toks);' +Line 29 - Chunks 0: +Line 30 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(14): 'mem_cache_strs' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'slicemem_alloc(MEGABYTES(64));' +Line 31 - Chunks 20: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_cache_slots' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(19): 'slicemem_alloc(1024' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(4): '1024' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(2): '16' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(30): 'size_of(Str8Cache_SliceSlot));' +Line 32 - Chunks 16: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_cache_table' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(19): 'slicemem_alloc(1024' + Space(8): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(2): '16' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(30): 'size_of(Str8Cache_SliceSlot));' +Line 33 - Chunks 12: + Tab(1): ' ' + Visible(9): 'Str8Cache' + Space(1): ' ' + Visible(9): 'str_cache' + Space(7): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'str8cache_init(mem_cache_strs,' + Space(1): ' ' + Visible(16): 'mem_cache_slots,' + Space(1): ' ' + Visible(17): 'mem_cache_table);' +Line 34 - Chunks 0: +Line 35 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_parse_nodes' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'slicemem_alloc(MEGABYTES(4));' +Line 36 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_parse_lines' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'slicemem_alloc(MEGABYTES(4));' +Line 37 - Chunks 28: + Tab(1): ' ' + Visible(14): 'WATL_ParseInfo' + Space(1): ' ' + Visible(9): 'parse_res' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(26): 'watl_parse(lex_res.tokens,' + Space(1): ' ' + Visible(14): '.backing_nodes' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(16): 'mem_parse_nodes,' + Space(1): ' ' + Visible(14): '.backing_lines' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(16): 'mem_parse_lines,' + Space(1): ' ' + Visible(10): '.str_cache' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(11): 'str_cache);' +Line 38 - Chunks 0: +Line 39 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(11): 'scratch_dmp' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'slicemem_alloc(MEGABYTES(16));' +Line 40 - Chunks 10: + Tab(1): ' ' + Visible(4): 'Str8' + Space(6): ' ' + Visible(7): 'listing' + Space(5): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'watl_dump_listing(scratch_dmp,' + Space(1): ' ' + Visible(17): 'parse_res.lines);' +Line 41 - Chunks 4: + Tab(1): ' ' + Visible(50): 'file_write_str8(lit("demo.str_cache.listing.txt"),' + Space(1): ' ' + Visible(9): 'listing);' +Line 42 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(2): '0;' +Line 43 - Chunks 1: + Visible(1): '}' +Line 44 - Chunks 1: + Visible(6): '#endif' +Line 45 - Chunks 0: +Line 46 - Chunks 5: + Visible(2): '//' + Space(1): ' ' + Visible(4): 'Demo' + Space(1): ' ' + Visible(9): 'selection' +Line 47 - Chunks 5: + Visible(2): '//' + Space(1): ' ' + Visible(7): '#define' + Space(1): ' ' + Visible(15): 'DEMO__STR_SLICE' +Line 48 - Chunks 5: + Visible(2): '//' + Space(1): ' ' + Visible(7): '#define' + Space(1): ' ' + Visible(27): 'DEMO__FILE_READ_CONTENTS_V1' +Line 49 - Chunks 5: + Visible(2): '//' + Space(1): ' ' + Visible(7): '#define' + Space(1): ' ' + Visible(17): 'DEMO__WATL_LEX_V1' +Line 50 - Chunks 5: + Visible(2): '//' + Space(1): ' ' + Visible(7): '#define' + Space(1): ' ' + Visible(19): 'DEMO__WATL_PARSE_V1' +Line 51 - Chunks 5: + Visible(2): '//' + Space(1): ' ' + Visible(7): '#define' + Space(1): ' ' + Visible(25): 'DEMO__WATL_DUMP_PREREQ_V1' +Line 52 - Chunks 3: + Visible(7): '#define' + Space(1): ' ' + Visible(18): 'DEMO__WATL_DUMP_V1' +Line 53 - Chunks 0: +Line 54 - Chunks 1: + Visible(2): '/*' +Line 55 - Chunks 27: + Visible(3): 'The' + Space(1): ' ' + Visible(5): 'above' + Space(1): ' ' + Visible(5): 'makes' + Space(1): ' ' + Visible(3): 'use' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'following' + Space(1): ' ' + Visible(4): 'core' + Space(1): ' ' + Visible(8): 'concepts' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(7): 'achieve' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(3): 'net' + Space(1): ' ' + Visible(7): 'result:' +Line 56 - Chunks 3: + Visible(1): '*' + Space(1): ' ' + Visible(6): 'Slices' +Line 57 - Chunks 3: + Visible(1): '*' + Space(1): ' ' + Visible(6): 'Arenas' +Line 58 - Chunks 9: + Visible(1): '*' + Space(1): ' ' + Visible(7): 'Generic' + Space(1): ' ' + Visible(7): 'Runtime' + Space(1): ' ' + Visible(9): 'Allocator' + Space(1): ' ' + Visible(9): 'Interface' +Line 59 - Chunks 3: + Visible(1): '*' + Space(1): ' ' + Visible(7): 'Hashing' +Line 60 - Chunks 0: +Line 61 - Chunks 27: + Visible(11): 'Secondarily' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(8): 'purposes' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'above' + Space(1): ' ' + Visible(12): 'sufficiently' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'following' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(4): 'also' + Space(1): ' ' + Visible(9): 'utilized:' +Line 62 - Chunks 7: + Visible(1): '*' + Space(1): ' ' + Visible(7): 'Virtual' + Space(1): ' ' + Visible(7): 'Address' + Space(1): ' ' + Visible(5): 'Space' +Line 63 - Chunks 5: + Visible(1): '*' + Space(1): ' ' + Visible(10): 'Read/Write' + Space(1): ' ' + Visible(5): 'Files' +Line 64 - Chunks 7: + Visible(1): '*' + Space(1): ' ' + Visible(6): 'Lexing' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(7): 'Parsing' +Line 65 - Chunks 5: + Visible(1): '*' + Space(1): ' ' + Visible(5): 'Debug' + Space(1): ' ' + Visible(8): 'printing' +Line 66 - Chunks 1: + Visible(2): '*/' +Line 67 - Chunks 0: +Line 68 - Chunks 1: + Visible(2): '/*' +Line 69 - Chunks 25: + Visible(5): 'First' + Space(1): ' ' + Visible(5): 'thing' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(9): 'problably' + Space(1): ' ' + Visible(4): 'want' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(3): 'way' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'deal' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(4): 'text' + Space(1): ' ' + Visible(12): 'effectively.' +Line 70 - Chunks 25: + Visible(2): 'So' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(5): 'setup' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'minimum' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(4): 'that' + Space(1): ' ' + Visible(4): 'when' + Space(1): ' ' + Visible(7): 'dealing' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(9): 'immutable' + Space(1): ' ' + Visible(11): 'constructs.' +Line 71 - Chunks 1: + Visible(2): '*/' +Line 72 - Chunks 0: +Line 73 - Chunks 25: + Visible(2): '//' + Space(1): ' ' + Visible(5): 'We'll' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(4): 'some' + Space(1): ' ' + Visible(7): 'minimum' + Space(1): ' ' + Visible(3): 'set' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(12): 'dependencies' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(10): 'adequately' + Space(1): ' ' + Visible(6): 'define' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(11): 'constructs.' +Line 74 - Chunks 9: + Visible(2): '//' + Space(1): ' ' + Visible(8): 'ASSUMING' + Space(1): ' ' + Visible(6): 'MODERN' + Space(1): ' ' + Visible(4): 'MSVC' + Space(1): ' ' + Visible(10): 'TOOLCHAIN.' +Line 75 - Chunks 0: +Line 76 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(10): '' +Line 77 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(13): '' +Line 78 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(13): '' +Line 79 - Chunks 0: +Line 80 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(10): '' +Line 81 - Chunks 0: +Line 82 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(8): 'unsigned' + Space(1): ' ' + Visible(6): '__int8' + Space(2): ' ' + Visible(3): 'U8;' +Line 83 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'signed' + Space(3): ' ' + Visible(6): '__int8' + Space(2): ' ' + Visible(3): 'S8;' +Line 84 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(8): 'unsigned' + Space(1): ' ' + Visible(7): '__int16' + Space(1): ' ' + Visible(4): 'U16;' +Line 85 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'signed' + Space(3): ' ' + Visible(7): '__int16' + Space(1): ' ' + Visible(4): 'S16;' +Line 86 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(8): 'unsigned' + Space(1): ' ' + Visible(7): '__int32' + Space(1): ' ' + Visible(4): 'U32;' +Line 87 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'signed' + Space(3): ' ' + Visible(7): '__int32' + Space(1): ' ' + Visible(4): 'S32;' +Line 88 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(8): 'unsigned' + Space(1): ' ' + Visible(7): '__int64' + Space(1): ' ' + Visible(4): 'U64;' +Line 89 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'signed' + Space(3): ' ' + Visible(7): '__int64' + Space(1): ' ' + Visible(4): 'S64;' +Line 90 - Chunks 0: +Line 91 - Chunks 5: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'size_t' + Space(4): ' ' + Visible(6): 'USIZE;' +Line 92 - Chunks 5: + Visible(7): 'typedef' + Space(1): ' ' + Visible(9): 'ptrdiff_t' + Space(1): ' ' + Visible(6): 'SSIZE;' +Line 93 - Chunks 0: +Line 94 - Chunks 3: + Visible(4): 'enum' + Space(1): ' ' + Visible(1): '{' +Line 95 - Chunks 2: + Tab(1): ' ' + Visible(6): 'false,' +Line 96 - Chunks 2: + Tab(1): ' ' + Visible(5): 'true,' +Line 97 - Chunks 2: + Tab(1): ' ' + Visible(14): 'true_overflow,' +Line 98 - Chunks 1: + Visible(2): '};' +Line 99 - Chunks 5: + Visible(7): 'typedef' + Space(1): ' ' + Visible(2): 'S8' + Space(2): ' ' + Visible(3): 'B8;' +Line 100 - Chunks 5: + Visible(7): 'typedef' + Space(1): ' ' + Visible(3): 'S16' + Space(1): ' ' + Visible(4): 'B16;' +Line 101 - Chunks 5: + Visible(7): 'typedef' + Space(1): ' ' + Visible(3): 'S32' + Space(1): ' ' + Visible(4): 'B32;' +Line 102 - Chunks 0: +Line 103 - Chunks 13: + Visible(2): '//' + Space(1): ' ' + Visible(6): 'Common' + Space(1): ' ' + Visible(6): 'macros' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(3): 'use' + Space(1): ' ' + Visible(10): 'throughout' + Space(1): ' ' + Visible(5): 'this.' +Line 104 - Chunks 0: +Line 105 - Chunks 13: + Visible(7): '#define' + Space(1): ' ' + Visible(20): 'assert_bounds(point,' + Space(1): ' ' + Visible(6): 'start,' + Space(1): ' ' + Visible(4): 'end)' + Space(1): ' ' + Visible(2): 'do' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(1): '\' +Line 106 - Chunks 12: + Tab(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(9): 'pos_point' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'cast(USIZE,' + Space(1): ' ' + Visible(7): 'point);' + Space(5): ' ' + Visible(1): '\' +Line 107 - Chunks 12: + Tab(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(9): 'pos_start' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'cast(USIZE,' + Space(1): ' ' + Visible(7): 'start);' + Space(5): ' ' + Visible(1): '\' +Line 108 - Chunks 12: + Tab(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(7): 'pos_end' + Space(3): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'cast(USIZE,' + Space(1): ' ' + Visible(5): 'end);' + Space(7): ' ' + Visible(1): '\' +Line 109 - Chunks 8: + Tab(1): ' ' + Visible(16): 'assert(pos_start' + Space(1): ' ' + Visible(2): '<=' + Space(1): ' ' + Visible(11): 'pos_point);' + Space(11): ' ' + Visible(1): '\' +Line 110 - Chunks 8: + Tab(1): ' ' + Visible(16): 'assert(pos_point' + Space(1): ' ' + Visible(2): '<=' + Space(1): ' ' + Visible(9): 'pos_end);' + Space(13): ' ' + Visible(1): '\' +Line 111 - Chunks 3: + Visible(1): '}' + Space(1): ' ' + Visible(8): 'while(0)' +Line 112 - Chunks 0: +Line 113 - Chunks 7: + Visible(2): '//' + Space(1): ' ' + Visible(10): 'Functional' + Space(1): ' ' + Visible(5): 'style' + Space(1): ' ' + Visible(4): 'cast' +Line 114 - Chunks 7: + Visible(7): '#define' + Space(1): ' ' + Visible(10): 'cast(type,' + Space(1): ' ' + Visible(5): 'data)' + Space(2): ' ' + Visible(14): '((type)(data))' +Line 115 - Chunks 13: + Visible(7): '#define' + Space(1): ' ' + Visible(11): 'pcast(type,' + Space(1): ' ' + Visible(5): 'data)' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(11): 'cast(type*,' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(7): '(data))' +Line 116 - Chunks 0: +Line 117 - Chunks 7: + Visible(7): '#define' + Space(1): ' ' + Visible(7): 'nullptr' + Space(1): ' ' + Visible(11): 'cast(void*,' + Space(1): ' ' + Visible(2): '0)' +Line 118 - Chunks 0: +Line 119 - Chunks 11: + Visible(7): '#define' + Space(1): ' ' + Visible(8): 'glue_(A,' + Space(1): ' ' + Visible(2): 'B)' + Space(1): ' ' + Visible(1): 'A' + Space(1): ' ' + Visible(2): '##' + Space(1): ' ' + Visible(1): 'B' +Line 120 - Chunks 7: + Visible(7): '#define' + Space(1): ' ' + Visible(7): 'glue(A,' + Space(1): ' ' + Visible(2): 'B)' + Space(2): ' ' + Visible(10): 'glue_(A,B)' +Line 121 - Chunks 0: +Line 122 - Chunks 13: + Visible(2): '//' + Space(1): ' ' + Visible(8): 'Enforces' + Space(1): ' ' + Visible(4): 'size' + Space(1): ' ' + Visible(8): 'querying' + Space(1): ' ' + Visible(4): 'uses' + Space(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(5): 'type.' +Line 123 - Chunks 9: + Visible(7): '#define' + Space(1): ' ' + Visible(13): 'size_of(data)' + Space(1): ' ' + Visible(11): 'cast(SSIZE,' + Space(1): ' ' + Visible(12): 'sizeof(data)' + Space(1): ' ' + Visible(1): ')' +Line 124 - Chunks 0: +Line 125 - Chunks 5: + Visible(7): '#define' + Space(1): ' ' + Visible(13): 'stringify_(S)' + Space(1): ' ' + Visible(2): '#S' +Line 126 - Chunks 5: + Visible(7): '#define' + Space(1): ' ' + Visible(12): 'stringify(S)' + Space(2): ' ' + Visible(13): 'stringify_(S)' +Line 127 - Chunks 0: +Line 128 - Chunks 1: + Visible(2): '/*' +Line 129 - Chunks 17: + Visible(3): 'The' + Space(1): ' ' + Visible(5): 'first' + Space(1): ' ' + Visible(9): 'construct' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(7): 'utilize' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'String' + Space(1): ' ' + Visible(6): 'Slice.' +Line 130 - Chunks 41: + Visible(2): 'In' + Space(1): ' ' + Visible(6): 'modern' + Space(1): ' ' + Visible(11): 'programming' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'memory' + Space(1): ' ' + Visible(5): 'sizes' + Space(1): ' ' + Visible(9): 'utilized,' + Space(1): ' ' + Visible(2): 'it' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(4): 'more' + Space(1): ' ' + Visible(9): 'ergonomic' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(5): 'track' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'length' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(7): 'strings' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(5): 'their' + Space(1): ' ' + Visible(8): 'pointer.' +Line 131 - Chunks 43: + Visible(4): 'Most' + Space(1): ' ' + Visible(7): 'strings' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(3): 'not' + Space(1): ' ' + Visible(6): 'stored' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(4): 'some' + Space(1): ' ' + Visible(9): 'immutable' + Space(1): ' ' + Visible(5): 'table' + Space(1): ' ' + Visible(7): 'tracked' + Space(1): ' ' + Visible(11): 'statically,' + Space(1): ' ' + Visible(11): 'performance' + Space(1): ' ' + Visible(4): 'loss' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(5): 'doing' + Space(1): ' ' + Visible(2): 'so' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(9): 'negligble' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(6): 'modern' + Space(1): ' ' + Visible(8): 'hardware' + Space(1): ' ' + Visible(12): 'constraints.' +Line 132 - Chunks 1: + Visible(2): '*/' +Line 133 - Chunks 0: +Line 134 - Chunks 9: + Visible(2): '//' + Space(1): ' ' + Visible(5): 'UTF-8' + Space(1): ' ' + Visible(9): 'character' + Space(1): ' ' + Visible(8): 'encoding' + Space(1): ' ' + Visible(4): 'unit' +Line 135 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(8): 'unsigned' + Space(1): ' ' + Visible(4): 'char' + Space(1): ' ' + Visible(5): 'UTF8;' +Line 136 - Chunks 0: +Line 137 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(5): 'Str8;' +Line 138 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(1): '{' +Line 139 - Chunks 4: + Tab(1): ' ' + Visible(5): 'UTF8*' + Space(1): ' ' + Visible(4): 'ptr;' +Line 140 - Chunks 4: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(4): 'len;' +Line 141 - Chunks 1: + Visible(2): '};' +Line 142 - Chunks 0: +Line 143 - Chunks 25: + Visible(2): '//' + Space(1): ' ' + Visible(6): 'String' + Space(1): ' ' + Visible(7): 'iterals' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(1): 'C' + Space(1): ' ' + Visible(7): 'include' + Space(1): ' ' + Visible(17): 'null-terminators,' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(6): 'aren't' + Space(1): ' ' + Visible(10): 'interested' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(10): 'preserving' + Space(1): ' ' + Visible(5): 'that.' +Line 144 - Chunks 15: + Visible(7): '#define' + Space(1): ' ' + Visible(19): 'lit(string_literal)' + Space(1): ' ' + Visible(7): '(Str8){' + Space(1): ' ' + Visible(15): 'string_literal,' + Space(1): ' ' + Visible(23): 'size_of(string_literal)' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(1): '1' + Space(1): ' ' + Visible(1): '}' +Line 145 - Chunks 0: +Line 146 - Chunks 1: + Visible(2): '/*' +Line 147 - Chunks 25: + Visible(5): 'We'll' + Space(1): ' ' + Visible(4): 'want' + Space(1): ' ' + Visible(3): 'all' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(7): 'textual' + Space(1): ' ' + Visible(7): 'process' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(7): 'operate' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(5): 'UTF-8' + Space(1): ' ' + Visible(4): 'code' + Space(1): ' ' + Visible(6): 'pages:' +Line 148 - Chunks 1: + Visible(2): '*/' +Line 149 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(10): '' +Line 150 - Chunks 13: + Visible(6): 'inline' + Space(1): ' ' + Visible(4): 'void' + Space(1): ' ' + Visible(19): 'set_utf8_codepage()' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(17): 'setlocale(LC_ALL,' + Space(1): ' ' + Visible(10): '".UTF-8");' + Space(1): ' ' + Visible(1): '}' +Line 151 - Chunks 0: +Line 152 - Chunks 19: + Visible(2): '//' + Space(1): ' ' + Visible(3): 'For' + Space(1): ' ' + Visible(3): 'now' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(3): 'can' + Space(1): ' ' + Visible(10): 'visualized' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(9): 'debugger.' +Line 153 - Chunks 3: + Visible(6): '#ifdef' + Space(1): ' ' + Visible(15): 'DEMO__STR_SLICE' +Line 154 - Chunks 3: + Visible(3): 'int' + Space(1): ' ' + Visible(6): 'main()' +Line 155 - Chunks 1: + Visible(1): '{' +Line 156 - Chunks 18: + Tab(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(5): 'first' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(8): 'lit("Our' + Space(1): ' ' + Visible(5): 'first' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(8): 'slice");' +Line 157 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(2): '0;' +Line 158 - Chunks 1: + Visible(1): '}' +Line 159 - Chunks 3: + Visible(6): '#endif' + Space(1): ' ' + Visible(15): 'DEMO__STR_SLICE' +Line 160 - Chunks 0: +Line 161 - Chunks 1: + Visible(2): '/*' +Line 162 - Chunks 49: + Visible(2): 'We' + Space(1): ' ' + Visible(3): 'now' + Space(1): ' ' + Visible(4): 'want' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(4): 'able' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'read' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'file.' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'heavy' + Space(1): ' ' + Visible(11): 'rabbit-hole' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(5): 'setup' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'basic' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(9): 'interface' +Line 163 - Chunks 13: + Visible(3): 'and' + Space(1): ' ' + Visible(7): 'related' + Space(1): ' ' + Visible(11): 'definitions' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(8): 'handling' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'memory.' +Line 164 - Chunks 0: +Line 165 - Chunks 33: + Visible(3): 'For' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(8): 'purposes' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'initial' + Space(1): ' ' + Visible(10): 'definition' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(10): 'introduced' + Space(1): ' ' + Visible(11): 'fixed-sized' + Space(1): ' ' + Visible(6): 'memory' + Space(1): ' ' + Visible(8): 'handling' + Space(1): ' ' + Visible(10): 'statically' + Space(1): ' ' + Visible(9): 'allocated' + Space(1): ' ' + Visible(4): 'onto' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'stack.' +Line 166 - Chunks 1: + Visible(2): '*/' +Line 167 - Chunks 0: +Line 168 - Chunks 1: + Visible(2): '/*' +Line 169 - Chunks 33: + Visible(5): 'First' + Space(1): ' ' + Visible(3): 'off' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'find' + Space(1): ' ' + Visible(3): 'out' + Space(1): ' ' + Visible(3): 'how' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(6): 'aquire' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(8): 'contents' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(8): 'Windows.' +Line 170 - Chunks 0: +Line 171 - Chunks 39: + Visible(5): 'We'll' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(8): 'wrapping' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'operation' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(9): 'procedure' + Space(1): ' ' + Visible(6): 'called' + Space(1): ' ' + Visible(19): 'file_read_contents.' + Space(1): ' ' + Visible(5): 'We'll' + Space(1): ' ' + Visible(4): 'have' + Space(1): ' ' + Visible(2): 'it' + Space(1): ' ' + Visible(4): 'take' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'path' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(8): 'optional' + Space(1): ' ' + Visible(9): 'arguments' + Space(1): ' ' + Visible(27): '(Opts__read_file_contents).' +Line 172 - Chunks 37: + Visible(2): 'It' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'result' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(9): 'composite' + Space(1): ' ' + Visible(7): 'struct:' + Space(1): ' ' + Visible(13): 'FileOpResult;' + Space(1): ' ' + Visible(5): 'which' + Space(1): ' ' + Visible(3): 'may' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(8): 'expanded' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(6): 'needed' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'future.' +Line 173 - Chunks 1: + Visible(2): '*/' +Line 174 - Chunks 0: +Line 175 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(12): 'FileOpResult' + Space(13): ' ' + Visible(13): 'FileOpResult;' +Line 176 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(24): 'Opts__read_file_contents' + Space(1): ' ' + Visible(25): 'Opts__read_file_contents;' +Line 177 - Chunks 13: + Visible(4): 'void' + Space(9): ' ' + Visible(36): 'file_read_contents_api(FileOpResult*' + Space(1): ' ' + Visible(7): 'result,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(5): 'path,' + Space(1): ' ' + Visible(25): 'Opts__read_file_contents*' + Space(1): ' ' + Visible(6): 'opts);' +Line 178 - Chunks 13: + Visible(12): 'FileOpResult' + Space(1): ' ' + Visible(19): 'file__read_contents' + Space(3): ' ' + Visible(1): '(' + Space(22): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(5): 'path,' + Space(1): ' ' + Visible(25): 'Opts__read_file_contents*' + Space(1): ' ' + Visible(6): 'opts);' +Line 179 - Chunks 13: + Visible(7): '#define' + Space(1): ' ' + Visible(24): 'file_read_contents(path,' + Space(1): ' ' + Visible(4): '...)' + Space(1): ' ' + Visible(25): 'file__read_contents(path,' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(39): '(Opts__read_file_contents){__VA_ARGS__}' + Space(1): ' ' + Visible(1): ')' +Line 180 - Chunks 0: +Line 181 - Chunks 1: + Visible(2): '/*' +Line 182 - Chunks 15: + Visible(3): 'The' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(8): 'contents' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(8): 'returned' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(6): 'bytes.' +Line 183 - Chunks 27: + Visible(2): 'To' + Space(1): ' ' + Visible(4): 'view' + Space(1): ' ' + Visible(2): 'or' + Space(1): ' ' + Visible(6): 'manage' + Space(1): ' ' + Visible(3): 'any' + Space(1): ' ' + Visible(5): 'slice' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(5): 'bytes' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(9): 'utilizing' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'byte' + Space(1): ' ' + Visible(6): 'slice.' +Line 184 - Chunks 1: + Visible(2): '*/' +Line 185 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(10): 'SliceByte;' +Line 186 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(1): '{' +Line 187 - Chunks 4: + Tab(1): ' ' + Visible(3): 'U8*' + Space(3): ' ' + Visible(4): 'ptr;' +Line 188 - Chunks 4: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(4): 'len;' +Line 189 - Chunks 1: + Visible(2): '};' +Line 190 - Chunks 0: +Line 191 - Chunks 1: + Visible(2): '/*' +Line 192 - Chunks 57: + Visible(3): 'The' + Space(1): ' ' + Visible(5): 'above' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'pattern' + Space(1): ' ' + Visible(4): 'that' + Space(1): ' ' + Visible(3): 'can' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(8): 'provided' + Space(1): ' ' + Visible(2): 'so' + Space(1): ' ' + Visible(4): 'that' + Space(1): ' ' + Visible(7): 'whether' + Space(1): ' ' + Visible(2): 'or' + Space(1): ' ' + Visible(3): 'not' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'result' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(9): 'formatted' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(8): 'provided' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'user' + Space(1): ' ' + Visible(3): 'via' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'stack' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(8): 'entirely' + Space(1): ' ' + Visible(9): 'optional.' +Line 193 - Chunks 19: + Visible(2): 'It' + Space(1): ' ' + Visible(4): 'also' + Space(1): ' ' + Visible(6): 'allows' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(7): 'default' + Space(1): ' ' + Visible(10): 'parameters' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(7): 'defined' + Space(1): ' ' + Visible(11): 'conviently.' +Line 194 - Chunks 1: + Visible(2): '*/' +Line 195 - Chunks 0: +Line 196 - Chunks 19: + Visible(2): '//' + Space(1): ' ' + Visible(5): 'We'll' + Space(1): ' ' + Visible(7): 'utilize' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(8): 'ReadFile' + Space(1): ' ' + Visible(9): 'procedure' + Space(1): ' ' + Visible(6): 'within' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'WinAPI:' + Space(1): ' ' + Visible(79): 'https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-readfile' +Line 197 - Chunks 3: + Visible(7): '#define' + Space(1): ' ' + Visible(8): 'NOMINMAX' +Line 198 - Chunks 3: + Visible(7): '#define' + Space(1): ' ' + Visible(19): 'WIN32_LEAN_AND_MEAN' +Line 199 - Chunks 3: + Visible(7): '#define' + Space(1): ' ' + Visible(19): 'WIN32_MEAN_AND_LEAN' +Line 200 - Chunks 3: + Visible(7): '#define' + Space(1): ' ' + Visible(12): 'VC_EXTRALEAN' +Line 201 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(11): '' +Line 202 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(12): '' +Line 203 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(11): '' +Line 204 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(12): '' +Line 205 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(10): '' +Line 206 - Chunks 3: + Visible(8): '#include' + Space(1): ' ' + Visible(21): '' +Line 207 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(12): 'comment(lib,' + Space(1): ' ' + Visible(9): '"user32")' +Line 208 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(12): 'comment(lib,' + Space(1): ' ' + Visible(8): '"winmm")' +Line 209 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(12): 'comment(lib,' + Space(1): ' ' + Visible(10): '"shell32")' +Line 210 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(12): 'comment(lib,' + Space(1): ' ' + Visible(11): '"advapi32")' +Line 211 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(12): 'comment(lib,' + Space(1): ' ' + Visible(9): '"rpcrt4")' +Line 212 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(12): 'comment(lib,' + Space(1): ' ' + Visible(10): '"shlwapi")' +Line 213 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(12): 'comment(lib,' + Space(1): ' ' + Visible(11): '"comctl32")' +Line 214 - Chunks 33: + Visible(7): '#pragma' + Space(1): ' ' + Visible(50): 'comment(linker,"\"/manifestdependency:type='win32'' + Space(1): ' ' + Visible(40): 'name='Microsoft.Windows.Common-Controls'' + Space(1): ' ' + Visible(17): 'version='6.0.0.0'' + Space(1): ' ' + Visible(25): 'processorArchitecture='*'' + Space(1): ' ' + Visible(33): 'publicKeyToken='6595b64144ccf1df'' + Space(1): ' ' + Visible(16): 'language='*'\"")' + Space(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(8): 'required' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(7): 'loading' + Space(1): ' ' + Visible(7): 'correct' + Space(1): ' ' + Visible(8): 'comctl32' + Space(1): ' ' + Visible(3): 'dll' + Space(1): ' ' + Visible(4): 'file' +Line 215 - Chunks 3: + Visible(6): '#undef' + Space(1): ' ' + Visible(8): 'NOMINMAX' +Line 216 - Chunks 3: + Visible(6): '#undef' + Space(1): ' ' + Visible(19): 'WIN32_LEAN_AND_MEAN' +Line 217 - Chunks 3: + Visible(6): '#undef' + Space(1): ' ' + Visible(19): 'WIN32_MEAN_AND_LEAN' +Line 218 - Chunks 3: + Visible(6): '#undef' + Space(1): ' ' + Visible(12): 'VC_EXTRALEAN' +Line 219 - Chunks 3: + Visible(3): '#if' + Space(1): ' ' + Visible(1): '0' +Line 220 - Chunks 3: + Visible(4): 'BOOL' + Space(1): ' ' + Visible(9): 'ReadFile(' +Line 221 - Chunks 6: + Space(2): ' ' + Visible(4): '[in]' + Space(16): ' ' + Visible(6): 'HANDLE' + Space(7): ' ' + Visible(6): 'hFile,' +Line 222 - Chunks 6: + Space(2): ' ' + Visible(5): '[out]' + Space(15): ' ' + Visible(6): 'LPVOID' + Space(7): ' ' + Visible(9): 'lpBuffer,' +Line 223 - Chunks 6: + Space(2): ' ' + Visible(4): '[in]' + Space(16): ' ' + Visible(5): 'DWORD' + Space(8): ' ' + Visible(21): 'nNumberOfBytesToRead,' +Line 224 - Chunks 8: + Space(2): ' ' + Visible(5): '[out,' + Space(1): ' ' + Visible(9): 'optional]' + Space(5): ' ' + Visible(7): 'LPDWORD' + Space(6): ' ' + Visible(20): 'lpNumberOfBytesRead,' +Line 225 - Chunks 10: + Space(2): ' ' + Visible(4): '[in,' + Space(1): ' ' + Visible(4): 'out,' + Space(1): ' ' + Visible(9): 'optional]' + Space(1): ' ' + Visible(12): 'LPOVERLAPPED' + Space(1): ' ' + Visible(12): 'lpOverlapped' +Line 226 - Chunks 1: + Visible(2): ');' +Line 227 - Chunks 0: +Line 228 - Chunks 39: + Visible(2): '//' + Space(1): ' ' + Visible(2): 'In' + Space(1): ' ' + Visible(5): 'order' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'read' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'handle' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'valid' + Space(1): ' ' + Visible(10): 'filesystem' + Space(1): ' ' + Visible(6): 'entity' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'read' + Space(1): ' ' + Visible(5): 'from:' + Space(1): ' ' + Visible(82): 'https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea' +Line 229 - Chunks 3: + Visible(6): 'HANDLE' + Space(1): ' ' + Visible(12): 'CreateFileA(' +Line 230 - Chunks 6: + Space(2): ' ' + Visible(4): '[in]' + Space(11): ' ' + Visible(6): 'LPCSTR' + Space(16): ' ' + Visible(11): 'lpFileName,' +Line 231 - Chunks 6: + Space(2): ' ' + Visible(4): '[in]' + Space(11): ' ' + Visible(5): 'DWORD' + Space(17): ' ' + Visible(16): 'dwDesiredAccess,' +Line 232 - Chunks 6: + Space(2): ' ' + Visible(4): '[in]' + Space(11): ' ' + Visible(5): 'DWORD' + Space(17): ' ' + Visible(12): 'dwShareMode,' +Line 233 - Chunks 8: + Space(2): ' ' + Visible(4): '[in,' + Space(1): ' ' + Visible(9): 'optional]' + Space(1): ' ' + Visible(21): 'LPSECURITY_ATTRIBUTES' + Space(1): ' ' + Visible(21): 'lpSecurityAttributes,' +Line 234 - Chunks 6: + Space(2): ' ' + Visible(4): '[in]' + Space(11): ' ' + Visible(5): 'DWORD' + Space(17): ' ' + Visible(22): 'dwCreationDisposition,' +Line 235 - Chunks 6: + Space(2): ' ' + Visible(4): '[in]' + Space(11): ' ' + Visible(5): 'DWORD' + Space(17): ' ' + Visible(21): 'dwFlagsAndAttributes,' +Line 236 - Chunks 8: + Space(2): ' ' + Visible(4): '[in,' + Space(1): ' ' + Visible(9): 'optional]' + Space(1): ' ' + Visible(6): 'HANDLE' + Space(16): ' ' + Visible(13): 'hTemplateFile' +Line 237 - Chunks 1: + Visible(2): ');' +Line 238 - Chunks 1: + Visible(6): '#endif' +Line 239 - Chunks 0: +Line 240 - Chunks 29: + Visible(2): '//' + Space(1): ' ' + Visible(2): 'We' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(6): 'covert' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(5): 'slice' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(8): 'c-string' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(13): 'CreateFileA's' + Space(1): ' ' + Visible(4): 'path' + Space(1): ' ' + Visible(6): 'input.' +Line 241 - Chunks 0: +Line 242 - Chunks 11: + Visible(7): '#define' + Space(1): ' ' + Visible(12): 'KILOBTYES(n)' + Space(1): ' ' + Visible(12): '(cast(USIZE,' + Space(1): ' ' + Visible(2): 'n)' + Space(1): ' ' + Visible(2): '<<' + Space(1): ' ' + Visible(3): '10)' +Line 243 - Chunks 11: + Visible(7): '#define' + Space(1): ' ' + Visible(12): 'MEGABYTES(n)' + Space(1): ' ' + Visible(12): '(cast(USIZE,' + Space(1): ' ' + Visible(2): 'n)' + Space(1): ' ' + Visible(2): '<<' + Space(1): ' ' + Visible(3): '20)' +Line 244 - Chunks 11: + Visible(7): '#define' + Space(1): ' ' + Visible(12): 'GIGABYTES(n)' + Space(1): ' ' + Visible(12): '(cast(USIZE,' + Space(1): ' ' + Visible(2): 'n)' + Space(1): ' ' + Visible(2): '<<' + Space(1): ' ' + Visible(3): '30)' +Line 245 - Chunks 11: + Visible(7): '#define' + Space(1): ' ' + Visible(12): 'TERABYTES(n)' + Space(1): ' ' + Visible(12): '(cast(USIZE,' + Space(1): ' ' + Visible(2): 'n)' + Space(1): ' ' + Visible(2): '<<' + Space(1): ' ' + Visible(3): '40)' +Line 246 - Chunks 0: +Line 247 - Chunks 1: + Visible(2): '/*' +Line 248 - Chunks 19: + Visible(5): 'We'll' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(8): 'defining' + Space(1): ' ' + Visible(4): 'here' + Space(1): ' ' + Visible(11): 'Fixed-sized' + Space(1): ' ' + Visible(6): 'memory' + Space(1): ' ' + Visible(6): 'blocks' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(8): 'typedefs' + Space(1): ' ' + Visible(9): 'on-demand' +Line 249 - Chunks 0: +Line 250 - Chunks 11: + Visible(4): 'They' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(6): 'having' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'following' + Space(1): ' ' + Visible(7): 'format:' +Line 251 - Chunks 13: + Visible(7): 'typedef' + Space(1): ' ' + Visible(2): 'U8' + Space(1): ' ' + Visible(13): 'FMem_KB' + Space(1): ' ' + Visible(1): '[' + Space(1): ' ' + Visible(3): '' + Space(1): ' ' + Visible(2): '];' +Line 252 - Chunks 1: + Visible(2): '*/' +Line 253 - Chunks 0: +Line 254 - Chunks 11: + Visible(7): 'typedef' + Space(1): ' ' + Visible(2): 'U8' + Space(1): ' ' + Visible(9): 'FMem_16KB' + Space(2): ' ' + Visible(1): '[' + Space(1): ' ' + Visible(13): 'KILOBTYES(16)' + Space(2): ' ' + Visible(2): '];' +Line 255 - Chunks 11: + Visible(7): 'typedef' + Space(1): ' ' + Visible(2): 'U8' + Space(1): ' ' + Visible(9): 'FMem_64KB' + Space(2): ' ' + Visible(1): '[' + Space(1): ' ' + Visible(13): 'KILOBTYES(64)' + Space(2): ' ' + Visible(2): '];' +Line 256 - Chunks 11: + Visible(7): 'typedef' + Space(1): ' ' + Visible(2): 'U8' + Space(1): ' ' + Visible(10): 'FMem_128KB' + Space(1): ' ' + Visible(1): '[' + Space(1): ' ' + Visible(14): 'KILOBTYES(128)' + Space(1): ' ' + Visible(2): '];' +Line 257 - Chunks 0: +Line 258 - Chunks 5: + Visible(7): '#define' + Space(1): ' ' + Visible(6): 'typeof' + Space(10): ' ' + Visible(10): '__typeof__' +Line 259 - Chunks 13: + Visible(7): '#define' + Space(1): ' ' + Visible(15): 'fmem_slice(mem)' + Space(1): ' ' + Visible(11): '(SliceByte)' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(4): 'mem,' + Space(1): ' ' + Visible(12): 'size_of(mem)' + Space(1): ' ' + Visible(1): '}' +Line 260 - Chunks 0: +Line 261 - Chunks 17: + Visible(2): '//' + Space(1): ' ' + Visible(5): 'We'll' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(2): 'an' + Space(1): ' ' + Visible(9): 'intrinsic' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(7): 'copying' + Space(1): ' ' + Visible(7): 'memory:' +Line 262 - Chunks 19: + Visible(5): 'void*' + Space(1): ' ' + Visible(17): 'memory_copy(void*' + Space(1): ' ' + Visible(8): 'restrict' + Space(1): ' ' + Visible(5): 'dest,' + Space(1): ' ' + Visible(4): 'void' + Space(1): ' ' + Visible(6): 'const*' + Space(1): ' ' + Visible(8): 'restrict' + Space(1): ' ' + Visible(4): 'src,' + Space(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(7): 'length)' +Line 263 - Chunks 1: + Visible(1): '{' +Line 264 - Chunks 26: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(5): '(dest' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(7): 'nullptr' + Space(1): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(3): 'src' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(7): 'nullptr' + Space(1): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(6): 'length' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(2): '0)' + Space(1): ' ' + Visible(1): '{' +Line 265 - Chunks 4: + Tab(2): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(8): 'nullptr;' +Line 266 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 267 - Chunks 4: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(68): 'https://learn.microsoft.com/en-us/cpp/intrinsics/movsb?view=msvc-170' +Line 268 - Chunks 12: + Tab(1): ' ' + Visible(17): '__movsb((unsigned' + Space(1): ' ' + Visible(11): 'char*)dest,' + Space(1): ' ' + Visible(6): '(const' + Space(1): ' ' + Visible(8): 'unsigned' + Space(1): ' ' + Visible(10): 'char*)src,' + Space(1): ' ' + Visible(8): 'length);' +Line 269 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(5): 'dest;' +Line 270 - Chunks 1: + Visible(1): '}' +Line 271 - Chunks 0: +Line 272 - Chunks 19: + Visible(2): '//' + Space(1): ' ' + Visible(5): 'Often' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(4): 'want' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(5): 'check' + Space(1): ' ' + Visible(8): 'validity' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'slice:' +Line 273 - Chunks 9: + Visible(7): '#define' + Space(1): ' ' + Visible(19): 'slice_assert(slice)' + Space(1): ' ' + Visible(2): 'do' + Space(1): ' ' + Visible(1): '{' + Space(2): ' ' + Visible(1): '\' +Line 274 - Chunks 8: + Tab(1): ' ' + Visible(16): 'assert(slice.ptr' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' + Space(1): ' ' + Visible(1): '\' +Line 275 - Chunks 8: + Tab(1): ' ' + Visible(16): 'assert(slice.len' + Space(1): ' ' + Visible(1): '>' + Space(1): ' ' + Visible(3): '0);' + Space(8): ' ' + Visible(1): '\' +Line 276 - Chunks 3: + Visible(1): '}' + Space(1): ' ' + Visible(8): 'while(0)' +Line 277 - Chunks 0: +Line 278 - Chunks 19: + Visible(4): 'void' + Space(1): ' ' + Visible(21): 'slice__copy(SliceByte' + Space(1): ' ' + Visible(5): 'dest,' + Space(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(15): 'dest_typewidth,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(4): 'src,' + Space(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(14): 'src_typewidth)' + Space(1): ' ' + Visible(1): '{' +Line 279 - Chunks 6: + Tab(1): ' ' + Visible(15): 'assert(dest.len' + Space(1): ' ' + Visible(2): '>=' + Space(1): ' ' + Visible(9): 'src.len);' +Line 280 - Chunks 2: + Tab(1): ' ' + Visible(19): 'slice_assert(dest);' +Line 281 - Chunks 2: + Tab(1): ' ' + Visible(18): 'slice_assert(src);' +Line 282 - Chunks 6: + Tab(1): ' ' + Visible(21): 'memory_copy(dest.ptr,' + Space(1): ' ' + Visible(8): 'src.ptr,' + Space(1): ' ' + Visible(9): 'src.len);' +Line 283 - Chunks 1: + Visible(1): '}' +Line 284 - Chunks 7: + Visible(7): '#define' + Space(1): ' ' + Visible(20): 'slice_copy(dest,src)' + Space(1): ' ' + Visible(12): 'slice__copy(' + Space(44): ' ' + Visible(1): '\' +Line 285 - Chunks 12: + Tab(1): ' ' + Visible(23): '(SliceByte){(dest).ptr,' + Space(1): ' ' + Visible(10): '(dest).len' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(22): 'size_of(*(dest).ptr)},' + Space(1): ' ' + Visible(20): 'size_of(*(dest).ptr)' + Space(1): ' ' + Visible(1): '\' +Line 286 - Chunks 21: + Visible(1): ',' + Tab(1): ' ' + Visible(16): '(SliceByte){(src' + Space(1): ' ' + Visible(6): ').ptr,' + Space(1): ' ' + Visible(4): '(src' + Space(1): ' ' + Visible(5): ').len' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(13): 'size_of(*(src' + Space(1): ' ' + Visible(8): ').ptr)},' + Space(1): ' ' + Visible(13): 'size_of(*(src' + Space(1): ' ' + Visible(6): ').ptr)' + Space(1): ' ' + Visible(1): '\' +Line 287 - Chunks 1: + Visible(1): ')' +Line 288 - Chunks 0: +Line 289 - Chunks 9: + Visible(2): '//' + Space(1): ' ' + Visible(7): 'Assumes' + Space(1): ' ' + Visible(6): 'memory' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(7): 'zeroed.' +Line 290 - Chunks 11: + Visible(5): 'char*' + Space(1): ' ' + Visible(24): 'str8_to_cstr_capped(Str8' + Space(1): ' ' + Visible(8): 'content,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(4): 'mem)' + Space(1): ' ' + Visible(1): '{' +Line 291 - Chunks 6: + Tab(1): ' ' + Visible(14): 'assert(mem.len' + Space(1): ' ' + Visible(2): '>=' + Space(1): ' ' + Visible(13): 'content.len);' +Line 292 - Chunks 6: + Tab(1): ' ' + Visible(20): 'memory_copy(mem.ptr,' + Space(1): ' ' + Visible(12): 'content.ptr,' + Space(1): ' ' + Visible(13): 'content.len);' +Line 293 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(8): 'mem.ptr;' +Line 294 - Chunks 1: + Visible(1): '}' +Line 295 - Chunks 0: +Line 296 - Chunks 17: + Visible(2): '//' + Space(1): ' ' + Visible(2): 'To' + Space(1): ' ' + Visible(7): 'support' + Space(1): ' ' + Visible(7): 'zeroing' + Space(1): ' ' + Visible(6): 'slices' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(7): 'utilize' + Space(1): ' ' + Visible(2): 'an' + Space(1): ' ' + Visible(10): 'intrinisc.' +Line 297 - Chunks 11: + Visible(3): 'B32' + Space(1): ' ' + Visible(17): 'memory_zero(void*' + Space(1): ' ' + Visible(5): 'dest,' + Space(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(7): 'length)' + Space(1): ' ' + Visible(1): '{' +Line 298 - Chunks 18: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(5): '(dest' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(7): 'nullptr' + Space(1): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(6): 'length' + Space(1): ' ' + Visible(2): '<=' + Space(1): ' ' + Visible(2): '0)' + Space(1): ' ' + Visible(1): '{' +Line 299 - Chunks 4: + Tab(2): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(6): 'false;' +Line 300 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 301 - Chunks 8: + Tab(1): ' ' + Visible(17): '__stosb((unsigned' + Space(1): ' ' + Visible(11): 'char*)dest,' + Space(1): ' ' + Visible(2): '0,' + Space(1): ' ' + Visible(8): 'length);' +Line 302 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(5): 'true;' +Line 303 - Chunks 1: + Visible(1): '}' +Line 304 - Chunks 0: +Line 305 - Chunks 11: + Visible(4): 'void' + Space(1): ' ' + Visible(21): 'slice__zero(SliceByte' + Space(1): ' ' + Visible(4): 'mem,' + Space(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(10): 'typewidth)' + Space(1): ' ' + Visible(1): '{' +Line 306 - Chunks 2: + Tab(1): ' ' + Visible(18): 'slice_assert(mem);' +Line 307 - Chunks 4: + Tab(1): ' ' + Visible(20): 'memory_zero(mem.ptr,' + Space(1): ' ' + Visible(9): 'mem.len);' +Line 308 - Chunks 1: + Visible(1): '}' +Line 309 - Chunks 17: + Visible(7): '#define' + Space(1): ' ' + Visible(17): 'slice_zero(slice)' + Space(1): ' ' + Visible(24): 'slice__zero((SliceByte){' + Space(1): ' ' + Visible(11): 'cast(void*,' + Space(1): ' ' + Visible(13): '(slice).ptr),' + Space(1): ' ' + Visible(11): '(slice).len' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(23): 'size_of(*(slice).ptr)},' + Space(1): ' ' + Visible(22): 'size_of(*(slice).ptr))' +Line 310 - Chunks 0: +Line 311 - Chunks 11: + Visible(2): '//' + Space(1): ' ' + Visible(3): 'Now' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(8): '"Version' + Space(1): ' ' + Visible(2): '1"' +Line 312 - Chunks 0: +Line 313 - Chunks 7: + Visible(3): '#if' + Tab(1): ' ' + Visible(36): 'defined(DEMO__FILE_READ_CONTENTS_V1)' + Space(1): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(1): '\' +Line 314 - Chunks 6: + Tab(1): ' ' + Visible(26): 'defined(DEMO__WATL_LEX_V1)' + Space(11): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(1): '\' +Line 315 - Chunks 6: + Tab(1): ' ' + Visible(28): 'defined(DEMO__WATL_PARSE_V1)' + Space(9): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(1): '\' +Line 316 - Chunks 6: + Tab(1): ' ' + Visible(34): 'defined(DEMO__WATL_DUMP_PREREQ_V1)' + Space(3): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(1): '\' +Line 317 - Chunks 2: + Tab(1): ' ' + Visible(27): 'defined(DEMO__WATL_DUMP_V1)' +Line 318 - Chunks 0: +Line 319 - Chunks 3: + Visible(6): 'struct' + Space(1): ' ' + Visible(12): 'FileOpResult' +Line 320 - Chunks 1: + Visible(1): '{' +Line 321 - Chunks 16: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(3): 'For' + Space(1): ' ' + Visible(3): 'now' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(4): 'just' + Space(1): ' ' + Visible(4): 'have' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'content' +Line 322 - Chunks 4: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(8): 'content;' +Line 323 - Chunks 1: + Visible(2): '};' +Line 324 - Chunks 0: +Line 325 - Chunks 3: + Visible(6): 'struct' + Space(1): ' ' + Visible(24): 'Opts__read_file_contents' +Line 326 - Chunks 1: + Visible(1): '{' +Line 327 - Chunks 26: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(3): 'For' + Space(1): ' ' + Visible(3): 'now' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(4): 'just' + Space(1): ' ' + Visible(4): 'have' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'backing' + Space(1): ' ' + Visible(6): 'memory' + Space(1): ' ' + Visible(8): 'provided' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'slice.' +Line 328 - Chunks 4: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(8): 'backing;' +Line 329 - Chunks 16: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(3): 'And' + Space(1): ' ' + Visible(7): 'whether' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(6): 'should' + Space(1): ' ' + Visible(4): 'zero' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(8): 'backing.' +Line 330 - Chunks 4: + Tab(1): ' ' + Visible(3): 'B32' + Space(1): ' ' + Visible(13): 'zero_backing;' +Line 331 - Chunks 1: + Visible(2): '};' +Line 332 - Chunks 0: +Line 333 - Chunks 13: + Visible(4): 'void' + Space(1): ' ' + Visible(36): 'file_read_contents_api(FileOpResult*' + Space(1): ' ' + Visible(7): 'result,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(5): 'path,' + Space(1): ' ' + Visible(25): 'Opts__read_file_contents*' + Space(1): ' ' + Visible(5): 'opts)' +Line 334 - Chunks 1: + Visible(1): '{' +Line 335 - Chunks 6: + Tab(1): ' ' + Visible(13): 'assert(result' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 336 - Chunks 6: + Tab(1): ' ' + Visible(11): 'assert(opts' + Space(3): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 337 - Chunks 2: + Tab(1): ' ' + Visible(19): 'slice_assert(path);' +Line 338 - Chunks 14: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(7): 'Backing' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(8): 'required' + Space(1): ' ' + Visible(2): 'at' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(5): 'point' +Line 339 - Chunks 2: + Tab(1): ' ' + Visible(28): 'slice_assert(opts->backing);' +Line 340 - Chunks 0: +Line 341 - Chunks 28: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'limit' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'path' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(4): '16kb' + Space(1): ' ' + Visible(5): 'worth' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(11): 'codepoints.' +Line 342 - Chunks 8: + Tab(1): ' ' + Visible(9): 'FMem_16KB' + Space(3): ' ' + Visible(7): 'scratch' + Space(3): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 343 - Chunks 14: + Tab(1): ' ' + Visible(4): 'char' + Space(1): ' ' + Visible(6): 'const*' + Space(1): ' ' + Visible(9): 'path_cstr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(25): 'str8_to_cstr_capped(path,' + Space(1): ' ' + Visible(19): 'fmem_slice(scratch)' + Space(1): ' ' + Visible(2): ');' +Line 344 - Chunks 0: +Line 345 - Chunks 8: + Tab(1): ' ' + Visible(6): 'HANDLE' + Space(1): ' ' + Visible(7): 'id_file' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(12): 'CreateFileA(' +Line 346 - Chunks 2: + Tab(2): ' ' + Visible(10): 'path_cstr,' +Line 347 - Chunks 2: + Tab(2): ' ' + Visible(13): 'GENERIC_READ,' +Line 348 - Chunks 2: + Tab(2): ' ' + Visible(16): 'FILE_SHARE_READ,' +Line 349 - Chunks 2: + Tab(2): ' ' + Visible(5): 'NULL,' +Line 350 - Chunks 2: + Tab(2): ' ' + Visible(14): 'OPEN_EXISTING,' +Line 351 - Chunks 2: + Tab(2): ' ' + Visible(22): 'FILE_ATTRIBUTE_NORMAL,' +Line 352 - Chunks 2: + Tab(2): ' ' + Visible(4): 'NULL' +Line 353 - Chunks 2: + Tab(1): ' ' + Visible(2): ');' +Line 354 - Chunks 12: + Tab(1): ' ' + Visible(3): 'B32' + Space(1): ' ' + Visible(11): 'open_failed' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(7): 'id_file' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(21): 'INVALID_HANDLE_VALUE;' +Line 355 - Chunks 6: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(13): '(open_failed)' + Space(1): ' ' + Visible(1): '{' +Line 356 - Chunks 8: + Tab(2): ' ' + Visible(5): 'DWORD' + Space(2): ' ' + Visible(10): 'error_code' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(15): 'GetLastError();' +Line 357 - Chunks 6: + Tab(2): ' ' + Visible(17): 'assert(error_code' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(3): '0);' +Line 358 - Chunks 2: + Tab(2): ' ' + Visible(7): 'return;' +Line 359 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 360 - Chunks 0: +Line 361 - Chunks 8: + Tab(1): ' ' + Visible(13): 'LARGE_INTEGER' + Space(1): ' ' + Visible(9): 'file_size' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 362 - Chunks 14: + Tab(1): ' ' + Visible(5): 'DWORD' + Space(1): ' ' + Visible(15): 'get_size_failed' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '!' + Space(1): ' ' + Visible(22): 'GetFileSizeEx(id_file,' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(11): 'file_size);' +Line 363 - Chunks 6: + Tab(1): ' ' + Visible(2): 'if' + Space(3): ' ' + Visible(17): '(get_size_failed)' + Space(1): ' ' + Visible(1): '{' +Line 364 - Chunks 6: + Tab(2): ' ' + Visible(22): 'assert(get_size_failed' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(19): 'INVALID_FILE_SIZE);' +Line 365 - Chunks 2: + Tab(2): ' ' + Visible(7): 'return;' +Line 366 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 367 - Chunks 0: +Line 368 - Chunks 38: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(7): 'Because' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(9): 'currently' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(5): 'fixed' + Space(1): ' ' + Visible(4): 'size' + Space(1): ' ' + Visible(7): 'memory,' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(7): 'confirm' + Space(1): ' ' + Visible(4): 'that' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(3): 'can' + Space(1): ' ' + Visible(4): 'hold' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(8): 'content.' +Line 369 - Chunks 12: + Tab(1): ' ' + Visible(3): 'B32' + Space(1): ' ' + Visible(18): 'not_enough_backing' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(17): 'opts->backing.len' + Space(1): ' ' + Visible(1): '<' + Space(1): ' ' + Visible(19): 'file_size.QuadPart;' +Line 370 - Chunks 6: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(20): '(not_enough_backing)' + Space(1): ' ' + Visible(1): '{' +Line 371 - Chunks 2: + Tab(2): ' ' + Visible(27): 'assert(not_enough_backing);' +Line 372 - Chunks 14: + Tab(2): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(9): 'Otherwise' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(5): 'don't' + Space(1): ' ' + Visible(7): 'provide' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'result.' +Line 373 - Chunks 6: + Tab(2): ' ' + Visible(15): 'result->content' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(15): '(SliceByte){0};' +Line 374 - Chunks 2: + Tab(2): ' ' + Visible(7): 'return;' +Line 375 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 376 - Chunks 0: +Line 377 - Chunks 6: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(20): '(opts->zero_backing)' + Space(1): ' ' + Visible(1): '{' +Line 378 - Chunks 4: + Space(10): ' ' + Visible(27): 'slice_zero(pcast(SliceByte,' + Space(1): ' ' + Visible(16): 'opts->backing));' +Line 379 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 380 - Chunks 0: +Line 381 - Chunks 8: + Tab(1): ' ' + Visible(5): 'DWORD' + Space(1): ' ' + Visible(11): 'amount_read' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 382 - Chunks 8: + Tab(1): ' ' + Visible(4): 'BOOL' + Space(2): ' ' + Visible(11): 'read_result' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(9): 'ReadFile(' +Line 383 - Chunks 2: + Tab(2): ' ' + Visible(8): 'id_file,' +Line 384 - Chunks 2: + Tab(2): ' ' + Visible(18): 'opts->backing.ptr,' +Line 385 - Chunks 2: + Tab(2): ' ' + Visible(19): 'file_size.QuadPart,' +Line 386 - Chunks 4: + Tab(2): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(12): 'amount_read,' +Line 387 - Chunks 2: + Tab(2): ' ' + Visible(7): 'nullptr' +Line 388 - Chunks 2: + Tab(1): ' ' + Visible(2): ');' +Line 389 - Chunks 2: + Tab(1): ' ' + Visible(21): 'CloseHandle(id_file);' +Line 390 - Chunks 1: + Tab(1): ' ' +Line 391 - Chunks 10: + Tab(1): ' ' + Visible(3): 'B32' + Space(1): ' ' + Visible(11): 'read_failed' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '!' + Space(1): ' ' + Visible(12): 'read_result;' +Line 392 - Chunks 11: + Tab(1): ' ' + Space(4): ' ' + Visible(11): 'read_failed' + Space(1): ' ' + Visible(2): '|=' + Space(1): ' ' + Visible(11): 'amount_read' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(19): 'file_size.QuadPart;' +Line 393 - Chunks 6: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(13): '(read_failed)' + Space(1): ' ' + Visible(1): '{' +Line 394 - Chunks 2: + Tab(2): ' ' + Visible(20): 'assert(read_failed);' +Line 395 - Chunks 2: + Tab(2): ' ' + Visible(7): 'return;' +Line 396 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 397 - Chunks 0: +Line 398 - Chunks 6: + Tab(1): ' ' + Visible(19): 'result->content.ptr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(18): 'opts->backing.ptr;' +Line 399 - Chunks 6: + Tab(1): ' ' + Visible(19): 'result->content.len' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(19): 'file_size.QuadPart;' +Line 400 - Chunks 2: + Tab(1): ' ' + Visible(7): 'return;' +Line 401 - Chunks 1: + Visible(1): '}' +Line 402 - Chunks 0: +Line 403 - Chunks 3: + Visible(6): '#endif' + Space(1): ' ' + Visible(27): 'DEMO__FILE_READ_CONTENTS_V1' +Line 404 - Chunks 0: +Line 405 - Chunks 7: + Visible(2): '//' + Space(1): ' ' + Visible(7): 'Version' + Space(1): ' ' + Visible(8): 'agnostic' + Space(1): ' ' + Visible(5): 'code:' +Line 406 - Chunks 1: + Visible(6): 'inline' +Line 407 - Chunks 11: + Visible(12): 'FileOpResult' + Space(1): ' ' + Visible(24): 'file__read_contents(Str8' + Space(1): ' ' + Visible(5): 'path,' + Space(1): ' ' + Visible(25): 'Opts__read_file_contents*' + Space(1): ' ' + Visible(5): 'opts)' + Space(1): ' ' + Visible(1): '{' +Line 408 - Chunks 4: + Tab(1): ' ' + Visible(12): 'FileOpResult' + Space(1): ' ' + Visible(7): 'result;' +Line 409 - Chunks 8: + Tab(1): ' ' + Visible(24): 'file_read_contents_api(&' + Space(1): ' ' + Visible(7): 'result,' + Space(1): ' ' + Visible(5): 'path,' + Space(1): ' ' + Visible(6): 'opts);' +Line 410 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(7): 'result;' +Line 411 - Chunks 1: + Visible(1): '}' +Line 412 - Chunks 0: +Line 413 - Chunks 49: + Visible(2): '//' + Space(1): ' ' + Visible(3): 'And' + Space(1): ' ' + Visible(3): 'now' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'put' + Space(1): ' ' + Visible(2): 'it' + Space(1): ' ' + Visible(3): 'all' + Space(1): ' ' + Visible(8): 'together' + Space(1): ' ' + Visible(4): 'into' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'test' + Space(1): ' ' + Visible(3): 'run' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'debugger.' + Space(1): ' ' + Visible(7): 'Content' + Space(1): ' ' + Visible(6): 'should' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(8): 'properly' + Space(1): ' ' + Visible(9): 'formatted' + Space(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'code' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(8): 'correct.' +Line 414 - Chunks 3: + Visible(6): '#ifdef' + Space(1): ' ' + Visible(27): 'DEMO__FILE_READ_CONTENTS_V1' +Line 415 - Chunks 3: + Visible(3): 'int' + Space(1): ' ' + Visible(6): 'main()' +Line 416 - Chunks 1: + Visible(1): '{' +Line 417 - Chunks 24: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'limit' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(4): 'read' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): '64kb' + Space(1): ' ' + Visible(2): 'at' + Space(1): ' ' + Visible(5): 'most.' +Line 418 - Chunks 8: + Tab(1): ' ' + Visible(9): 'FMem_64KB' + Space(4): ' ' + Visible(8): 'read_mem' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 419 - Chunks 16: + Tab(1): ' ' + Visible(12): 'FileOpResult' + Space(1): ' ' + Visible(3): 'res' + Space(6): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(43): 'file_read_contents(lit("demo.str_cache.c"),' + Space(1): ' ' + Visible(8): '.backing' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'fmem_slice(read_mem)' + Space(1): ' ' + Visible(2): ');' +Line 420 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(2): '0;' +Line 421 - Chunks 1: + Visible(1): '}' +Line 422 - Chunks 3: + Visible(6): '#endif' + Space(1): ' ' + Visible(27): 'DEMO__FILE_READ_CONTENTS_V1' +Line 423 - Chunks 0: +Line 424 - Chunks 1: + Visible(2): '/*' +Line 425 - Chunks 31: + Visible(3): 'Now' + Space(1): ' ' + Visible(4): 'that' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'have' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(7): 'reading' + Space(1): ' ' + Visible(4): 'done' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(4): 'able' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(7): 'process' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(8): 'content.' +Line 426 - Chunks 0: +Line 427 - Chunks 43: + Visible(5): 'First' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'want' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(2): 'do' + Space(1): ' ' + Visible(7): 'lexical' + Space(1): ' ' + Visible(9): 'analysis.' + Space(1): ' ' + Visible(2): 'So' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(6): 'create' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(7): 'listing' + Space(1): ' ' + Visible(10): 'delimiting' + Space(1): ' ' + Visible(7): 'aspects' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'text' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(8): 'relevant' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'us.' +Line 428 - Chunks 41: + Visible(3): 'For' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(4): 'data' + Space(1): ' ' + Visible(10): 'structure,' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(5): 'going' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(16): 'Whitespace-Aware' + Space(1): ' ' + Visible(4): 'Text' + Space(1): ' ' + Visible(7): 'Layout;' + Space(1): ' ' + Visible(5): 'where' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(5): 'track' + Space(1): ' ' + Visible(4): 'text' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(10): 'formatting' + Space(1): ' ' + Visible(6): 'around' + Space(1): ' ' + Visible(5): 'them.' +Line 429 - Chunks 0: +Line 430 - Chunks 31: + Visible(4): 'Just' + Space(1): ' ' + Visible(4): 'like' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'read' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(8): 'contents' + Space(1): ' ' + Visible(10): 'operation,' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(6): 'define' + Space(1): ' ' + Visible(2): 'an' + Space(1): ' ' + Visible(9): 'interface' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(10): 'performing' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(9): 'analysis.' +Line 431 - Chunks 38: + Visible(2): 'It' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(6): 'called' + Space(1): ' ' + Visible(8): 'watl_lex' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(4): 'take' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(4): 'from' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(5): 'slice' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(4): 'some' + Space(1): ' ' + Visible(15): 'Opts__watl_lex;' + Space(1): ' ' +Line 432 - Chunks 23: + Visible(9): 'returning' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(12): 'WATL_LexInfo' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(9): 'providing' + Space(1): ' ' + Visible(4): 'user' + Space(1): ' ' + Visible(4): 'info' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(3): 'how' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'operation' + Space(1): ' ' + Visible(5): 'went.' +Line 433 - Chunks 1: + Visible(2): '*/' +Line 434 - Chunks 0: +Line 435 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(12): 'WATL_LexInfo' + Space(1): ' ' + Visible(13): 'WATL_LexInfo;' +Line 436 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(14): 'Opts__watl_lex' + Space(1): ' ' + Visible(15): 'Opts__watl_lex;' +Line 437 - Chunks 0: +Line 438 - Chunks 13: + Visible(4): 'void' + Space(9): ' ' + Visible(26): 'watl_lex_api(WATL_LexInfo*' + Space(1): ' ' + Visible(5): 'info,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(7): 'source,' + Space(1): ' ' + Visible(15): 'Opts__watl_lex*' + Space(1): ' ' + Visible(6): 'opts);' +Line 439 - Chunks 13: + Visible(12): 'WATL_LexInfo' + Space(1): ' ' + Visible(9): 'watl__lex' + Space(3): ' ' + Visible(1): '(' + Space(20): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(7): 'source,' + Space(1): ' ' + Visible(15): 'Opts__watl_lex*' + Space(1): ' ' + Visible(6): 'opts);' +Line 440 - Chunks 9: + Visible(7): '#define' + Space(1): ' ' + Visible(16): 'watl_lex(source,' + Space(1): ' ' + Visible(4): '...)' + Space(1): ' ' + Visible(17): 'watl__lex(source,' + Space(1): ' ' + Visible(31): '&(Opts__watl_lex){__VA_ARGS__})' +Line 441 - Chunks 0: +Line 442 - Chunks 1: + Visible(2): '/*' +Line 443 - Chunks 17: + Visible(5): 'Token' + Space(1): ' ' + Visible(14): 'identification' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(4): 'done' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(12): 'WATL_TokKind' + Space(1): ' ' + Visible(12): 'enumeration.' +Line 444 - Chunks 65: + Visible(3): 'The' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(4): 'type' + Space(1): ' ' + Visible(6): 'itself' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(2): 'id' + Space(1): ' ' + Visible(5): 'along' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(3): 'ptr' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(5): 'start' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'slice.' + Space(1): ' ' + Visible(2): 'We' + Space(1): ' ' + Visible(3): 'can' + Space(1): ' ' + Visible(7): 'resolve' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'width' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(2): 'by' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(5): 'delta' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'next' + Space(1): ' ' + Visible(6): 'token.' +Line 445 - Chunks 39: + Visible(2): 'If' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'last' + Space(1): ' ' + Visible(6): 'token,' + Space(1): ' ' + Visible(4): 'then' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(5): 'delta' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(10): 'determined' + Space(1): ' ' + Visible(2): 'by' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(6): 'offset' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(3): 'end' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(6): 'slice.' +Line 446 - Chunks 1: + Visible(2): '*/' +Line 447 - Chunks 0: +Line 448 - Chunks 5: + Visible(7): 'typedef' + Space(1): ' ' + Visible(3): 'U32' + Space(1): ' ' + Visible(13): 'WATL_TokKind;' +Line 449 - Chunks 5: + Visible(4): 'enum' + Space(1): ' ' + Visible(12): 'WATL_TokKind' + Space(1): ' ' + Visible(1): '{' +Line 450 - Chunks 8: + Tab(1): ' ' + Visible(14): 'WATL_Tok_Space' + Space(10): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): ''' + Space(1): ' ' + Visible(2): '',' +Line 451 - Chunks 6: + Tab(1): ' ' + Visible(12): 'WATL_Tok_Tab' + Space(12): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): ''\t',' +Line 452 - Chunks 6: + Tab(1): ' ' + Visible(23): 'WATL_Tok_CarriageReturn' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): ''\r',' +Line 453 - Chunks 6: + Tab(1): ' ' + Visible(17): 'WATL_Tok_LineFeed' + Space(7): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): ''\n',' +Line 454 - Chunks 6: + Tab(1): ' ' + Visible(13): 'WATL_Tok_Text' + Space(11): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): '0xFFFFFFFF,' +Line 455 - Chunks 1: + Visible(2): '};' +Line 456 - Chunks 0: +Line 457 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(8): 'WATL_Tok' + Space(1): ' ' + Visible(9): 'WATL_Tok;' +Line 458 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(8): 'WATL_Tok' + Space(1): ' ' + Visible(1): '{' +Line 459 - Chunks 4: + Tab(1): ' ' + Visible(5): 'UTF8*' + Space(1): ' ' + Visible(5): 'code;' +Line 460 - Chunks 1: + Visible(2): '};' +Line 461 - Chunks 0: +Line 462 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(13): 'WATL_SliceTok' + Space(1): ' ' + Visible(14): 'WATL_SliceTok;' +Line 463 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(13): 'WATL_SliceTok' + Space(1): ' ' + Visible(1): '{' +Line 464 - Chunks 4: + Tab(1): ' ' + Visible(9): 'WATL_Tok*' + Space(1): ' ' + Visible(4): 'ptr;' +Line 465 - Chunks 4: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(5): ' ' + Visible(4): 'len;' +Line 466 - Chunks 1: + Visible(2): '};' +Line 467 - Chunks 0: +Line 468 - Chunks 11: + Visible(4): 'Str8' + Space(1): ' ' + Visible(27): 'watl_tok_str8(WATL_SliceTok' + Space(1): ' ' + Visible(5): 'toks,' + Space(1): ' ' + Visible(9): 'WATL_Tok*' + Space(1): ' ' + Visible(4): 'tok)' + Space(1): ' ' + Visible(1): '{' +Line 469 - Chunks 12: + Tab(1): ' ' + Visible(9): 'WATL_Tok*' + Space(1): ' ' + Visible(4): 'next' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(3): 'tok' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(2): '1;' +Line 470 - Chunks 10: + Tab(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(5): 'start' + Space(4): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'cast(USIZE,' + Space(1): ' ' + Visible(16): 'toks.ptr->code);' +Line 471 - Chunks 10: + Tab(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(4): 'curr' + Space(5): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'cast(USIZE,' + Space(1): ' ' + Visible(11): 'tok->code);' +Line 472 - Chunks 12: + Tab(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(6): 'offset' + Space(3): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): 'curr' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(6): 'start;' +Line 473 - Chunks 12: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(4): 'left' + Space(5): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(8): 'toks.len' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(7): 'offset;' +Line 474 - Chunks 20: + Tab(1): ' ' + Visible(3): 'B32' + Space(3): ' ' + Visible(8): 'last_tok' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(6): '(start' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(9): 'toks.len)' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(5): '(curr' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(6): 'left);' +Line 475 - Chunks 8: + Tab(1): ' ' + Visible(4): 'Str8' + Space(2): ' ' + Visible(4): 'text' + Space(5): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 476 - Chunks 6: + Tab(1): ' ' + Visible(8): 'text.ptr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'tok->code;' +Line 477 - Chunks 17: + Tab(1): ' ' + Visible(8): 'text.len' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): 'next' + Space(1): ' ' + Visible(1): '>' + Space(1): ' ' + Visible(9): '(toks.ptr' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(9): 'toks.len)' + Space(1): ' ' + Visible(1): '?' + Space(1): ' ' +Line 478 - Chunks 2: + Tab(2): ' ' + Visible(4): 'left' +Line 479 - Chunks 16: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(9): 'Othwerise' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'last' + Space(1): ' ' + Visible(5): 'minus' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'curr.' +Line 480 - Chunks 10: + Tab(1): ' ' + Visible(1): ':' + Tab(1): ' ' + Visible(11): 'cast(SSIZE,' + Space(1): ' ' + Visible(10): 'next->code' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(11): 'tok->code);' +Line 481 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(5): 'text;' +Line 482 - Chunks 1: + Visible(1): '}' +Line 483 - Chunks 0: +Line 484 - Chunks 1: + Visible(2): '/*' +Line 485 - Chunks 57: + Visible(6): 'Tokens' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(9): 'allocated' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'backing' + Space(1): ' ' + Visible(5): 'slice' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(6): 'memory' + Space(1): ' ' + Visible(7): 'defined' + Space(1): ' ' + Visible(2): 'by' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'user.' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'pool' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(6): 'memory' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(7): 'ideally' + Space(1): ' ' + Visible(3): 'not' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(11): 'constrained' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'fixed' + Space(1): ' ' + Visible(4): 'size' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'stack.' +Line 486 - Chunks 69: + Visible(2): 'So' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(8): 'allocate' + Space(1): ' ' + Visible(2): '10' + Space(1): ' ' + Visible(4): 'megs' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(4): 'heap' + Space(1): ' ' + Visible(6): 'memory' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'act' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'pool' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'tokens.' + Space(1): ' ' + Visible(5): 'We'll' + Space(1): ' ' + Visible(4): 'keep' + Space(1): ' ' + Visible(5): 'track' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'how' + Space(1): ' ' + Visible(4): 'much' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'pool' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'used' + Space(1): ' ' + Visible(3): 'via' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(3): 'new' + Space(1): ' ' + Visible(6): 'memory' + Space(1): ' ' + Visible(8): 'tracking' + Space(1): ' ' + Visible(10): 'construct:' +Line 487 - Chunks 5: + Visible(3): 'The' + Space(1): ' ' + Visible(11): 'fixed-sized' + Space(1): ' ' + Visible(6): 'arena.' +Line 488 - Chunks 0: +Line 489 - Chunks 37: + Visible(1): 'A' + Space(1): ' ' + Visible(5): 'basic' + Space(1): ' ' + Visible(5): 'fixed' + Space(1): ' ' + Visible(4): 'size' + Space(1): ' ' + Visible(5): 'arena' + Space(1): ' ' + Visible(4): 'only' + Space(1): ' ' + Visible(3): 'has' + Space(1): ' ' + Visible(5): 'three' + Space(1): ' ' + Visible(10): 'components' + Space(1): ' ' + Visible(5): 'which' + Space(1): ' ' + Visible(3): 'can' + Space(1): ' ' + Visible(4): 'vary' + Space(1): ' ' + Visible(9): 'depending' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(10): 'convention' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'user' + Space(1): ' ' + Visible(8): 'perfers.' +Line 490 - Chunks 31: + Visible(2): 'In' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(5): 'track' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(9): 'capacity,' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(8): 'starting' + Space(1): ' ' + Visible(8): 'address,' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(3): 'how' + Space(1): ' ' + Visible(4): 'much' + Space(1): ' ' + Visible(3): 'has' + Space(1): ' ' + Visible(4): 'been' + Space(1): ' ' + Visible(10): 'comitted..' +Line 491 - Chunks 1: + Visible(2): '*/' +Line 492 - Chunks 0: +Line 493 - Chunks 37: + Visible(2): '//' + Space(1): ' ' + Visible(2): 'We' + Space(1): ' ' + Visible(3): 'use' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(14): 'in-conjunction' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(6): 'Areans' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'save' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'point' + Space(1): ' ' + Visible(5): 'thats' + Space(1): ' ' + Visible(4): 'safe' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(6): 'rewind' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(2): 'by' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'user.' +Line 494 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(7): 'ArenaSP' + Space(1): ' ' + Visible(8): 'ArenaSP;' +Line 495 - Chunks 11: + Visible(6): 'struct' + Space(1): ' ' + Visible(7): 'ArenaSP' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(5): 'void*' + Space(1): ' ' + Visible(4): 'ptr;' + Space(1): ' ' + Visible(2): '};' +Line 496 - Chunks 0: +Line 497 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(6): 'region' + Space(1): ' ' + Visible(6): 'FArena' +Line 498 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(6): 'FArena' + Space(1): ' ' + Visible(7): 'FArena;' +Line 499 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(6): 'FArena' + Space(1): ' ' + Visible(1): '{' +Line 500 - Chunks 4: + Tab(1): ' ' + Visible(5): 'void*' + Space(1): ' ' + Visible(6): 'start;' +Line 501 - Chunks 4: + Tab(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(9): 'capacity;' +Line 502 - Chunks 4: + Tab(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(5): 'used;' +Line 503 - Chunks 1: + Visible(2): '};' +Line 504 - Chunks 9: + Visible(4): 'void' + Space(5): ' ' + Visible(23): 'api_farena_init(FArena*' + Space(1): ' ' + Visible(6): 'arena,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(5): 'mem);' +Line 505 - Chunks 7: + Visible(6): 'FArena' + Space(3): ' ' + Visible(11): 'farena_init' + Space(4): ' ' + Visible(10): '(SliceByte' + Space(1): ' ' + Visible(5): 'mem);' +Line 506 - Chunks 19: + Visible(5): 'void*' + Space(4): ' ' + Visible(12): 'farena__push' + Space(3): ' ' + Visible(8): '(FArena*' + Space(1): ' ' + Visible(6): 'arena,' + Space(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(10): 'type_size,' + Space(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(7): 'amount,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(14): 'dbg_typename);' +Line 507 - Chunks 7: + Visible(4): 'void' + Space(5): ' ' + Visible(12): 'farena_reset' + Space(3): ' ' + Visible(8): '(FArena*' + Space(1): ' ' + Visible(7): 'arena);' +Line 508 - Chunks 11: + Visible(4): 'void' + Space(5): ' ' + Visible(13): 'farena_rewind' + Space(2): ' ' + Visible(8): '(FArena*' + Space(1): ' ' + Visible(6): 'arena,' + Space(1): ' ' + Visible(7): 'ArenaSP' + Space(1): ' ' + Visible(11): 'savepoint);' +Line 509 - Chunks 7: + Visible(7): 'ArenaSP' + Space(2): ' ' + Visible(11): 'farena_save' + Space(4): ' ' + Visible(7): '(FArena' + Space(2): ' ' + Visible(7): 'arena);' +Line 510 - Chunks 0: +Line 511 - Chunks 19: + Visible(7): '#define' + Space(2): ' ' + Visible(18): 'farena_push(arena,' + Space(1): ' ' + Visible(5): 'type)' + Space(15): ' ' + Visible(11): 'cast(type*,' + Space(6): ' ' + Visible(14): 'farena__push(&' + Space(1): ' ' + Visible(6): 'arena,' + Space(1): ' ' + Visible(14): 'size_of(type),' + Space(1): ' ' + Visible(2): '1,' + Space(6): ' ' + Visible(21): 'lit(stringify(type)))' + Space(9): ' ' + Visible(1): ')' +Line 512 - Chunks 27: + Visible(7): '#define' + Space(2): ' ' + Visible(24): 'farena_push_array(arena,' + Space(1): ' ' + Visible(5): 'type,' + Space(1): ' ' + Visible(7): 'amount)' + Space(1): ' ' + Visible(6): '(Slice' + Space(1): ' ' + Visible(2): '##' + Space(1): ' ' + Visible(6): 'type){' + Space(1): ' ' + Visible(14): 'farena__push(&' + Space(1): ' ' + Visible(6): 'arena,' + Space(1): ' ' + Visible(14): 'size_of(type),' + Space(1): ' ' + Visible(7): 'amount,' + Space(1): ' ' + Visible(22): 'lit(stringify(type))),' + Space(1): ' ' + Visible(6): 'amount' + Space(1): ' ' + Visible(1): '}' +Line 513 - Chunks 0: +Line 514 - Chunks 1: + Visible(6): 'inline' +Line 515 - Chunks 11: + Visible(4): 'void' + Space(1): ' ' + Visible(23): 'api_farena_init(FArena*' + Space(1): ' ' + Visible(6): 'arena,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(4): 'mem)' + Space(1): ' ' + Visible(1): '{' +Line 516 - Chunks 6: + Tab(1): ' ' + Visible(12): 'arena->start' + Space(4): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(8): 'mem.ptr;' +Line 517 - Chunks 6: + Tab(1): ' ' + Visible(15): 'arena->capacity' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(8): 'mem.len;' +Line 518 - Chunks 6: + Tab(1): ' ' + Visible(11): 'arena->used' + Space(5): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 519 - Chunks 1: + Visible(1): '}' +Line 520 - Chunks 25: + Visible(6): 'inline' + Space(1): ' ' + Visible(6): 'FArena' + Space(1): ' ' + Visible(21): 'farena_init(SliceByte' + Space(1): ' ' + Visible(4): 'mem)' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(6): 'FArena' + Space(1): ' ' + Visible(6): 'arena;' + Space(1): ' ' + Visible(17): 'api_farena_init(&' + Space(1): ' ' + Visible(6): 'arena,' + Space(1): ' ' + Visible(5): 'mem);' + Space(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(6): 'arena;' + Space(1): ' ' + Visible(1): '}' +Line 521 - Chunks 0: +Line 522 - Chunks 1: + Visible(6): 'inline' +Line 523 - Chunks 19: + Visible(5): 'void*' + Space(1): ' ' + Visible(20): 'farena__push(FArena*' + Space(1): ' ' + Visible(6): 'arena,' + Space(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(10): 'type_size,' + Space(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(7): 'amount,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(13): 'dbg_typename)' + Space(1): ' ' + Visible(1): '{' +Line 524 - Chunks 12: + Tab(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(9): 'to_commit' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(9): 'type_size' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(7): 'amount;' +Line 525 - Chunks 12: + Tab(1): ' ' + Visible(5): 'USIZE' + Space(1): ' ' + Visible(6): 'unused' + Space(4): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(15): 'arena->capacity' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(12): 'arena->used;' +Line 526 - Chunks 6: + Tab(1): ' ' + Visible(16): 'assert(to_commit' + Space(1): ' ' + Visible(2): '<=' + Space(1): ' ' + Visible(8): 'unused);' +Line 527 - Chunks 16: + Tab(1): ' ' + Visible(5): 'void*' + Space(2): ' ' + Visible(3): 'ptr' + Space(3): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'cast(void*,' + Space(1): ' ' + Visible(11): 'cast(USIZE,' + Space(1): ' ' + Visible(13): 'arena->start)' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(13): 'arena->used);' +Line 528 - Chunks 6: + Tab(1): ' ' + Visible(11): 'arena->used' + Space(1): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(10): 'to_commit;' +Line 529 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(4): 'ptr;' +Line 530 - Chunks 1: + Visible(1): '}' +Line 531 - Chunks 0: +Line 532 - Chunks 1: + Visible(6): 'inline' +Line 533 - Chunks 11: + Visible(4): 'void' + Space(1): ' ' + Visible(21): 'farena_rewind(FArena*' + Space(1): ' ' + Visible(6): 'arena,' + Space(1): ' ' + Visible(7): 'ArenaSP' + Space(1): ' ' + Visible(10): 'savepoint)' + Space(1): ' ' + Visible(1): '{' +Line 534 - Chunks 16: + Tab(1): ' ' + Visible(5): 'void*' + Space(1): ' ' + Visible(3): 'end' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'cast(void*,' + Space(1): ' ' + Visible(11): 'cast(USIZE,' + Space(1): ' ' + Visible(13): 'arena->start)' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(13): 'arena->used);' +Line 535 - Chunks 6: + Tab(1): ' ' + Visible(28): 'assert_bounds(savepoint.ptr,' + Space(1): ' ' + Visible(13): 'arena->start,' + Space(1): ' ' + Visible(5): 'end);' +Line 536 - Chunks 14: + Tab(1): ' ' + Visible(11): 'arena->used' + Space(1): ' ' + Visible(2): '-=' + Space(1): ' ' + Visible(11): 'cast(USIZE,' + Space(1): ' ' + Visible(14): 'savepoint.ptr)' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(11): 'cast(USIZE,' + Space(1): ' ' + Visible(14): 'arena->start);' +Line 537 - Chunks 1: + Visible(1): '}' +Line 538 - Chunks 0: +Line 539 - Chunks 17: + Visible(6): 'inline' + Space(1): ' ' + Visible(4): 'void' + Space(4): ' ' + Visible(20): 'farena_reset(FArena*' + Space(1): ' ' + Visible(6): 'arena)' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(11): 'arena->used' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' + Space(1): ' ' + Visible(1): '}' +Line 540 - Chunks 28: + Visible(6): 'inline' + Space(1): ' ' + Visible(7): 'ArenaSP' + Space(1): ' ' + Visible(11): 'farena_save' + Space(1): ' ' + Visible(7): '(FArena' + Space(2): ' ' + Visible(6): 'arena)' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(7): 'ArenaSP' + Space(1): ' ' + Visible(10): 'savepoint;' + Space(1): ' ' + Visible(13): 'savepoint.ptr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(12): 'arena.start;' + Space(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(10): 'savepoint;' + Space(1): ' ' + Visible(1): '}' + Space(1): ' ' +Line 541 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(9): 'endregion' + Space(1): ' ' + Visible(6): 'FArena' +Line 542 - Chunks 0: +Line 543 - Chunks 7: + Visible(3): '#if' + Space(1): ' ' + Visible(26): 'defined(DEMO__WATL_LEX_V1)' + Space(9): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(1): '\' +Line 544 - Chunks 6: + Tab(1): ' ' + Visible(28): 'defined(DEMO__WATL_PARSE_V1)' + Space(7): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(1): '\' +Line 545 - Chunks 6: + Tab(1): ' ' + Visible(34): 'defined(DEMO__WATL_DUMP_PREREQ_V1)' + Space(1): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(1): '\' +Line 546 - Chunks 2: + Tab(1): ' ' + Visible(27): 'defined(DEMO__WATL_DUMP_V1)' +Line 547 - Chunks 0: +Line 548 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(12): 'WATL_LexInfo' + Space(1): ' ' + Visible(1): '{' +Line 549 - Chunks 12: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(3): 'For' + Space(1): ' ' + Visible(3): 'now' + Space(1): ' ' + Visible(4): 'just' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'tokens' +Line 550 - Chunks 4: + Tab(1): ' ' + Visible(13): 'WATL_SliceTok' + Space(1): ' ' + Visible(7): 'tokens;' +Line 551 - Chunks 1: + Visible(2): '};' +Line 552 - Chunks 0: +Line 553 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(14): 'Opts__watl_lex' + Space(1): ' ' + Visible(1): '{' +Line 554 - Chunks 1: + Visible(2): '/*' +Line 555 - Chunks 46: + Tab(1): ' ' + Visible(3): 'For' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(9): 'operation' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(7): 'enforce' + Space(1): ' ' + Visible(4): 'that' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'arena' + Space(1): ' ' + Visible(4): 'must' + Space(1): ' ' + Visible(8): 'linearly' + Space(1): ' ' + Visible(8): 'allocate' + Space(1): ' ' + Visible(4): 'each' + Space(1): ' ' + Visible(6): 'token,' + Space(1): ' ' + Visible(7): 'forming' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(8): 'strictly' + Space(1): ' ' + Visible(8): 'adjacent' + Space(1): ' ' + Visible(4): 'sent' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(8): 'elements' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(2): 'an' + Space(1): ' ' + Visible(6): 'array.' +Line 556 - Chunks 51: + Tab(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(3): 'not' + Space(1): ' ' + Visible(9): 'necessary' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(2): 'an' + Space(1): ' ' + Visible(10): 'equivalent' + Space(1): ' ' + Visible(7): 'process' + Space(1): ' ' + Visible(5): 'could' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(4): 'done' + Space(1): ' ' + Visible(5): 'where' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'tokens' + Space(1): ' ' + Visible(7): 'instead' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(16): 'semi-contigously' + Space(1): ' ' + Visible(9): 'organized' + Space(1): ' ' + Visible(4): 'into' + Space(1): ' ' + Visible(6): 'linked' + Space(1): ' ' + Visible(4): 'list' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'chained' + Space(1): ' ' + Visible(6): 'arena,' + Space(1): ' ' +Line 557 - Chunks 12: + Tab(1): ' ' + Visible(2): 'or' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'tokens' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(7): 'sparely' + Space(1): ' ' + Visible(7): 'cached.' +Line 558 - Chunks 34: + Tab(1): ' ' + Visible(5): 'Where' + Space(1): ' ' + Visible(5): 'their' + Space(1): ' ' + Visible(8): 'position' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(5): 'their' + Space(1): ' ' + Visible(11): 'originating' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(3): 'not' + Space(1): ' ' + Visible(10): 'preserved.' + Space(1): ' ' + Visible(2): 'In' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(5): 'we're' + Space(1): ' ' + Visible(7): 'keeping' + Space(1): ' ' + Visible(2): 'it' + Space(1): ' ' + Visible(7): 'simple.' +Line 559 - Chunks 30: + Tab(1): ' ' + Visible(6): 'Tokens' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'same' + Space(1): ' ' + Visible(5): 'block' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(6): 'memory' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(4): 'they' + Space(1): ' ' + Visible(5): 'don't' + Space(1): ' ' + Visible(3): 'use' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(6): 'cache.' +Line 560 - Chunks 1: + Visible(2): '*/' +Line 561 - Chunks 4: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(10): 'pool_toks;' +Line 562 - Chunks 1: + Visible(2): '};' +Line 563 - Chunks 0: +Line 564 - Chunks 13: + Visible(2): '//' + Space(1): ' ' + Visible(2): 'We' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(8): 'assuming' + Space(1): ' ' + Visible(10): 'everything' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(11): 'utf8-ascii.' +Line 565 - Chunks 13: + Visible(4): 'void' + Space(1): ' ' + Visible(26): 'watl_lex_api(WATL_LexInfo*' + Space(1): ' ' + Visible(5): 'info,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(7): 'source,' + Space(1): ' ' + Visible(15): 'Opts__watl_lex*' + Space(1): ' ' + Visible(5): 'opts)' +Line 566 - Chunks 1: + Visible(1): '{' +Line 567 - Chunks 6: + Tab(1): ' ' + Visible(11): 'assert(info' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 568 - Chunks 2: + Tab(1): ' ' + Visible(21): 'slice_assert(source);' +Line 569 - Chunks 6: + Tab(1): ' ' + Visible(11): 'assert(opts' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 570 - Chunks 0: +Line 571 - Chunks 8: + Tab(1): ' ' + Visible(6): 'FArena' + Space(1): ' ' + Visible(5): 'arena' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'farena_init(opts->pool_toks);' +Line 572 - Chunks 0: +Line 573 - Chunks 12: + Tab(1): ' ' + Visible(5): 'UTF8*' + Space(1): ' ' + Visible(3): 'end' + Space(4): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'source.ptr' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(11): 'source.len;' +Line 574 - Chunks 8: + Tab(1): ' ' + Visible(5): 'UTF8*' + Space(1): ' ' + Visible(6): 'cursor' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'source.ptr;' +Line 575 - Chunks 8: + Tab(1): ' ' + Visible(5): 'UTF8*' + Space(1): ' ' + Visible(4): 'prev' + Space(3): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'source.ptr;' +Line 576 - Chunks 10: + Tab(1): ' ' + Visible(4): 'UTF8' + Space(2): ' ' + Visible(4): 'code' + Space(3): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(7): 'cursor;' +Line 577 - Chunks 0: +Line 578 - Chunks 8: + Tab(1): ' ' + Visible(3): 'B32' + Space(7): ' ' + Visible(14): 'was_formatting' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): 'true;' +Line 579 - Chunks 8: + Tab(1): ' ' + Visible(9): 'WATL_Tok*' + Space(1): ' ' + Visible(3): 'tok' + Space(12): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(8): 'nullptr;' +Line 580 - Chunks 10: + Tab(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(2): '(;' + Space(1): ' ' + Visible(6): 'cursor' + Space(1): ' ' + Visible(1): '<' + Space(1): ' ' + Visible(5): 'end;)' +Line 581 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 582 - Chunks 4: + Tab(2): ' ' + Visible(6): 'switch' + Space(1): ' ' + Visible(6): '(code)' +Line 583 - Chunks 2: + Tab(2): ' ' + Visible(1): '{' +Line 584 - Chunks 4: + Tab(3): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(15): 'WATL_Tok_Space:' +Line 585 - Chunks 4: + Tab(3): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(13): 'WATL_Tok_Tab:' +Line 586 - Chunks 2: + Tab(3): ' ' + Visible(1): '{' +Line 587 - Chunks 14: + Tab(4): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(2): '(*' + Space(1): ' ' + Visible(4): 'prev' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(7): 'cursor)' + Space(1): ' ' + Visible(1): '{' +Line 588 - Chunks 8: + Tab(5): ' ' + Visible(3): 'tok' + Space(12): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(18): 'farena_push(arena,' + Space(1): ' ' + Visible(10): 'WATL_Tok);' +Line 589 - Chunks 6: + Tab(5): ' ' + Visible(9): 'tok->code' + Space(6): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(7): 'cursor;' +Line 590 - Chunks 6: + Tab(5): ' ' + Visible(14): 'was_formatting' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): 'true;' +Line 591 - Chunks 2: + Tab(4): ' ' + Visible(1): '}' +Line 592 - Chunks 6: + Tab(4): ' ' + Visible(6): 'cursor' + Space(1): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(2): '1;' +Line 593 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 594 - Chunks 2: + Tab(3): ' ' + Visible(6): 'break;' +Line 595 - Chunks 0: +Line 596 - Chunks 6: + Tab(3): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(18): 'WATL_Tok_LineFeed:' + Space(1): ' ' + Visible(1): '{' +Line 597 - Chunks 8: + Tab(5): ' ' + Visible(3): 'tok' + Space(12): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(18): 'farena_push(arena,' + Space(1): ' ' + Visible(10): 'WATL_Tok);' +Line 598 - Chunks 6: + Tab(5): ' ' + Visible(9): 'tok->code' + Space(6): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(7): 'cursor;' +Line 599 - Chunks 6: + Tab(5): ' ' + Visible(6): 'cursor' + Space(8): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(2): '1;' +Line 600 - Chunks 7: + Tab(5): ' ' + Visible(14): 'was_formatting' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): 'true;' + Space(1): ' ' +Line 601 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 602 - Chunks 2: + Tab(3): ' ' + Visible(6): 'break;' +Line 603 - Chunks 0: +Line 604 - Chunks 16: + Tab(3): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(8): 'Assuming' + Space(1): ' ' + Visible(4): 'what' + Space(1): ' ' + Visible(5): 'comes' + Space(1): ' ' + Visible(5): 'after' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(4): 'line' + Space(1): ' ' + Visible(5): 'feed.' +Line 605 - Chunks 6: + Tab(3): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(24): 'WATL_Tok_CarriageReturn:' + Space(1): ' ' + Visible(1): '{' +Line 606 - Chunks 8: + Tab(5): ' ' + Visible(3): 'tok' + Space(12): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(18): 'farena_push(arena,' + Space(1): ' ' + Visible(10): 'WATL_Tok);' +Line 607 - Chunks 6: + Tab(5): ' ' + Visible(9): 'tok->code' + Space(6): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(7): 'cursor;' +Line 608 - Chunks 6: + Tab(5): ' ' + Visible(6): 'cursor' + Space(8): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(2): '2;' +Line 609 - Chunks 7: + Tab(5): ' ' + Visible(14): 'was_formatting' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): 'true;' + Space(1): ' ' +Line 610 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 611 - Chunks 2: + Tab(3): ' ' + Visible(6): 'break;' +Line 612 - Chunks 0: +Line 613 - Chunks 2: + Tab(3): ' ' + Visible(8): 'default:' +Line 614 - Chunks 2: + Tab(3): ' ' + Visible(1): '{' +Line 615 - Chunks 6: + Tab(4): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(16): '(was_formatting)' + Space(1): ' ' + Visible(1): '{' +Line 616 - Chunks 8: + Tab(5): ' ' + Visible(3): 'tok' + Space(12): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(18): 'farena_push(arena,' + Space(1): ' ' + Visible(10): 'WATL_Tok);' +Line 617 - Chunks 6: + Tab(5): ' ' + Visible(9): 'tok->code' + Space(6): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(7): 'cursor;' +Line 618 - Chunks 6: + Tab(5): ' ' + Visible(14): 'was_formatting' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(6): 'false;' +Line 619 - Chunks 2: + Tab(4): ' ' + Visible(1): '}' +Line 620 - Chunks 6: + Tab(4): ' ' + Visible(6): 'cursor' + Space(1): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(2): '1;' +Line 621 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 622 - Chunks 2: + Tab(3): ' ' + Visible(6): 'break;' +Line 623 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 624 - Chunks 10: + Tab(2): ' ' + Visible(4): 'prev' + Space(1): ' ' + Visible(1): '=' + Space(2): ' ' + Visible(6): 'cursor' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(2): '1;' +Line 625 - Chunks 8: + Tab(2): ' ' + Visible(4): 'code' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(7): 'cursor;' +Line 626 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 627 - Chunks 6: + Tab(1): ' ' + Visible(16): 'info->tokens.ptr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(12): 'arena.start;' +Line 628 - Chunks 10: + Tab(1): ' ' + Visible(16): 'info->tokens.len' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'arena.used' + Space(1): ' ' + Visible(1): '/' + Space(1): ' ' + Visible(19): 'size_of(WATL_Tok*);' +Line 629 - Chunks 1: + Visible(1): '}' +Line 630 - Chunks 0: +Line 631 - Chunks 3: + Visible(6): '#endif' + Space(1): ' ' + Visible(17): 'DEMO__WATL_LEX_V1' +Line 632 - Chunks 0: +Line 633 - Chunks 1: + Visible(6): 'inline' +Line 634 - Chunks 11: + Visible(12): 'WATL_LexInfo' + Space(1): ' ' + Visible(14): 'watl__lex(Str8' + Space(1): ' ' + Visible(7): 'source,' + Space(1): ' ' + Visible(15): 'Opts__watl_lex*' + Space(1): ' ' + Visible(5): 'opts)' + Space(1): ' ' + Visible(1): '{' +Line 635 - Chunks 8: + Tab(1): ' ' + Visible(12): 'WATL_LexInfo' + Space(1): ' ' + Visible(6): 'result' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 636 - Chunks 8: + Tab(1): ' ' + Visible(14): 'watl_lex_api(&' + Space(1): ' ' + Visible(7): 'result,' + Space(1): ' ' + Visible(7): 'source,' + Space(1): ' ' + Visible(6): 'opts);' +Line 637 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(7): 'result;' +Line 638 - Chunks 1: + Visible(1): '}' +Line 639 - Chunks 0: +Line 640 - Chunks 1: + Visible(2): '/*' +Line 641 - Chunks 35: + Visible(2): 'To' + Space(1): ' ' + Visible(8): 'allocate' + Space(1): ' ' + Visible(4): 'onto' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'heap' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(4): 'make' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'basic' + Space(1): ' ' + Visible(15): 'slicemem_malloc' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(9): 'allocate,' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(4): 'make' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(13): 'corresponding' + Space(1): ' ' + Visible(13): 'slicemem_free' + Space(1): ' ' + Visible(7): 'aswell.' +Line 642 - Chunks 47: + Visible(7): 'However' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(5): 'don't' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'use' + Space(1): ' ' + Visible(2): 'it' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(8): 'example.' + Space(1): ' ' + Visible(3): 'The' + Space(1): ' ' + Visible(2): 'OS' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(7): 'cleanup' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'pages' + Space(1): ' ' + Visible(4): 'used' + Space(1): ' ' + Visible(2): 'by' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'process' + Space(1): ' ' + Visible(6): 'during' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(12): 'termination.' +Line 643 - Chunks 1: + Visible(2): '*/' +Line 644 - Chunks 0: +Line 645 - Chunks 5: + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(20): 'slicemem_alloc(USIZE' + Space(1): ' ' + Visible(7): 'amount)' +Line 646 - Chunks 1: + Visible(1): '{' +Line 647 - Chunks 6: + Tab(1): ' ' + Visible(13): 'assert(amount' + Space(1): ' ' + Visible(1): '>' + Space(1): ' ' + Visible(14): 'KILOBTYES(4));' +Line 648 - Chunks 8: + Tab(1): ' ' + Visible(5): 'void*' + Space(1): ' ' + Visible(6): 'result' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(15): 'malloc(amount);' +Line 649 - Chunks 6: + Tab(1): ' ' + Visible(13): 'assert(result' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 650 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(3): 'mem' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '{' +Line 651 - Chunks 6: + Tab(2): ' ' + Visible(4): '.ptr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(7): 'result,' +Line 652 - Chunks 6: + Tab(2): ' ' + Visible(4): '.len' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(6): 'amount' +Line 653 - Chunks 2: + Tab(1): ' ' + Visible(2): '};' +Line 654 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(4): 'mem;' +Line 655 - Chunks 1: + Visible(1): '}' +Line 656 - Chunks 7: + Visible(4): 'void' + Space(1): ' ' + Visible(23): 'slicemem_free(SliceByte' + Space(1): ' ' + Visible(4): 'mem)' + Space(1): ' ' + Visible(1): '{' +Line 657 - Chunks 2: + Tab(1): ' ' + Visible(14): 'free(mem.ptr);' +Line 658 - Chunks 1: + Visible(1): '}' +Line 659 - Chunks 0: +Line 660 - Chunks 3: + Visible(6): '#ifdef' + Space(1): ' ' + Visible(17): 'DEMO__WATL_LEX_V1' +Line 661 - Chunks 3: + Visible(3): 'int' + Space(1): ' ' + Visible(6): 'main()' +Line 662 - Chunks 1: + Visible(1): '{' +Line 663 - Chunks 24: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'limit' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(4): 'read' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): '64kb' + Space(1): ' ' + Visible(2): 'at' + Space(1): ' ' + Visible(5): 'most.' +Line 664 - Chunks 8: + Tab(1): ' ' + Visible(9): 'FMem_64KB' + Space(4): ' ' + Visible(8): 'read_mem' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 665 - Chunks 16: + Tab(1): ' ' + Visible(12): 'FileOpResult' + Space(1): ' ' + Visible(8): 'read_res' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(43): 'file_read_contents(lit("demo.str_cache.c"),' + Space(1): ' ' + Visible(8): '.backing' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'fmem_slice(read_mem)' + Space(1): ' ' + Visible(2): ');' +Line 666 - Chunks 0: +Line 667 - Chunks 36: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'limit' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(3): 'lex' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'only' + Space(1): ' ' + Visible(1): '8' + Space(1): ' ' + Visible(4): 'megs' + Space(1): ' ' + Visible(5): 'worth' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(8): 'tracking' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'file.' +Line 668 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(5): ' ' + Visible(8): 'mem_toks' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'slicemem_alloc(MEGABYTES(8));' +Line 669 - Chunks 16: + Tab(1): ' ' + Visible(12): 'WATL_LexInfo' + Space(1): ' ' + Visible(7): 'lex_res' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'watl_lex(pcast(Str8,' + Space(1): ' ' + Visible(18): 'read_res.content),' + Space(1): ' ' + Visible(10): '.pool_toks' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'mem_toks);' +Line 670 - Chunks 22: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(11): 'unnecessary' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(3): 'but' + Space(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(3): 'you' + Space(1): ' ' + Visible(4): 'want' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(11): 'explicitly:' +Line 671 - Chunks 2: + Tab(1): ' ' + Visible(24): 'slicemem_free(mem_toks);' +Line 672 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(2): '0;' +Line 673 - Chunks 1: + Visible(1): '}' +Line 674 - Chunks 1: + Visible(6): '#endif' +Line 675 - Chunks 0: +Line 676 - Chunks 1: + Visible(2): '/*' +Line 677 - Chunks 23: + Visible(4): 'Next' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(5): 'parse' + Space(1): ' ' + Visible(5): 'these' + Space(1): ' ' + Visible(6): 'tokens' + Space(1): ' ' + Visible(4): 'into' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(11): 'rudimentary' + Space(1): ' ' + Visible(4): 'WATL' + Space(1): ' ' + Visible(8): 'Abstract' + Space(1): ' ' + Visible(6): 'Syntax' + Space(1): ' ' + Visible(5): 'Tree.' +Line 678 - Chunks 35: + Visible(1): '*' + Space(1): ' ' + Visible(3): 'The' + Space(1): ' ' + Visible(4): 'tree' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(9): 'top-level' + Space(1): ' ' + Visible(9): 'organized' + Space(1): ' ' + Visible(2): 'by' + Space(1): ' ' + Visible(5): 'lines' + Space(1): ' ' + Visible(10): 'consisting' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(6): 'linked' + Space(1): ' ' + Visible(6): 'slices' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(6): 'visble' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(11): 'non-visible' + Space(1): ' ' + Visible(7): 'tokens.' +Line 679 - Chunks 51: + Visible(1): '*' + Space(1): ' ' + Visible(4): 'Just' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'lexical' + Space(1): ' ' + Visible(9): 'analysis,' + Space(1): ' ' + Visible(5): 'lines' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(5): 'nodes' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(8): 'linearly' + Space(1): ' ' + Visible(9): 'allocated' + Space(1): ' ' + Visible(8): 'adjacent' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'each' + Space(1): ' ' + Visible(6): 'other.' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(6): 'allows' + Space(1): ' ' + Visible(2): 'us' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(7): 'utilize' + Space(1): ' ' + Visible(5): 'array' + Space(1): ' ' + Visible(11): 'operations.' +Line 680 - Chunks 1: + Visible(2): '*/' +Line 681 - Chunks 0: +Line 682 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(14): 'WATL_ParseInfo' + Space(1): ' ' + Visible(15): 'WATL_ParseInfo;' +Line 683 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(16): 'Opts__watl_parse' + Space(1): ' ' + Visible(17): 'Opts__watl_parse;' +Line 684 - Chunks 13: + Visible(4): 'void' + Space(11): ' ' + Visible(30): 'watl_parse_api(WATL_ParseInfo*' + Space(1): ' ' + Visible(5): 'info,' + Space(1): ' ' + Visible(13): 'WATL_SliceTok' + Space(1): ' ' + Visible(7): 'tokens,' + Space(1): ' ' + Visible(17): 'Opts__watl_parse*' + Space(1): ' ' + Visible(6): 'opts);' +Line 685 - Chunks 13: + Visible(14): 'WATL_ParseInfo' + Space(1): ' ' + Visible(11): 'watl__parse' + Space(3): ' ' + Visible(1): '(' + Space(22): ' ' + Visible(13): 'WATL_SliceTok' + Space(1): ' ' + Visible(7): 'tokens,' + Space(1): ' ' + Visible(17): 'Opts__watl_parse*' + Space(1): ' ' + Visible(6): 'opts);' +Line 686 - Chunks 13: + Visible(7): '#define' + Space(1): ' ' + Visible(18): 'watl_parse(tokens,' + Space(1): ' ' + Visible(4): '...)' + Space(1): ' ' + Visible(19): 'watl__parse(tokens,' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(18): '(Opts__watl_parse)' + Space(1): ' ' + Visible(14): '{__VA_ARGS__})' +Line 687 - Chunks 0: +Line 688 - Chunks 1: + Visible(2): '/*' +Line 689 - Chunks 43: + Visible(3): 'For' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'sake' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'exercise,' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(11): 'eliminating' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(11): 'association' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'file's' + Space(1): ' ' + Visible(7): 'strings' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(7): 'instead' + Space(1): ' ' + Visible(5): 'cache' + Space(1): ' ' + Visible(5): 'them.' +Line 690 - Chunks 1: + Visible(2): '*/' +Line 691 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(6): 'region' + Space(1): ' ' + Visible(9): 'Str8Cache' +Line 692 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(9): 'Str8Cache' + Space(1): ' ' + Visible(10): 'Str8Cache;' +Line 693 - Chunks 17: + Visible(4): 'void' + Space(6): ' ' + Visible(29): 'str8cache_init_api(Str8Cache*' + Space(1): ' ' + Visible(6): 'cache,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(9): 'mem_strs,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(10): 'mem_slots,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(11): 'mem_table);' +Line 694 - Chunks 17: + Visible(9): 'Str8Cache' + Space(1): ' ' + Visible(14): 'str8cache_init' + Space(4): ' ' + Visible(1): '(' + Space(18): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(9): 'mem_strs,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(10): 'mem_slots,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(11): 'mem_table);' +Line 695 - Chunks 0: +Line 696 - Chunks 35: + Visible(2): '//' + Space(1): ' ' + Visible(1): 'A' + Space(1): ' ' + Visible(5): 'cache' + Space(1): ' ' + Visible(4): 'like' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(6): 'relies' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(7): 'tabling' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(7): 'entires' + Space(1): ' ' + Visible(10): 'utiliszing' + Space(1): ' ' + Visible(2): 'an' + Space(1): ' ' + Visible(5): 'index' + Space(1): ' ' + Visible(7): 'derived' + Space(1): ' ' + Visible(4): 'from' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'hashed' + Space(1): ' ' + Visible(3): 'ID.' +Line 697 - Chunks 21: + Visible(2): '//' + Space(1): ' ' + Visible(3): 'For' + Space(1): ' ' + Visible(5): 'these' + Space(1): ' ' + Visible(7): 'strings' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'hash' + Space(1): ' ' + Visible(6): 'called' + Space(1): ' ' + Visible(5): 'djb8:' +Line 698 - Chunks 0: +Line 699 - Chunks 9: + Visible(2): '//' + Space(1): ' ' + Visible(11): 'Introducing' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'slice' + Space(1): ' ' + Visible(9): 'iterator:' +Line 700 - Chunks 27: + Visible(7): '#define' + Space(1): ' ' + Visible(21): 'slice_iter(container,' + Space(1): ' ' + Visible(5): 'iter)' + Space(1): ' ' + Visible(23): 'typeof((container).ptr)' + Space(1): ' ' + Visible(4): 'iter' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(16): '(container).ptr;' + Space(1): ' ' + Visible(4): 'iter' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(16): '((container).ptr' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(17): '(container).len);' + Space(1): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(4): 'iter' +Line 701 - Chunks 0: +Line 702 - Chunks 1: + Visible(6): 'inline' +Line 703 - Chunks 11: + Visible(4): 'void' + Space(1): ' ' + Visible(16): 'hash64_djb8(U64*' + Space(1): ' ' + Visible(5): 'hash,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(6): 'bytes)' + Space(1): ' ' + Visible(1): '{' +Line 704 - Chunks 28: + Tab(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): '(U8' + Space(1): ' ' + Visible(6): 'const*' + Space(1): ' ' + Visible(4): 'elem' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'bytes.ptr;' + Space(1): ' ' + Visible(4): 'elem' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(10): '(bytes.ptr' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(11): 'bytes.len);' + Space(1): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(5): 'elem)' + Space(1): ' ' + Visible(1): '{' +Line 705 - Chunks 18: + Tab(2): ' ' + Visible(5): '*hash' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(9): '(((*hash)' + Space(1): ' ' + Visible(2): '<<' + Space(1): ' ' + Visible(2): '8)' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(8): '(*hash))' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(8): '(*elem);' +Line 706 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 707 - Chunks 1: + Visible(1): '}' +Line 708 - Chunks 0: +Line 709 - Chunks 33: + Visible(2): '//' + Space(1): ' ' + Visible(3): 'For' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'library' + Space(1): ' ' + Visible(2): 'or' + Space(1): ' ' + Visible(8): 'codebase' + Space(1): ' ' + Visible(3): 'its' + Space(1): ' ' + Visible(11): 'recommended' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(5): 'setup' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(11): 'metaprogram' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(8): 'generate' + Space(1): ' ' + Visible(4): 'hash' + Space(1): ' ' + Visible(9): 'utilizing' + Space(1): ' ' + Visible(10): 'containers' +Line 710 - Chunks 43: + Visible(2): '//' + Space(1): ' ' + Visible(2): 'Or' + Space(1): ' ' + Visible(5): 'other' + Space(1): ' ' + Visible(10): 'containers' + Space(1): ' ' + Visible(4): 'that' + Space(1): ' ' + Visible(6): 'cannot' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(12): 'sufficiently' + Space(1): ' ' + Visible(6): 'lifted' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(7): 'general' + Space(1): ' ' + Visible(7): 'runtime' + Space(1): ' ' + Visible(5): 'paths' + Space(1): ' ' + Visible(7): 'without' + Space(1): ' ' + Visible(6): 'losing' + Space(1): ' ' + Visible(9): 'ergonomic' + Space(1): ' ' + Visible(5): 'debug' + Space(1): ' ' + Visible(4): 'type' + Space(1): ' ' + Visible(4): 'info' + Space(1): ' ' + Visible(2): 'or' + Space(1): ' ' + Visible(15): 'type-constraint' + Space(1): ' ' + Visible(13): 'enforcements.' +Line 711 - Chunks 55: + Visible(2): '//' + Space(1): ' ' + Visible(6): 'Unlike' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(8): 'template' + Space(1): ' ' + Visible(6): 'markup' + Space(1): ' ' + Visible(3): 'C++' + Space(1): ' ' + Visible(5): 'uses,' + Space(1): ' ' + Visible(3): 'you' + Space(1): ' ' + Visible(3): 'can' + Space(1): ' ' + Visible(6): 'strike' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'balance' + Space(1): ' ' + Visible(7): 'between' + Space(1): ' ' + Visible(3): 'how' + Space(1): ' ' + Visible(4): 'many' + Space(1): ' ' + Visible(11): 'definitions' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(11): 'redundantly' + Space(1): ' ' + Visible(4): 'made' + Space(1): ' ' + Visible(2): 'or' + Space(1): ' ' + Visible(9): 'optimized' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(10): 'collapsing' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'general' + Space(1): ' ' + Visible(4): 'path' +Line 712 - Chunks 13: + Visible(2): '//' + Space(1): ' ' + Visible(5): 'based' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(6): 'target' + Space(1): ' ' + Visible(12): 'optimization' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(13): 'debugability.' +Line 713 - Chunks 0: +Line 714 - Chunks 37: + Visible(2): '//' + Space(1): ' ' + Visible(3): 'For' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(8): 'example,' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(12): 'hand-rolling' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'fixed' + Space(1): ' ' + Visible(5): 'sized' + Space(1): ' ' + Visible(5): 'table' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(6): 'excess' + Space(1): ' ' + Visible(4): 'slot' + Space(1): ' ' + Visible(8): 'chaining' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(9): 'colliding' + Space(1): ' ' + Visible(6): 'slots.' +Line 715 - Chunks 35: + Visible(2): '//' + Space(1): ' ' + Visible(3): 'Its' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(10): 'relatively' + Space(1): ' ' + Visible(6): 'simple' + Space(1): ' ' + Visible(14): 'implementation' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(10): 'hand-roll.' + Space(1): ' ' + Visible(5): 'These' + Space(1): ' ' + Visible(6): 'things' + Space(1): ' ' + Visible(4): 'tend' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(6): 'become' + Space(1): ' ' + Visible(10): 'unyeilding' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(4): 'more' + Space(1): ' ' + Visible(8): 'advanced' + Space(1): ' ' + Visible(9): 'variants.' +Line 716 - Chunks 0: +Line 717 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(14): 'Str8Cache_Slot' + Space(1): ' ' + Visible(15): 'Str8Cache_Slot;' +Line 718 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(14): 'Str8Cache_Slot' + Space(1): ' ' + Visible(1): '{' +Line 719 - Chunks 4: + Tab(1): ' ' + Visible(15): 'Str8Cache_Slot*' + Space(1): ' ' + Visible(5): 'prev;' +Line 720 - Chunks 4: + Tab(1): ' ' + Visible(15): 'Str8Cache_Slot*' + Space(1): ' ' + Visible(5): 'next;' +Line 721 - Chunks 4: + Tab(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(6): 'value;' +Line 722 - Chunks 4: + Tab(1): ' ' + Visible(3): 'U64' + Space(2): ' ' + Visible(4): 'key;' +Line 723 - Chunks 4: + Tab(1): ' ' + Visible(3): 'B32' + Space(2): ' ' + Visible(9): 'occupied;' +Line 724 - Chunks 1: + Visible(2): '};' +Line 725 - Chunks 0: +Line 726 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(19): 'Str8Cache_SliceSlot' + Space(1): ' ' + Visible(20): 'Str8Cache_SliceSlot;' +Line 727 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(19): 'Str8Cache_SliceSlot' + Space(1): ' ' + Visible(1): '{' +Line 728 - Chunks 4: + Tab(1): ' ' + Visible(15): 'Str8Cache_Slot*' + Space(1): ' ' + Visible(4): 'ptr;' +Line 729 - Chunks 4: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(11): ' ' + Visible(4): 'len;' +Line 730 - Chunks 1: + Visible(2): '};' +Line 731 - Chunks 0: +Line 732 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(9): 'Str8Cache' + Space(1): ' ' + Visible(1): '{' +Line 733 - Chunks 4: + Tab(1): ' ' + Visible(6): 'FArena' + Space(15): ' ' + Visible(6): 'a_str;' +Line 734 - Chunks 4: + Tab(1): ' ' + Visible(19): 'Str8Cache_SliceSlot' + Space(2): ' ' + Visible(5): 'pool;' +Line 735 - Chunks 4: + Tab(1): ' ' + Visible(15): 'Str8Cache_Slot*' + Space(6): ' ' + Visible(7): 'vacant;' +Line 736 - Chunks 4: + Tab(1): ' ' + Visible(19): 'Str8Cache_SliceSlot' + Space(2): ' ' + Visible(6): 'table;' +Line 737 - Chunks 1: + Visible(2): '};' +Line 738 - Chunks 0: +Line 739 - Chunks 35: + Visible(9): 'Str8Cache' + Space(1): ' ' + Visible(24): 'str8cache_init(SliceByte' + Space(1): ' ' + Visible(9): 'mem_strs,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(10): 'mem_slots,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(10): 'mem_table)' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(9): 'Str8Cache' + Space(1): ' ' + Visible(6): 'cache;' + Space(1): ' ' + Visible(20): 'str8cache_init_api(&' + Space(1): ' ' + Visible(6): 'cache,' + Space(1): ' ' + Visible(9): 'mem_strs,' + Space(1): ' ' + Visible(10): 'mem_slots,' + Space(1): ' ' + Visible(11): 'mem_table);' + Space(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(6): 'cache;' + Space(1): ' ' + Visible(1): '}' +Line 740 - Chunks 1: + Visible(6): 'inline' +Line 741 - Chunks 19: + Visible(4): 'void' + Space(1): ' ' + Visible(29): 'str8cache_init_api(Str8Cache*' + Space(1): ' ' + Visible(6): 'cache,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(9): 'mem_strs,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(10): 'mem_slots,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(10): 'mem_table)' + Space(1): ' ' + Visible(1): '{' +Line 742 - Chunks 6: + Tab(1): ' ' + Visible(12): 'assert(cache' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 743 - Chunks 2: + Tab(1): ' ' + Visible(23): 'slice_assert(mem_strs);' +Line 744 - Chunks 2: + Tab(1): ' ' + Visible(24): 'slice_assert(mem_slots);' +Line 745 - Chunks 2: + Tab(1): ' ' + Visible(24): 'slice_assert(mem_table);' +Line 746 - Chunks 6: + Tab(1): ' ' + Visible(12): 'cache->a_str' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(22): 'farena_init(mem_strs);' +Line 747 - Chunks 16: + Tab(1): ' ' + Visible(11): 'cache->pool' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(22): '(Str8Cache_SliceSlot){' + Space(1): ' ' + Visible(11): 'cast(void*,' + Space(1): ' ' + Visible(15): 'mem_slots.ptr),' + Space(1): ' ' + Visible(13): 'mem_slots.len' + Space(1): ' ' + Visible(1): '/' + Space(1): ' ' + Visible(25): 'size_of(Str8Cache_Slot)};' +Line 748 - Chunks 16: + Tab(1): ' ' + Visible(12): 'cache->table' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(22): '(Str8Cache_SliceSlot){' + Space(1): ' ' + Visible(11): 'cast(void*,' + Space(1): ' ' + Visible(15): 'mem_table.ptr),' + Space(1): ' ' + Visible(13): 'mem_table.len' + Space(1): ' ' + Visible(1): '/' + Space(1): ' ' + Visible(25): 'size_of(Str8Cache_Slot)};' +Line 749 - Chunks 2: + Tab(1): ' ' + Visible(24): 'slice_zero(cache->pool);' +Line 750 - Chunks 2: + Tab(1): ' ' + Visible(25): 'slice_zero(cache->table);' +Line 751 - Chunks 1: + Visible(1): '}' +Line 752 - Chunks 0: +Line 753 - Chunks 5: + Visible(4): 'void' + Space(1): ' ' + Visible(26): 'str8cache_clear(Str8Cache*' + Space(1): ' ' + Visible(6): 'cache)' +Line 754 - Chunks 1: + Visible(1): '{' +Line 755 - Chunks 6: + Tab(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(25): '(slice_iter(cache->table,' + Space(1): ' ' + Visible(6): 'slot))' +Line 756 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 757 - Chunks 10: + Tab(2): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(5): '(slot' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(8): 'nullptr)' + Space(1): ' ' + Visible(1): '{' +Line 758 - Chunks 2: + Tab(3): ' ' + Visible(9): 'continue;' +Line 759 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 760 - Chunks 24: + Tab(2): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(16): '(Str8Cache_Slot*' + Space(1): ' ' + Visible(10): 'probe_slot' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'slot->next;' + Space(1): ' ' + Visible(10): 'probe_slot' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(8): 'nullptr;' + Space(1): ' ' + Visible(10): 'probe_slot' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(17): 'probe_slot->next)' + Space(1): ' ' + Visible(1): '{' +Line 761 - Chunks 6: + Tab(3): ' ' + Visible(14): 'slot->occupied' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(6): 'false;' +Line 762 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 763 - Chunks 6: + Tab(2): ' ' + Visible(14): 'slot->occupied' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(6): 'false;' +Line 764 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 765 - Chunks 1: + Visible(1): '}' +Line 766 - Chunks 0: +Line 767 - Chunks 27: + Visible(2): '//' + Space(1): ' ' + Visible(2): 'We' + Space(1): ' ' + Visible(5): 'don't' + Space(1): ' ' + Visible(9): 'introduce' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'remove' + Space(1): ' ' + Visible(6): 'option' + Space(1): ' ' + Visible(7): 'because' + Space(1): ' ' + Visible(5): 'we're' + Space(1): ' ' + Visible(3): 'not' + Space(1): ' ' + Visible(8): 'tracking' + Space(1): ' ' + Visible(5): 'fixed' + Space(1): ' ' + Visible(5): 'sized' + Space(1): ' ' + Visible(9): 'entities.' +Line 768 - Chunks 55: + Visible(2): '//' + Space(1): ' ' + Visible(7): 'Strings' + Space(1): ' ' + Visible(4): 'take' + Space(1): ' ' + Visible(2): 'up' + Space(1): ' ' + Visible(15): 'non-determistic' + Space(1): ' ' + Visible(5): 'sizes' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(5): 'their' + Space(1): ' ' + Visible(7): 'backing' + Space(1): ' ' + Visible(6): 'arena.' + Space(1): ' ' + Visible(2): 'So' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'only' + Space(1): ' ' + Visible(5): 'thing' + Space(1): ' ' + Visible(4): 'that' + Space(1): ' ' + Visible(3): 'can' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(4): 'done' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'cache' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(6): 'wiping' + Space(1): ' ' + Visible(2): 'it' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(9): 'recaching' + Space(1): ' ' + Visible(3): 'all' + Space(1): ' ' + Visible(8): 'strings.' +Line 769 - Chunks 0: +Line 770 - Chunks 1: + Visible(2): '/*' +Line 771 - Chunks 35: + Visible(4): 'When' + Space(1): ' ' + Visible(7): 'storing' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'hash' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'slot,' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(3): 'can' + Space(1): ' ' + Visible(6): 'almost' + Space(1): ' ' + Visible(5): 'never' + Space(1): ' ' + Visible(7): 'utilize' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'full' + Space(1): ' ' + Visible(5): 'width' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'key,' +Line 772 - Chunks 39: + Visible(2): 'so' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'must' + Space(1): ' ' + Visible(8): 'truncate' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(3): 'key' + Space(1): ' ' + Visible(3): 'via' + Space(1): ' ' + Visible(6): 'module' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'get' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): '"good' + Space(1): ' ' + Visible(7): 'enough"' + Space(1): ' ' + Visible(6): 'unique' + Space(1): ' ' + Visible(2): 'ID' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(5): 'place' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'table.' +Line 773 - Chunks 1: + Visible(2): '*/' +Line 774 - Chunks 1: + Visible(6): 'inline' +Line 775 - Chunks 11: + Visible(3): 'U64' + Space(1): ' ' + Visible(27): 'str8cache_slot_id(Str8Cache' + Space(1): ' ' + Visible(6): 'cache,' + Space(1): ' ' + Visible(3): 'U64' + Space(1): ' ' + Visible(4): 'key)' + Space(1): ' ' + Visible(1): '{' +Line 776 - Chunks 14: + Tab(1): ' ' + Visible(3): 'U64' + Space(1): ' ' + Visible(10): 'hash_index' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(3): 'key' + Space(1): ' ' + Visible(1): '%' + Space(1): ' ' + Visible(9): 'cast(U64,' + Space(1): ' ' + Visible(17): 'cache.table.len);' +Line 777 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(11): 'hash_index;' +Line 778 - Chunks 1: + Visible(1): '}' +Line 779 - Chunks 0: +Line 780 - Chunks 9: + Visible(5): 'Str8*' + Space(1): ' ' + Visible(23): 'str8cache_get(Str8Cache' + Space(1): ' ' + Visible(6): 'cache,' + Space(1): ' ' + Visible(3): 'U64' + Space(1): ' ' + Visible(4): 'key)' +Line 781 - Chunks 1: + Visible(1): '{' +Line 782 - Chunks 10: + Tab(1): ' ' + Visible(3): 'U64' + Space(13): ' ' + Visible(10): 'hash_index' + Space(3): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(24): 'str8cache_slot_id(cache,' + Space(1): ' ' + Visible(5): 'key);' +Line 783 - Chunks 10: + Tab(1): ' ' + Visible(15): 'Str8Cache_Slot*' + Space(1): ' ' + Visible(12): 'surface_slot' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(28): 'cache.table.ptr[hash_index];' +Line 784 - Chunks 11: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(13): '(surface_slot' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(8): 'nullptr)' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' +Line 785 - Chunks 4: + Tab(2): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(8): 'nullptr;' +Line 786 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 787 - Chunks 14: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(23): '(surface_slot->occupied' + Space(1): ' ' + Visible(2): '&&' + Space(1): ' ' + Visible(17): 'surface_slot->key' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(4): 'key)' + Space(1): ' ' + Visible(1): '{' +Line 788 - Chunks 6: + Tab(2): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(20): 'surface_slot->value;' +Line 789 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 790 - Chunks 22: + Tab(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(16): '(Str8Cache_Slot*' + Space(1): ' ' + Visible(4): 'slot' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(19): 'surface_slot->next;' + Space(1): ' ' + Visible(4): 'slot' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(8): 'nullptr;' + Space(1): ' ' + Visible(4): 'slot' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'slot->next)' +Line 791 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 792 - Chunks 14: + Tab(2): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(15): '(slot->occupied' + Space(1): ' ' + Visible(2): '&&' + Space(1): ' ' + Visible(9): 'slot->key' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(4): 'key)' + Space(1): ' ' + Visible(1): '{' +Line 793 - Chunks 6: + Tab(3): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(12): 'slot->value;' +Line 794 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 795 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 796 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(8): 'nullptr;' +Line 797 - Chunks 1: + Visible(1): '}' +Line 798 - Chunks 0: +Line 799 - Chunks 13: + Visible(5): 'Str8*' + Space(1): ' ' + Visible(24): 'str8cache_set(Str8Cache*' + Space(1): ' ' + Visible(6): 'cache,' + Space(1): ' ' + Visible(3): 'U64' + Space(1): ' ' + Visible(4): 'key,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(6): 'value)' +Line 800 - Chunks 1: + Visible(1): '{' +Line 801 - Chunks 10: + Tab(1): ' ' + Visible(3): 'U64' + Space(13): ' ' + Visible(10): 'hash_index' + Space(3): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(25): 'str8cache_slot_id(*cache,' + Space(1): ' ' + Visible(5): 'key);' +Line 802 - Chunks 10: + Tab(1): ' ' + Visible(15): 'Str8Cache_Slot*' + Space(1): ' ' + Visible(12): 'surface_slot' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(29): 'cache->table.ptr[hash_index];' +Line 803 - Chunks 14: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(2): '(!' + Space(1): ' ' + Visible(22): 'surface_slot->occupied' + Space(1): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(17): 'surface_slot->key' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(4): 'key)' +Line 804 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 805 - Chunks 10: + Tab(2): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(10): '(value.ptr' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(24): 'surface_slot->value.ptr)' + Space(1): ' ' + Visible(1): '{' +Line 806 - Chunks 22: + Tab(3): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(3): 'mem' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(14): 'farena__push(&' + Space(1): ' ' + Visible(13): 'cache->a_str,' + Space(1): ' ' + Visible(12): 'size_of(U8),' + Space(1): ' ' + Visible(10): 'value.len,' + Space(1): ' ' + Visible(13): 'lit("Str8")),' + Space(1): ' ' + Visible(9): 'value.len' + Space(1): ' ' + Visible(2): '};' +Line 807 - Chunks 4: + Tab(3): ' ' + Visible(15): 'slice_copy(mem,' + Space(1): ' ' + Visible(7): 'value);' +Line 808 - Chunks 8: + Tab(3): ' ' + Visible(19): 'surface_slot->value' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'pcast(Str8,' + Space(1): ' ' + Visible(5): 'mem);' +Line 809 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 810 - Chunks 6: + Tab(2): ' ' + Visible(17): 'surface_slot->key' + Space(6): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): 'key;' +Line 811 - Chunks 6: + Tab(2): ' ' + Visible(22): 'surface_slot->occupied' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): 'true;' +Line 812 - Chunks 6: + Tab(2): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(20): 'surface_slot->value;' +Line 813 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 814 - Chunks 8: + Tab(1): ' ' + Visible(15): 'Str8Cache_Slot*' + Space(1): ' ' + Visible(4): 'slot' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(13): 'surface_slot;' +Line 815 - Chunks 10: + Tab(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): '(;;' + Space(1): ' ' + Visible(4): 'slot' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'slot->next)' +Line 816 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 817 - Chunks 8: + Tab(2): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(11): '(slot->next' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(8): 'nullptr)' +Line 818 - Chunks 2: + Tab(2): ' ' + Visible(1): '{' +Line 819 - Chunks 38: + Tab(3): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(2): 'We' + Space(1): ' ' + Visible(3): 'had' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(10): 'collision,' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'grab' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'vacant' + Space(1): ' ' + Visible(4): 'slot' + Space(1): ' ' + Visible(4): 'from' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'pool' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(7): 'utilize' + Space(1): ' ' + Visible(2): 'it' + Space(1): ' ' + Visible(8): 'instead.' +Line 820 - Chunks 6: + Tab(3): ' ' + Visible(10): 'slot->next' + Space(7): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(14): 'cache->vacant;' +Line 821 - Chunks 8: + Tab(3): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(10): 'slot->next' + Space(5): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): '(Str8Cache_Slot){0};' +Line 822 - Chunks 6: + Tab(3): ' ' + Visible(16): 'slot->next->prev' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): 'slot;' +Line 823 - Chunks 0: +Line 824 - Chunks 12: + Tab(3): ' ' + Visible(15): 'Str8Cache_Slot*' + Space(1): ' ' + Visible(11): 'next_vacant' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(13): 'cache->vacant' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(2): '1;' +Line 825 - Chunks 12: + Tab(3): ' ' + Visible(18): 'assert(next_vacant' + Space(1): ' ' + Visible(1): '<' + Space(1): ' ' + Visible(15): 'cache->pool.ptr' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(15): 'cache->pool.len' + Space(1): ' ' + Visible(2): ');' +Line 826 - Chunks 22: + Tab(3): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(2): 'If' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'above' + Space(1): ' ' + Visible(5): 'fails' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(3): 'ran' + Space(1): ' ' + Visible(3): 'out' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(5): 'extra' + Space(1): ' ' + Visible(6): 'slots.' +Line 827 - Chunks 10: + Tab(3): ' ' + Visible(13): 'cache->vacant' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(13): 'cache->vacant' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(2): '1;' +Line 828 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 829 - Chunks 16: + Tab(2): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(1): '(' + Space(1): ' ' + Visible(1): '!' + Space(1): ' ' + Visible(20): 'slot->next->occupied' + Space(1): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(15): 'slot->next->key' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(4): 'key)' +Line 830 - Chunks 2: + Tab(2): ' ' + Visible(1): '{' +Line 831 - Chunks 10: + Tab(3): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(10): '(value.ptr' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(22): 'slot->next->value.ptr)' + Space(1): ' ' + Visible(1): '{' +Line 832 - Chunks 22: + Tab(4): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(3): 'mem' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(14): 'farena__push(&' + Space(1): ' ' + Visible(13): 'cache->a_str,' + Space(1): ' ' + Visible(12): 'size_of(U8),' + Space(1): ' ' + Visible(10): 'value.len,' + Space(1): ' ' + Visible(13): 'lit("Str8")),' + Space(1): ' ' + Visible(9): 'value.len' + Space(1): ' ' + Visible(2): '};' +Line 833 - Chunks 4: + Tab(4): ' ' + Visible(15): 'slice_copy(mem,' + Space(1): ' ' + Visible(7): 'value);' +Line 834 - Chunks 12: + Tab(4): ' ' + Visible(17): 'slot->next->value' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(15): '(Str8){mem.ptr,' + Space(1): ' ' + Visible(7): 'mem.len' + Space(1): ' ' + Visible(1): '/' + Space(1): ' ' + Visible(15): 'size_of(char)};' +Line 835 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 836 - Chunks 6: + Tab(3): ' ' + Visible(17): 'slot->next->value' + Space(4): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(6): 'value;' +Line 837 - Chunks 6: + Tab(3): ' ' + Visible(15): 'slot->next->key' + Space(6): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): 'key;' +Line 838 - Chunks 6: + Tab(3): ' ' + Visible(20): 'slot->next->occupied' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): 'true;' +Line 839 - Chunks 6: + Tab(3): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(18): 'slot->next->value;' +Line 840 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 841 - Chunks 40: + Tab(2): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(2): 'We' + Space(1): ' ' + Visible(4): 'keep' + Space(1): ' ' + Visible(10): 'traversing' + Space(1): ' ' + Visible(4): 'till' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'find' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'match' + Space(1): ' ' + Visible(2): 'or' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'find' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'vacancy' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(4): 'list' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'table.' +Line 842 - Chunks 31: + Tab(2): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'Make' + Space(1): ' ' + Visible(4): 'sure' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'tune' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'size' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'table' + Space(1): ' ' + Visible(2): 'so' + Space(1): ' ' + Visible(2): 'it' + Space(1): ' ' + Visible(4): 'does' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(5): 'less!' + Space(1): ' ' +Line 843 - Chunks 21: + Tab(2): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(5): 'Note:' + Space(1): ' ' + Visible(6): 'Tables' + Space(1): ' ' + Visible(5): 'sized' + Space(1): ' ' + Visible(2): 'by' + Space(1): ' ' + Visible(5): 'prime' + Space(1): ' ' + Visible(6): 'values' + Space(1): ' ' + Visible(7): 'collide' + Space(1): ' ' + Visible(4): 'less' + Space(1): ' ' + Visible(7): 'aswell.' + Space(1): ' ' +Line 844 - Chunks 48: + Tab(2): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(3): 'You' + Space(1): ' ' + Visible(3): 'can' + Space(1): ' ' + Visible(3): 'use' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'closest' + Space(1): ' ' + Visible(5): 'prime' + Space(1): ' ' + Visible(6): 'number' + Space(1): ' ' + Visible(6): 'lookup' + Space(1): ' ' + Visible(5): 'table' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(6): 'derive' + Space(1): ' ' + Visible(4): 'what' + Space(1): ' ' + Visible(6): 'length' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(6): 'expose' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'cache's' + Space(1): ' ' + Visible(5): 'table' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(4): 'hash' + Space(1): ' ' + Visible(2): 'ID' + Space(1): ' ' + Visible(11): 'resolution.' +Line 845 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 846 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(8): 'nullptr;' +Line 847 - Chunks 1: + Visible(1): '}' +Line 848 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(9): 'endregion' + Space(1): ' ' + Visible(9): 'Str8Cache' +Line 849 - Chunks 0: +Line 850 - Chunks 11: + Visible(2): '//' + Space(1): ' ' + Visible(7): 'Finally' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(10): 'abstracted' + Space(1): ' ' + Visible(5): 'cache' + Space(1): ' ' + Visible(10): 'interface:' +Line 851 - Chunks 9: + Visible(4): 'Str8' + Space(1): ' ' + Visible(21): 'cache_str8(Str8Cache*' + Space(1): ' ' + Visible(6): 'cache,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(4): 'str)' +Line 852 - Chunks 1: + Visible(1): '{' +Line 853 - Chunks 16: + Tab(1): ' ' + Visible(3): 'U64' + Space(1): ' ' + Visible(3): 'key' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' + Space(1): ' ' + Visible(13): 'hash64_djb8(&' + Space(1): ' ' + Visible(4): 'key,' + Space(1): ' ' + Visible(16): 'pcast(SliceByte,' + Space(1): ' ' + Visible(6): 'str));' +Line 854 - Chunks 12: + Tab(1): ' ' + Visible(5): 'Str8*' + Space(1): ' ' + Visible(6): 'result' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'str8cache_set(cache,' + Space(1): ' ' + Visible(4): 'key,' + Space(1): ' ' + Visible(5): 'str);' +Line 855 - Chunks 6: + Tab(1): ' ' + Visible(13): 'assert(result' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 856 - Chunks 6: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(7): 'result;' +Line 857 - Chunks 1: + Visible(1): '}' +Line 858 - Chunks 0: +Line 859 - Chunks 5: + Visible(7): 'typedef' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(10): 'WATL_Node;' +Line 860 - Chunks 3: + Visible(3): '#if' + Space(1): ' ' + Visible(1): '0' +Line 861 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(9): 'WATL_Node' + Space(1): ' ' + Visible(10): 'WATL_Node;' +Line 862 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(9): 'WATL_Node' + Space(1): ' ' + Visible(1): '{' +Line 863 - Chunks 4: + Tab(1): ' ' + Visible(13): 'WATL_NodeKind' + Space(1): ' ' + Visible(5): 'kind;' +Line 864 - Chunks 4: + Tab(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(6): 'entry;' +Line 865 - Chunks 1: + Visible(2): '};' +Line 866 - Chunks 1: + Visible(6): '#endif' +Line 867 - Chunks 0: +Line 868 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(9): 'WATL_Line' + Space(1): ' ' + Visible(10): 'WATL_Line;' +Line 869 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(9): 'WATL_Line' + Space(1): ' ' + Visible(1): '{' +Line 870 - Chunks 4: + Tab(1): ' ' + Visible(10): 'WATL_Node*' + Space(1): ' ' + Visible(4): 'ptr;' +Line 871 - Chunks 4: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(6): ' ' + Visible(4): 'len;' +Line 872 - Chunks 1: + Visible(2): '};' +Line 873 - Chunks 0: +Line 874 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(14): 'WATL_SliceLine' + Space(1): ' ' + Visible(15): 'WATL_SliceLine;' +Line 875 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(14): 'WATL_SliceLine' + Space(1): ' ' + Visible(1): '{' +Line 876 - Chunks 4: + Tab(1): ' ' + Visible(10): 'WATL_Line*' + Space(1): ' ' + Visible(4): 'ptr;' +Line 877 - Chunks 4: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(6): ' ' + Visible(4): 'len;' +Line 878 - Chunks 1: + Visible(2): '};' +Line 879 - Chunks 0: +Line 880 - Chunks 11: + Visible(3): '#if' + Space(1): ' ' + Visible(28): 'defined(DEMO__WATL_PARSE_V1)' + Space(1): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(34): 'defined(DEMO__WATL_DUMP_PREREQ_V1)' + Space(1): ' ' + Visible(2): '||' + Space(1): ' ' + Visible(27): 'defined(DEMO__WATL_DUMP_V1)' +Line 881 - Chunks 0: +Line 882 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(16): 'Opts__watl_parse' + Space(1): ' ' + Visible(1): '{' +Line 883 - Chunks 4: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(2): ' ' + Visible(14): 'backing_nodes;' +Line 884 - Chunks 4: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(2): ' ' + Visible(14): 'backing_lines;' +Line 885 - Chunks 4: + Tab(1): ' ' + Visible(10): 'Str8Cache*' + Space(1): ' ' + Visible(10): 'str_cache;' +Line 886 - Chunks 1: + Visible(2): '};' +Line 887 - Chunks 0: +Line 888 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(14): 'WATL_ParseInfo' + Space(1): ' ' + Visible(1): '{' +Line 889 - Chunks 4: + Tab(1): ' ' + Visible(14): 'WATL_SliceLine' + Space(1): ' ' + Visible(6): 'lines;' +Line 890 - Chunks 1: + Visible(2): '};' +Line 891 - Chunks 0: +Line 892 - Chunks 13: + Visible(4): 'void' + Space(1): ' ' + Visible(30): 'watl_parse_api(WATL_ParseInfo*' + Space(1): ' ' + Visible(5): 'info,' + Space(1): ' ' + Visible(13): 'WATL_SliceTok' + Space(1): ' ' + Visible(7): 'tokens,' + Space(1): ' ' + Visible(17): 'Opts__watl_parse*' + Space(1): ' ' + Visible(5): 'opts)' +Line 893 - Chunks 1: + Visible(1): '{' +Line 894 - Chunks 6: + Tab(1): ' ' + Visible(11): 'assert(info' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 895 - Chunks 2: + Tab(1): ' ' + Visible(21): 'slice_assert(tokens);' +Line 896 - Chunks 6: + Tab(1): ' ' + Visible(11): 'assert(opts' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 897 - Chunks 0: +Line 898 - Chunks 8: + Tab(1): ' ' + Visible(6): 'FArena' + Space(1): ' ' + Visible(7): 'a_lines' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(33): 'farena_init(opts->backing_lines);' +Line 899 - Chunks 8: + Tab(1): ' ' + Visible(6): 'FArena' + Space(1): ' ' + Visible(7): 'a_nodes' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(33): 'farena_init(opts->backing_nodes);' +Line 900 - Chunks 0: +Line 901 - Chunks 10: + Tab(1): ' ' + Visible(10): 'WATL_Line*' + Space(1): ' ' + Visible(4): 'line' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'farena_push(a_lines,' + Space(1): ' ' + Visible(11): 'WATL_Line);' +Line 902 - Chunks 34: + Tab(1): ' ' + Visible(10): 'WATL_Node*' + Space(1): ' ' + Visible(4): 'curr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'farena_push(a_nodes,' + Space(1): ' ' + Visible(11): 'WATL_Node);' + Space(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(11): 'Preemtively' + Space(1): ' ' + Visible(8): 'allocate' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'node' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'line' + Space(1): ' ' + Visible(4): '(may' + Space(1): ' ' + Visible(3): 'not' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(5): 'used)' +Line 903 - Chunks 8: + Tab(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(4): 'curr' + Space(4): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(15): '(WATL_Node){0};' +Line 904 - Chunks 6: + Tab(1): ' ' + Visible(9): 'line->ptr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): 'curr;' +Line 905 - Chunks 6: + Tab(1): ' ' + Visible(9): 'line->len' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 906 - Chunks 6: + Tab(1): ' ' + Visible(15): 'info->lines.ptr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): 'line;' +Line 907 - Chunks 6: + Tab(1): ' ' + Visible(15): 'info->lines.len' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 908 - Chunks 6: + Tab(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(19): '(slice_iter(tokens,' + Space(1): ' ' + Visible(7): 'token))' +Line 909 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 910 - Chunks 6: + Tab(2): ' ' + Visible(6): 'switch' + Space(1): ' ' + Visible(2): '(*' + Space(1): ' ' + Visible(12): 'token->code)' +Line 911 - Chunks 2: + Tab(2): ' ' + Visible(1): '{' +Line 912 - Chunks 4: + Tab(3): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(24): 'WATL_Tok_CarriageReturn:' +Line 913 - Chunks 6: + Tab(3): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(18): 'WATL_Tok_LineFeed:' + Space(1): ' ' + Visible(1): '{' +Line 914 - Chunks 10: + Tab(4): ' ' + Visible(10): 'WATL_Line*' + Space(1): ' ' + Visible(8): 'new_line' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'farena_push(a_lines,' + Space(1): ' ' + Visible(11): 'WATL_Line);' +Line 915 - Chunks 6: + Tab(4): ' ' + Visible(4): 'line' + Space(13): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(9): 'new_line;' +Line 916 - Chunks 6: + Tab(4): ' ' + Visible(9): 'line->ptr' + Space(8): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): 'curr;' +Line 917 - Chunks 6: + Tab(4): ' ' + Visible(9): 'line->len' + Space(8): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 918 - Chunks 6: + Tab(4): ' ' + Visible(15): 'info->lines.len' + Space(1): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(2): '1;' +Line 919 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 920 - Chunks 2: + Tab(3): ' ' + Visible(9): 'continue;' +Line 921 - Chunks 0: +Line 922 - Chunks 2: + Tab(3): ' ' + Visible(8): 'default:' +Line 923 - Chunks 2: + Tab(3): ' ' + Visible(6): 'break;' +Line 924 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 925 - Chunks 0: +Line 926 - Chunks 10: + Tab(2): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(7): 'tok_str' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(21): 'watl_tok_str8(tokens,' + Space(1): ' ' + Visible(7): 'token);' +Line 927 - Chunks 14: + Tab(2): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(4): 'curr' + Space(7): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'cache_str8(' + Space(1): ' ' + Visible(16): 'opts->str_cache,' + Space(1): ' ' + Visible(7): 'tok_str' + Space(1): ' ' + Visible(2): ');' +Line 928 - Chunks 8: + Tab(2): ' ' + Visible(4): 'curr' + Space(9): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'farena_push(a_nodes,' + Space(1): ' ' + Visible(11): 'WATL_Node);' +Line 929 - Chunks 8: + Tab(2): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(4): 'curr' + Space(7): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(15): '(WATL_Node){0};' +Line 930 - Chunks 6: + Tab(2): ' ' + Visible(9): 'line->len' + Space(3): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(2): '1;' +Line 931 - Chunks 2: + Tab(2): ' ' + Visible(9): 'continue;' +Line 932 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 933 - Chunks 1: + Visible(1): '}' +Line 934 - Chunks 0: +Line 935 - Chunks 3: + Visible(6): '#endif' + Space(1): ' ' + Visible(19): 'DEMO__WATL_PARSE_V1' +Line 936 - Chunks 0: +Line 937 - Chunks 29: + Visible(14): 'WATL_ParseInfo' + Space(1): ' ' + Visible(25): 'watl__parse(WATL_SliceTok' + Space(1): ' ' + Visible(7): 'tokens,' + Space(1): ' ' + Visible(17): 'Opts__watl_parse*' + Space(1): ' ' + Visible(5): 'opts)' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(14): 'WATL_ParseInfo' + Space(1): ' ' + Visible(5): 'info;' + Space(1): ' ' + Visible(16): 'watl_parse_api(&' + Space(1): ' ' + Visible(5): 'info,' + Space(1): ' ' + Visible(7): 'tokens,' + Space(1): ' ' + Visible(6): 'opts);' + Space(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(5): 'info;' + Space(1): ' ' + Visible(1): '}' +Line 938 - Chunks 0: +Line 939 - Chunks 3: + Visible(6): '#ifdef' + Space(1): ' ' + Visible(19): 'DEMO__WATL_PARSE_V1' +Line 940 - Chunks 3: + Visible(3): 'int' + Space(1): ' ' + Visible(6): 'main()' +Line 941 - Chunks 1: + Visible(1): '{' +Line 942 - Chunks 24: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'limit' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(4): 'read' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): '64kb' + Space(1): ' ' + Visible(2): 'at' + Space(1): ' ' + Visible(5): 'most.' +Line 943 - Chunks 8: + Tab(1): ' ' + Visible(9): 'FMem_64KB' + Space(4): ' ' + Visible(8): 'read_mem' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 944 - Chunks 16: + Tab(1): ' ' + Visible(12): 'FileOpResult' + Space(1): ' ' + Visible(8): 'read_res' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(43): 'file_read_contents(lit("demo.str_cache.c"),' + Space(1): ' ' + Visible(8): '.backing' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'fmem_slice(read_mem)' + Space(1): ' ' + Visible(2): ');' +Line 945 - Chunks 0: +Line 946 - Chunks 36: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'limit' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(3): 'lex' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'only' + Space(1): ' ' + Visible(1): '8' + Space(1): ' ' + Visible(4): 'megs' + Space(1): ' ' + Visible(5): 'worth' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(8): 'tracking' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'file.' +Line 947 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(4): ' ' + Visible(8): 'mem_toks' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'slicemem_alloc(MEGABYTES(8));' +Line 948 - Chunks 16: + Tab(1): ' ' + Visible(12): 'WATL_LexInfo' + Space(1): ' ' + Visible(7): 'lex_res' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'watl_lex(pcast(Str8,' + Space(1): ' ' + Visible(18): 'read_res.content),' + Space(1): ' ' + Visible(10): '.pool_toks' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'mem_toks);' +Line 949 - Chunks 0: +Line 950 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(14): 'mem_cache_strs' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'slicemem_alloc(MEGABYTES(64));' +Line 951 - Chunks 20: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_cache_slots' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(19): 'slicemem_alloc(1024' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(4): '1024' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(2): '16' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(30): 'size_of(Str8Cache_SliceSlot));' +Line 952 - Chunks 16: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_cache_table' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(19): 'slicemem_alloc(1024' + Space(8): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(2): '16' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(30): 'size_of(Str8Cache_SliceSlot));' +Line 953 - Chunks 12: + Tab(1): ' ' + Visible(9): 'Str8Cache' + Space(1): ' ' + Visible(9): 'str_cache' + Space(7): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'str8cache_init(mem_cache_strs,' + Space(1): ' ' + Visible(16): 'mem_cache_slots,' + Space(1): ' ' + Visible(17): 'mem_cache_table);' +Line 954 - Chunks 0: +Line 955 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_parse_nodes' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'slicemem_alloc(MEGABYTES(4));' +Line 956 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_parse_lines' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'slicemem_alloc(MEGABYTES(4));' +Line 957 - Chunks 28: + Tab(1): ' ' + Visible(14): 'WATL_ParseInfo' + Space(1): ' ' + Visible(9): 'parse_res' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(26): 'watl_parse(lex_res.tokens,' + Space(1): ' ' + Visible(14): '.backing_nodes' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(16): 'mem_parse_nodes,' + Space(1): ' ' + Visible(14): '.backing_lines' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(16): 'mem_parse_lines,' + Space(1): ' ' + Visible(10): '.str_cache' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(11): 'str_cache);' +Line 958 - Chunks 0: +Line 959 - Chunks 22: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(11): 'unnecessary' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(3): 'but' + Space(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(3): 'you' + Space(1): ' ' + Visible(4): 'want' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(11): 'explicitly:' +Line 960 - Chunks 2: + Tab(1): ' ' + Visible(24): 'slicemem_free(mem_toks);' +Line 961 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(2): '0;' +Line 962 - Chunks 1: + Visible(1): '}' +Line 963 - Chunks 1: + Visible(6): '#endif' +Line 964 - Chunks 0: +Line 965 - Chunks 1: + Visible(2): '/*' +Line 966 - Chunks 21: + Visible(3): 'Now' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(4): 'like' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'dump' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(4): 'WATL' + Space(1): ' ' + Visible(9): 'structure' + Space(1): ' ' + Visible(4): 'into' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'file.' +Line 967 - Chunks 37: + Visible(2): 'To' + Space(1): ' ' + Visible(2): 'do' + Space(1): ' ' + Visible(2): 'so' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(8): 'generate' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'content' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(11): 'dynamically' + Space(1): ' ' + Visible(5): 'based' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(6): 'WATL's' + Space(1): ' ' + Visible(8): 'content.' +Line 968 - Chunks 0: +Line 969 - Chunks 37: + Visible(5): 'We'll' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(9): 'utilizing' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(3): 'new' + Space(1): ' ' + Visible(9): 'construct' + Space(1): ' ' + Visible(6): 'called' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(9): 'generator' + Space(1): ' ' + Visible(5): 'which' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(4): 'tied' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(3): 'all' + Space(1): ' ' + Visible(13): 'functionality' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(12): 'constructing' + Space(1): ' ' + Visible(8): 'strings.' +Line 970 - Chunks 1: + Visible(2): '*/' +Line 971 - Chunks 0: +Line 972 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(7): 'Str8Gen' + Space(1): ' ' + Visible(8): 'Str8Gen;' +Line 973 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(7): 'Str8Gen' + Space(1): ' ' + Visible(1): '{' +Line 974 - Chunks 22: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(8): 'backing;' + Space(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(3): 'For' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(7): 'backing' + Space(1): ' ' + Visible(6): 'buffer' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(5): 'fixed' + Space(1): ' ' + Visible(5): 'size.' +Line 975 - Chunks 4: + Tab(1): ' ' + Visible(5): 'UTF8*' + Space(1): ' ' + Visible(4): 'ptr;' +Line 976 - Chunks 4: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(4): 'len;' +Line 977 - Chunks 1: + Visible(2): '};' +Line 978 - Chunks 0: +Line 979 - Chunks 9: + Visible(4): 'void' + Space(4): ' ' + Visible(21): 'str8gen_init(Str8Gen*' + Space(1): ' ' + Visible(4): 'gen,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(9): 'backing);' +Line 980 - Chunks 7: + Visible(7): 'Str8Gen' + Space(1): ' ' + Visible(13): 'str8gen_make(' + Space(14): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(9): 'backing);' +Line 981 - Chunks 0: +Line 982 - Chunks 9: + Visible(4): 'void' + Space(1): ' ' + Visible(28): 'str8gen_append_str8(Str8Gen*' + Space(1): ' ' + Visible(4): 'gen,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(5): 'str);' +Line 983 - Chunks 0: +Line 984 - Chunks 11: + Visible(4): 'void' + Space(1): ' ' + Visible(21): 'str8gen_init(Str8Gen*' + Space(1): ' ' + Visible(4): 'gen,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(8): 'backing)' + Space(1): ' ' + Visible(1): '{' +Line 985 - Chunks 6: + Tab(1): ' ' + Visible(10): 'assert(gen' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 986 - Chunks 6: + Tab(1): ' ' + Visible(12): 'gen->backing' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(8): 'backing;' +Line 987 - Chunks 6: + Tab(1): ' ' + Visible(8): 'gen->ptr' + Space(5): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(12): 'backing.ptr;' +Line 988 - Chunks 6: + Tab(1): ' ' + Visible(8): 'gen->len' + Space(5): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 989 - Chunks 1: + Visible(1): '}' +Line 990 - Chunks 23: + Visible(7): 'Str8Gen' + Space(1): ' ' + Visible(22): 'str8gen_make(SliceByte' + Space(1): ' ' + Visible(8): 'backing)' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(7): 'Str8Gen' + Space(1): ' ' + Visible(4): 'gen;' + Space(1): ' ' + Visible(14): 'str8gen_init(&' + Space(1): ' ' + Visible(4): 'gen,' + Space(1): ' ' + Visible(9): 'backing);' + Space(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(4): 'gen;' + Space(1): ' ' + Visible(1): '}' +Line 991 - Chunks 0: +Line 992 - Chunks 11: + Visible(4): 'void' + Space(1): ' ' + Visible(28): 'str8gen_append_str8(Str8Gen*' + Space(1): ' ' + Visible(4): 'gen,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(4): 'str)' + Space(1): ' ' + Visible(1): '{' +Line 993 - Chunks 12: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(2): ' ' + Visible(4): 'left' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(16): 'gen->backing.len' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(9): 'gen->len;' +Line 994 - Chunks 6: + Tab(1): ' ' + Visible(11): 'assert(left' + Space(1): ' ' + Visible(2): '>=' + Space(1): ' ' + Visible(9): 'str.len);' +Line 995 - Chunks 14: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(4): 'dest' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(9): '{gen->ptr' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(9): 'gen->len,' + Space(1): ' ' + Visible(9): 'str.len};' +Line 996 - Chunks 4: + Tab(1): ' ' + Visible(16): 'slice_copy(dest,' + Space(1): ' ' + Visible(5): 'str);' +Line 997 - Chunks 2: + Tab(1): ' ' + Visible(7): 'return;' +Line 998 - Chunks 1: + Visible(1): '}' +Line 999 - Chunks 0: +Line 1000 - Chunks 1: + Visible(2): '/*' +Line 1001 - Chunks 39: + Visible(2): 'In' + Space(1): ' ' + Visible(5): 'order' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(7): 'support' + Space(1): ' ' + Visible(9): 'appending' + Space(1): ' ' + Visible(9): 'formatted' + Space(1): ' ' + Visible(7): 'content' + Space(1): ' ' + Visible(3): 'via' + Space(1): ' ' + Visible(20): 'str8gen_apppend_fmt,' + Space(1): ' ' + Visible(5): 'we'll' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(11): 'substiution' + Space(1): ' ' + Visible(9): 'formatter' + Space(1): ' ' + Visible(9): 'utilizing' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(13): 'identifiation' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(8): 'pattern.' +Line 1002 - Chunks 0: +Line 1003 - Chunks 39: + Visible(5): 'Where' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'format' + Space(1): ' ' + Visible(8): 'template' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(8): 'provided' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): ''id'' + Space(1): ' ' + Visible(7): 'wrapped' + Space(1): ' ' + Visible(2): 'in' + Space(1): ' ' + Visible(10): 'delimiters' + Space(1): ' ' + Visible(5): 'which' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(5): 'angle' + Space(1): ' ' + Visible(9): 'brackets:' + Space(1): ' ' + Visible(4): '' +Line 1004 - Chunks 19: + Visible(8): 'Example:' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(9): 'formatted' + Space(1): ' ' + Visible(6): 'string' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(4): 'have' + Space(1): ' ' + Visible(4): '' + Space(1): ' ' + Visible(10): 'subsituted' + Space(1): ' ' + Visible(4): 'into' + Space(1): ' ' + Visible(3): 'it.' +Line 1005 - Chunks 1: + Visible(2): '*/' +Line 1006 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(6): 'region' + Space(1): ' ' + Visible(10): 'fmt_vtoken' +Line 1007 - Chunks 0: +Line 1008 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(11): 'FmtTokEntry' + Space(1): ' ' + Visible(12): 'FmtTokEntry;' +Line 1009 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(11): 'FmtTokEntry' + Space(1): ' ' + Visible(1): '{' +Line 1010 - Chunks 4: + Tab(1): ' ' + Visible(3): 'U64' + Space(2): ' ' + Visible(4): 'key;' +Line 1011 - Chunks 4: + Tab(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(6): 'value;' +Line 1012 - Chunks 1: + Visible(2): '};' +Line 1013 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(16): 'SliceFmtTokEntry' + Space(1): ' ' + Visible(17): 'SliceFmtTokEntry;' +Line 1014 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(16): 'SliceFmtTokEntry' + Space(1): ' ' + Visible(1): '{' +Line 1015 - Chunks 4: + Tab(1): ' ' + Visible(12): 'FmtTokEntry*' + Space(1): ' ' + Visible(4): 'ptr;' +Line 1016 - Chunks 4: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(8): ' ' + Visible(4): 'len;' +Line 1017 - Chunks 1: + Visible(2): '};' +Line 1018 - Chunks 0: +Line 1019 - Chunks 9: + Visible(7): '#define' + Space(1): ' ' + Visible(16): 'slice_end(slice)' + Space(1): ' ' + Visible(10): '(slice.ptr' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(10): 'slice.len)' +Line 1020 - Chunks 0: +Line 1021 - Chunks 1: + Visible(2): '/*' +Line 1022 - Chunks 29: + Visible(4): 'This' + Space(1): ' ' + Visible(2): 'is' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(11): 'substiuting' + Space(1): ' ' + Visible(9): 'formatter' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'array' + Space(1): ' ' + Visible(5): 'table' + Space(1): ' ' + Visible(6): 'lookup' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(6): 'tokens' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(11): 'substitute.' +Line 1023 - Chunks 1: + Visible(2): '*/' +Line 1024 - Chunks 13: + Visible(4): 'Str8' + Space(1): ' ' + Visible(26): 'fmt_vtoken_slice(SliceByte' + Space(1): ' ' + Visible(7): 'buffer,' + Space(1): ' ' + Visible(16): 'SliceFmtTokEntry' + Space(1): ' ' + Visible(7): 'tokens,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(13): 'fmt_template)' +Line 1025 - Chunks 1: + Visible(1): '{' +Line 1026 - Chunks 2: + Tab(1): ' ' + Visible(21): 'slice_assert(buffer);' +Line 1027 - Chunks 2: + Tab(1): ' ' + Visible(21): 'slice_assert(tokens);' +Line 1028 - Chunks 2: + Tab(1): ' ' + Visible(27): 'slice_assert(fmt_template);' +Line 1029 - Chunks 0: +Line 1030 - Chunks 8: + Tab(1): ' ' + Visible(5): 'UTF8*' + Space(1): ' ' + Visible(13): 'cursor_buffer' + Space(4): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'buffer.ptr;' +Line 1031 - Chunks 8: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(16): 'buffer_remaining' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'buffer.len;' +Line 1032 - Chunks 0: +Line 1033 - Chunks 10: + Tab(1): ' ' + Visible(4): 'char' + Space(1): ' ' + Visible(9): 'curr_code' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(17): 'fmt_template.ptr;' +Line 1034 - Chunks 0: +Line 1035 - Chunks 8: + Tab(1): ' ' + Visible(5): 'UTF8*' + Space(1): ' ' + Visible(10): 'cursor_fmt' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(17): 'fmt_template.ptr;' +Line 1036 - Chunks 8: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(8): 'left_fmt' + Space(3): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(17): 'fmt_template.len;' +Line 1037 - Chunks 8: + Tab(1): ' ' + Visible(5): 'while' + Space(1): ' ' + Visible(9): '(left_fmt' + Space(1): ' ' + Visible(2): '&&' + Space(1): ' ' + Visible(17): 'buffer_remaining)' +Line 1038 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 1039 - Chunks 28: + Tab(2): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(7): 'Forward' + Space(1): ' ' + Visible(5): 'until' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(3): 'hit' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'delimiter' + Space(1): ' ' + Visible(3): ''<'' + Space(1): ' ' + Visible(2): 'or' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(10): 'template's' + Space(1): ' ' + Visible(8): 'contents' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(10): 'exhausted.' +Line 1040 - Chunks 20: + Tab(2): ' ' + Visible(5): 'while' + Space(1): ' ' + Visible(10): '(curr_code' + Space(1): ' ' + Visible(2): '&&' + Space(1): ' ' + Visible(9): 'curr_code' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(3): ''<'' + Space(1): ' ' + Visible(2): '&&' + Space(1): ' ' + Visible(10): 'cursor_fmt' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(24): 'slice_end(fmt_template))' +Line 1041 - Chunks 2: + Tab(2): ' ' + Visible(1): '{' +Line 1042 - Chunks 10: + Tab(3): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(13): 'cursor_buffer' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(11): 'cursor_fmt;' +Line 1043 - Chunks 4: + Tab(3): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(14): 'cursor_buffer;' +Line 1044 - Chunks 4: + Tab(3): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(11): 'cursor_fmt;' +Line 1045 - Chunks 4: + Tab(3): ' ' + Visible(2): '--' + Space(1): ' ' + Visible(17): 'buffer_remaining;' +Line 1046 - Chunks 4: + Tab(3): ' ' + Visible(2): '--' + Space(1): ' ' + Visible(9): 'left_fmt;' +Line 1047 - Chunks 0: +Line 1048 - Chunks 8: + Tab(3): ' ' + Visible(9): 'curr_code' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(11): 'cursor_fmt;' +Line 1049 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 1050 - Chunks 0: +Line 1051 - Chunks 8: + Tab(2): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(10): '(curr_code' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(4): ''<')' +Line 1052 - Chunks 2: + Tab(2): ' ' + Visible(1): '{' +Line 1053 - Chunks 12: + Tab(3): ' ' + Visible(5): 'UTF8*' + Space(1): ' ' + Visible(22): 'cursor_potential_token' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'cursor_fmt' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(2): '1;' +Line 1054 - Chunks 8: + Tab(3): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(22): 'potential_token_length' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 1055 - Chunks 0: +Line 1056 - Chunks 16: + Tab(3): ' ' + Visible(5): 'while' + Space(1): ' ' + Visible(2): '(*' + Space(1): ' ' + Visible(23): '(cursor_potential_token' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(23): 'potential_token_length)' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(4): ''>')' + Space(1): ' ' + Visible(1): '{' +Line 1057 - Chunks 4: + Tab(4): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(23): 'potential_token_length;' +Line 1058 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 1059 - Chunks 0: +Line 1060 - Chunks 26: + Tab(3): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(7): 'Hashing' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'potential' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(3): 'and' + Space(1): ' ' + Visible(5): 'cross' + Space(1): ' ' + Visible(8): 'checking' + Space(1): ' ' + Visible(2): 'it' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(5): 'table' +Line 1061 - Chunks 24: + Tab(3): ' ' + Visible(3): 'U64' + Space(3): ' ' + Visible(3): 'key' + Space(3): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' + Space(1): ' ' + Visible(13): 'hash64_djb8(&' + Space(1): ' ' + Visible(4): 'key,' + Space(1): ' ' + Visible(12): '(SliceByte){' + Space(1): ' ' + Visible(11): 'cast(void*,' + Space(1): ' ' + Visible(10): 'cursor_fmt' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(3): '1),' + Space(1): ' ' + Visible(25): 'potential_token_length});' +Line 1062 - Chunks 8: + Tab(3): ' ' + Visible(5): 'Str8*' + Space(1): ' ' + Visible(5): 'value' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(8): 'nullptr;' +Line 1063 - Chunks 6: + Tab(3): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(19): '(slice_iter(tokens,' + Space(1): ' ' + Visible(7): 'token))' +Line 1064 - Chunks 2: + Tab(3): ' ' + Visible(1): '{' +Line 1065 - Chunks 50: + Tab(4): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(2): 'We' + Space(1): ' ' + Visible(2): 'do' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(6): 'linear' + Space(1): ' ' + Visible(9): 'iteration' + Space(1): ' ' + Visible(7): 'instead' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'hash' + Space(1): ' ' + Visible(5): 'table' + Space(1): ' ' + Visible(6): 'lookup' + Space(1): ' ' + Visible(7): 'because' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(4): 'user' + Space(1): ' ' + Visible(6): 'should' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(5): 'never' + Space(1): ' ' + Visible(11): 'substiuting' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(4): 'more' + Space(1): ' ' + Visible(4): 'than' + Space(1): ' ' + Visible(3): '100' + Space(1): ' ' + Visible(6): 'unqiue' + Space(1): ' ' + Visible(8): 'tokens..' +Line 1066 - Chunks 10: + Tab(4): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(11): '(token->key' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(4): 'key)' + Space(1): ' ' + Visible(1): '{' +Line 1067 - Chunks 8: + Tab(5): ' ' + Visible(5): 'value' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(13): 'token->value;' +Line 1068 - Chunks 2: + Tab(5): ' ' + Visible(6): 'break;' +Line 1069 - Chunks 2: + Tab(4): ' ' + Visible(1): '}' +Line 1070 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 1071 - Chunks 0: +Line 1072 - Chunks 4: + Tab(3): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(7): '(value)' +Line 1073 - Chunks 2: + Tab(3): ' ' + Visible(1): '{' +Line 1074 - Chunks 8: + Tab(4): ' ' + Visible(5): 'SSIZE' + Space(7): ' ' + Visible(4): 'left' + Space(9): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'value->len;' +Line 1075 - Chunks 10: + Tab(4): ' ' + Visible(4): 'char' + Space(1): ' ' + Visible(6): 'const*' + Space(1): ' ' + Visible(12): 'cursor_value' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'value->ptr;' +Line 1076 - Chunks 0: +Line 1077 - Chunks 6: + Tab(4): ' ' + Visible(5): 'while' + Space(1): ' ' + Visible(5): '(left' + Space(1): ' ' + Visible(3): '--)' +Line 1078 - Chunks 2: + Tab(4): ' ' + Visible(1): '{' +Line 1079 - Chunks 10: + Tab(5): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(13): 'cursor_buffer' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(13): 'cursor_value;' +Line 1080 - Chunks 4: + Tab(5): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(14): 'cursor_buffer;' +Line 1081 - Chunks 4: + Tab(5): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(13): 'cursor_value;' +Line 1082 - Chunks 4: + Tab(5): ' ' + Visible(2): '--' + Space(1): ' ' + Visible(17): 'buffer_remaining;' +Line 1083 - Chunks 2: + Tab(4): ' ' + Visible(1): '}' +Line 1084 - Chunks 0: +Line 1085 - Chunks 18: + Tab(4): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'Sync' + Space(1): ' ' + Visible(6): 'cursor' + Space(1): ' ' + Visible(6): 'format' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(5): 'after' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(9): 'processed' + Space(1): ' ' + Visible(5): 'token' +Line 1086 - Chunks 14: + Tab(4): ' ' + Visible(10): 'cursor_fmt' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(22): 'cursor_potential_token' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(22): 'potential_token_length' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(2): '1;' +Line 1087 - Chunks 8: + Tab(4): ' ' + Visible(9): 'curr_code' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(11): 'cursor_fmt;' +Line 1088 - Chunks 34: + Tab(4): ' ' + Visible(8): 'left_fmt' + Space(2): ' ' + Visible(2): '-=' + Space(1): ' ' + Visible(22): 'potential_token_length' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(2): '2;' + Space(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(3): 'The' + Space(1): ' ' + Visible(1): '2' + Space(1): ' ' + Visible(4): 'here' + Space(1): ' ' + Visible(3): 'are' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(3): ''<'' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(3): ''>'' + Space(1): ' ' + Visible(10): 'delimiters' + Space(1): ' ' + Visible(5): 'being' + Space(1): ' ' + Visible(8): 'omitted.' +Line 1089 - Chunks 2: + Tab(4): ' ' + Visible(9): 'continue;' +Line 1090 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 1091 - Chunks 0: +Line 1092 - Chunks 10: + Tab(3): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(13): 'cursor_buffer' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(11): 'cursor_fmt;' +Line 1093 - Chunks 4: + Tab(3): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(14): 'cursor_buffer;' +Line 1094 - Chunks 4: + Tab(3): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(11): 'cursor_fmt;' +Line 1095 - Chunks 4: + Tab(3): ' ' + Visible(2): '--' + Space(1): ' ' + Visible(17): 'buffer_remaining;' +Line 1096 - Chunks 4: + Tab(3): ' ' + Visible(2): '--' + Space(1): ' ' + Visible(9): 'left_fmt;' +Line 1097 - Chunks 0: +Line 1098 - Chunks 8: + Tab(3): ' ' + Visible(9): 'curr_code' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(11): 'cursor_fmt;' +Line 1099 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 1100 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 1101 - Chunks 14: + Tab(1): ' ' + Visible(4): 'Str8' + Space(3): ' ' + Visible(6): 'result' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(12): '{buffer.ptr,' + Space(1): ' ' + Visible(10): 'buffer.len' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(18): 'buffer_remaining};' +Line 1102 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(7): 'result;' +Line 1103 - Chunks 1: + Visible(1): '}' +Line 1104 - Chunks 0: +Line 1105 - Chunks 7: + Visible(7): 'typedef' + Space(1): ' ' + Visible(6): 'struct' + Space(1): ' ' + Visible(9): 'SliceStr8' + Space(1): ' ' + Visible(10): 'SliceStr8;' +Line 1106 - Chunks 5: + Visible(6): 'struct' + Space(1): ' ' + Visible(9): 'SliceStr8' + Space(1): ' ' + Visible(1): '{' +Line 1107 - Chunks 4: + Tab(1): ' ' + Visible(5): 'Str8*' + Space(1): ' ' + Visible(4): 'ptr;' +Line 1108 - Chunks 4: + Tab(1): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(4): 'len;' +Line 1109 - Chunks 1: + Visible(2): '};' +Line 1110 - Chunks 0: +Line 1111 - Chunks 5: + Visible(7): '#define' + Space(1): ' ' + Visible(13): 'local_persist' + Space(1): ' ' + Visible(6): 'static' +Line 1112 - Chunks 0: +Line 1113 - Chunks 17: + Visible(4): 'Str8' + Space(1): ' ' + Visible(21): 'fmt__vtoken(SliceByte' + Space(1): ' ' + Visible(12): 'backing_tbl,' + Space(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(12): 'backing_buf,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(13): 'fmt_template,' + Space(1): ' ' + Visible(10): 'SliceStr8*' + Space(1): ' ' + Visible(7): 'tokens)' +Line 1114 - Chunks 1: + Visible(1): '{' +Line 1115 - Chunks 6: + Tab(1): ' ' + Visible(13): 'assert(tokens' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(9): 'nullptr);' +Line 1116 - Chunks 8: + Tab(1): ' ' + Visible(6): 'FArena' + Space(11): ' ' + Visible(9): 'a_backing' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(25): 'farena_init(backing_tbl);' +Line 1117 - Chunks 10: + Tab(1): ' ' + Visible(16): 'SliceFmtTokEntry' + Space(1): ' ' + Visible(5): 'table' + Space(5): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(17): '{a_backing.start,' + Space(1): ' ' + Visible(3): '0};' +Line 1118 - Chunks 8: + Tab(1): ' ' + Visible(3): 'S32' + Space(1): ' ' + Visible(4): 'left' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(12): 'tokens->len;' +Line 1119 - Chunks 8: + Tab(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(20): '(slice_iter(*tokens,' + Space(1): ' ' + Visible(7): 'token))' + Space(1): ' ' + Visible(1): '{' +Line 1120 - Chunks 11: + Tab(2): ' ' + Visible(12): 'FmtTokEntry*' + Space(1): ' ' + Visible(5): 'entry' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(22): 'farena_push(a_backing,' + Space(1): ' ' + Visible(13): 'FmtTokEntry);' + Space(1): ' ' +Line 1121 - Chunks 8: + Tab(2): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(5): 'entry' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(17): '(FmtTokEntry){0};' +Line 1122 - Chunks 10: + Tab(2): ' ' + Visible(13): 'hash64_djb8(&' + Space(1): ' ' + Visible(11): 'entry->key,' + Space(1): ' ' + Visible(23): '(SliceByte){cast(void*,' + Space(1): ' ' + Visible(12): 'token->ptr),' + Space(1): ' ' + Visible(13): 'token->len});' +Line 1123 - Chunks 4: + Tab(2): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(6): 'token;' +Line 1124 - Chunks 8: + Tab(2): ' ' + Visible(12): 'entry->value' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(6): 'token;' +Line 1125 - Chunks 4: + Tab(2): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(10): 'table.len;' +Line 1126 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 1127 - Chunks 12: + Tab(1): ' ' + Visible(4): 'Str8' + Space(3): ' ' + Visible(6): 'result' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'fmt_vtoken_slice(backing_buf,' + Space(1): ' ' + Visible(6): 'table,' + Space(1): ' ' + Visible(14): 'fmt_template);' +Line 1128 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(7): 'result;' +Line 1129 - Chunks 1: + Visible(1): '}' +Line 1130 - Chunks 0: +Line 1131 - Chunks 35: + Visible(2): '//' + Space(1): ' ' + Visible(8): 'Expected' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'take' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(5): 'array' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(7): 'entries' + Space(1): ' ' + Visible(9): 'formatted' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(2): '2D' + Space(1): ' ' + Visible(5): 'array' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(9): 'key-value' + Space(1): ' ' + Visible(5): 'pairs' + Space(1): ' ' + Visible(17): '(Str8[length][2])' +Line 1132 - Chunks 19: + Visible(2): '//' + Space(1): ' ' + Visible(3): 'The' + Space(1): ' ' + Visible(5): 'array' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(2): 'be' + Space(1): ' ' + Visible(7): 'tracked' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(9): 'SliceStr8' + Space(1): ' ' + Visible(10): 'structure.' +Line 1133 - Chunks 11: + Visible(7): '#define' + Space(1): ' ' + Visible(23): 'fmt_vtoken(backing_tbl,' + Space(1): ' ' + Visible(12): 'backing_buf,' + Space(1): ' ' + Visible(13): 'fmt_template,' + Space(1): ' ' + Visible(4): '...)' + Space(9): ' ' + Visible(1): '\' +Line 1134 - Chunks 7: + Visible(24): 'fmt__vtoken(backing_tbl,' + Space(1): ' ' + Visible(12): 'backing_buf,' + Space(1): ' ' + Visible(18): 'lit(fmt_template),' + Space(16): ' ' + Visible(1): '\' +Line 1135 - Chunks 4: + Tab(1): ' ' + Visible(13): '&(SliceStr8){' + Space(55): ' ' + Visible(1): '\' +Line 1136 - Chunks 12: + Tab(2): ' ' + Visible(4): '.ptr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(9): '(Str8[]){' + Space(1): ' ' + Visible(11): '__VA_ARGS__' + Space(1): ' ' + Visible(2): '},' + Space(33): ' ' + Visible(1): '\' +Line 1137 - Chunks 20: + Tab(2): ' ' + Visible(4): '.len' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(14): '(SSIZE)sizeof(' + Space(1): ' ' + Visible(9): '(Str8[]){' + Space(1): ' ' + Visible(11): '__VA_ARGS__' + Space(1): ' ' + Visible(1): '}' + Space(1): ' ' + Visible(1): ')' + Space(1): ' ' + Visible(1): '/' + Space(1): ' ' + Visible(13): 'size_of(Str8)' + Space(1): ' ' + Visible(1): '\' +Line 1138 - Chunks 4: + Tab(1): ' ' + Visible(1): '}' + Space(67): ' ' + Visible(1): '\' +Line 1139 - Chunks 1: + Visible(1): ')' +Line 1140 - Chunks 5: + Visible(7): '#pragma' + Space(1): ' ' + Visible(9): 'endregion' + Space(1): ' ' + Visible(10): 'fmt_vtoken' +Line 1141 - Chunks 0: +Line 1142 - Chunks 1: + Visible(6): 'inline' +Line 1143 - Chunks 13: + Visible(4): 'void' + Space(1): ' ' + Visible(28): 'str8gen__append_fmt(Str8Gen*' + Space(1): ' ' + Visible(4): 'gen,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(13): 'fmt_template,' + Space(1): ' ' + Visible(10): 'SliceStr8*' + Space(1): ' ' + Visible(7): 'tokens)' +Line 1144 - Chunks 1: + Visible(1): '{' +Line 1145 - Chunks 10: + Tab(1): ' ' + Visible(13): 'local_persist' + Space(1): ' ' + Visible(9): 'FMem_64KB' + Space(1): ' ' + Visible(11): 'tbl_backing' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 1146 - Chunks 18: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(11): 'fmt_backing' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(9): '{gen->ptr' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(9): 'gen->len,' + Space(1): ' ' + Visible(16): 'gen->backing.len' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(10): 'gen->len};' +Line 1147 - Chunks 14: + Tab(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(8): 'appended' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(36): 'fmt__vtoken(fmem_slice(tbl_backing),' + Space(1): ' ' + Visible(12): 'fmt_backing,' + Space(1): ' ' + Visible(13): 'fmt_template,' + Space(1): ' ' + Visible(8): 'tokens);' +Line 1148 - Chunks 6: + Tab(1): ' ' + Visible(8): 'gen->len' + Space(1): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(13): 'appended.len;' +Line 1149 - Chunks 2: + Tab(1): ' ' + Visible(7): 'return;' +Line 1150 - Chunks 1: + Visible(1): '}' +Line 1151 - Chunks 9: + Visible(7): '#define' + Space(1): ' ' + Visible(23): 'str8gen_append_fmt(gen,' + Space(1): ' ' + Visible(13): 'fmt_template,' + Space(1): ' ' + Visible(4): '...)' + Space(22): ' ' + Visible(1): '\' +Line 1152 - Chunks 7: + Visible(21): 'str8gen__append_fmt(&' + Space(1): ' ' + Visible(4): 'gen,' + Space(1): ' ' + Visible(18): 'lit(fmt_template),' + Space(27): ' ' + Visible(1): '\' +Line 1153 - Chunks 4: + Tab(1): ' ' + Visible(13): '&(SliceStr8){' + Space(55): ' ' + Visible(1): '\' +Line 1154 - Chunks 12: + Tab(2): ' ' + Visible(4): '.ptr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(9): '(Str8[]){' + Space(1): ' ' + Visible(11): '__VA_ARGS__' + Space(1): ' ' + Visible(2): '},' + Space(33): ' ' + Visible(1): '\' +Line 1155 - Chunks 20: + Tab(2): ' ' + Visible(4): '.len' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(14): '(SSIZE)sizeof(' + Space(1): ' ' + Visible(9): '(Str8[]){' + Space(1): ' ' + Visible(11): '__VA_ARGS__' + Space(1): ' ' + Visible(1): '}' + Space(1): ' ' + Visible(1): ')' + Space(1): ' ' + Visible(1): '/' + Space(1): ' ' + Visible(13): 'size_of(Str8)' + Space(1): ' ' + Visible(1): '\' +Line 1156 - Chunks 4: + Tab(1): ' ' + Visible(1): '}' + Space(67): ' ' + Visible(1): '\' +Line 1157 - Chunks 1: + Visible(1): ')' +Line 1158 - Chunks 0: +Line 1159 - Chunks 1: + Visible(2): '/*' +Line 1160 - Chunks 7: + Visible(6): 'Define' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(7): 'mapping' + Space(1): ' ' + Visible(6): 'array:' +Line 1161 - Chunks 9: + Visible(4): 'Str8' + Space(1): ' ' + Visible(8): 'mappings' + Space(1): ' ' + Visible(5): '[][2]' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '{' +Line 1162 - Chunks 4: + Tab(1): ' ' + Visible(23): 'fmt_vtoken_entry("key",' + Space(1): ' ' + Visible(9): '"value"),' +Line 1163 - Chunks 12: + Tab(1): ' ' + Visible(2): '^^' + Space(1): ' ' + Visible(3): 'Add' + Space(1): ' ' + Visible(7): 'entries' + Space(1): ' ' + Visible(2): 'as' + Space(1): ' ' + Visible(5): 'above' + Space(1): ' ' + Visible(2): '^^' +Line 1164 - Chunks 1: + Visible(1): '}' +Line 1165 - Chunks 1: + Visible(2): '*/' +Line 1166 - Chunks 9: + Visible(7): '#define' + Space(1): ' ' + Visible(14): 'fmt_entry(key,' + Space(1): ' ' + Visible(6): 'value)' + Space(1): ' ' + Visible(9): 'lit(key),' + Space(1): ' ' + Visible(5): 'value' +Line 1167 - Chunks 0: +Line 1168 - Chunks 3: + Visible(6): '#ifdef' + Space(1): ' ' + Visible(25): 'DEMO__WATL_DUMP_PREREQ_V1' +Line 1169 - Chunks 3: + Visible(3): 'int' + Space(1): ' ' + Visible(6): 'main()' +Line 1170 - Chunks 1: + Visible(1): '{' +Line 1171 - Chunks 6: + Tab(1): ' ' + Visible(13): 'local_persist' + Space(1): ' ' + Visible(9): 'FMem_64KB' + Space(1): ' ' + Visible(12): 'tbl_scratch;' +Line 1172 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(11): 'fmt_scratch' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'slicemem_alloc(MEGABYTES(8));' +Line 1173 - Chunks 18: + Tab(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(8): 'test_str' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(35): 'fmt_vtoken(fmem_slice(tbl_scratch),' + Space(1): ' ' + Visible(12): 'fmt_scratch,' + Space(1): ' ' + Visible(5): '"Will' + Space(1): ' ' + Visible(4): 'this' + Space(1): ' ' + Visible(5): 'work?' + Space(1): ' ' + Visible(13): '",' +Line 1174 - Chunks 6: + Tab(2): ' ' + Visible(22): 'fmt_entry("maybe_sub",' + Space(1): ' ' + Visible(7): 'lit("IT' + Space(1): ' ' + Visible(11): 'SUBST!!!"))' +Line 1175 - Chunks 2: + Tab(1): ' ' + Visible(2): ');' +Line 1176 - Chunks 0: +Line 1177 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(10): 'scratchgen' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'slicemem_alloc(MEGABYTES(16));' +Line 1178 - Chunks 8: + Tab(1): ' ' + Visible(7): 'Str8Gen' + Space(1): ' ' + Visible(3): 'gen' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(25): 'str8gen_make(scratchgen);' +Line 1179 - Chunks 12: + Tab(1): ' ' + Visible(23): 'str8gen_append_fmt(gen,' + Space(1): ' ' + Visible(8): '"Testing' + Space(1): ' ' + Visible(3): 'now' + Space(1): ' ' + Visible(4): 'with' + Space(1): ' ' + Visible(9): 'Str8Gen!!' + Space(1): ' ' + Visible(14): '!",' +Line 1180 - Chunks 8: + Tab(2): ' ' + Visible(22): 'fmt_entry("maybe_sub",' + Space(1): ' ' + Visible(9): 'lit("lets' + Space(1): ' ' + Visible(7): 'fucking' + Space(1): ' ' + Visible(8): 'go!!!"))' +Line 1181 - Chunks 2: + Tab(1): ' ' + Visible(2): ');' +Line 1182 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(2): '0;' +Line 1183 - Chunks 1: + Visible(1): '}' +Line 1184 - Chunks 1: + Visible(6): '#endif' +Line 1185 - Chunks 0: +Line 1186 - Chunks 1: + Visible(2): '/*' +Line 1187 - Chunks 23: + Visible(5): 'We'll' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(2): 'do' + Space(1): ' ' + Visible(4): 'some' + Space(1): ' ' + Visible(7): 'integer' + Space(1): ' ' + Visible(13): 'serialization' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(4): 'dump' + Space(1): ' ' + Visible(9): 'listing's' + Space(1): ' ' + Visible(8): 'metrics.' +Line 1188 - Chunks 1: + Visible(2): '*/' +Line 1189 - Chunks 0: +Line 1190 - Chunks 25: + Visible(6): 'inline' + Space(1): ' ' + Visible(3): 'B32' + Space(1): ' ' + Visible(16): 'char_is_upper(U8' + Space(1): ' ' + Visible(2): 'c)' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(10): 'return('A'' + Space(1): ' ' + Visible(2): '<=' + Space(1): ' ' + Visible(1): 'c' + Space(1): ' ' + Visible(2): '&&' + Space(1): ' ' + Visible(1): 'c' + Space(1): ' ' + Visible(2): '<=' + Space(1): ' ' + Visible(5): ''Z');' + Space(1): ' ' + Visible(1): '}' +Line 1191 - Chunks 31: + Visible(6): 'inline' + Space(1): ' ' + Visible(2): 'U8' + Space(2): ' ' + Visible(16): 'char_to_lower(U8' + Space(1): ' ' + Visible(2): 'c)' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(18): '(char_is_upper(c))' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(1): 'c' + Space(1): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(4): '('a'' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(5): ''A');' + Space(1): ' ' + Visible(1): '}' + Space(1): ' ' + Visible(10): 'return(c);' + Space(1): ' ' + Visible(1): '}' +Line 1192 - Chunks 0: +Line 1193 - Chunks 1: + Visible(6): 'inline' +Line 1194 - Chunks 7: + Visible(2): 'U8' + Space(1): ' ' + Visible(18): 'integer_symbols(U8' + Space(1): ' ' + Visible(6): 'value)' + Space(1): ' ' + Visible(1): '{' +Line 1195 - Chunks 2: + Tab(1): ' ' + Visible(13): 'local_persist' +Line 1196 - Chunks 8: + Tab(1): ' ' + Visible(2): 'U8' + Space(1): ' ' + Visible(16): 'lookup_table[16]' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '{' +Line 1197 - Chunks 2: + Tab(2): ' ' + Visible(64): ''0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',' +Line 1198 - Chunks 2: + Tab(1): ' ' + Visible(2): '};' +Line 1199 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(20): 'lookup_table[value];' +Line 1200 - Chunks 1: + Visible(1): '}' +Line 1201 - Chunks 0: +Line 1202 - Chunks 21: + Visible(4): 'Str8' + Space(1): ' ' + Visible(23): 'str8_from_u32(SliceByte' + Space(1): ' ' + Visible(4): 'mem,' + Space(1): ' ' + Visible(3): 'U32' + Space(1): ' ' + Visible(4): 'num,' + Space(1): ' ' + Visible(3): 'U32' + Space(1): ' ' + Visible(6): 'radix,' + Space(1): ' ' + Visible(2): 'U8' + Space(1): ' ' + Visible(11): 'min_digits,' + Space(1): ' ' + Visible(2): 'U8' + Space(1): ' ' + Visible(22): 'digit_group_separator)' +Line 1203 - Chunks 1: + Visible(1): '{' +Line 1204 - Chunks 18: + Tab(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(6): 'result' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(5): '{.ptr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(8): 'mem.ptr,' + Space(1): ' ' + Visible(4): '.len' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(3): '0};' +Line 1205 - Chunks 8: + Tab(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(6): 'prefix' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 1206 - Chunks 4: + Tab(1): ' ' + Visible(6): 'switch' + Space(1): ' ' + Visible(7): '(radix)' +Line 1207 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 1208 - Chunks 16: + Tab(2): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(3): '16:' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(6): 'prefix' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'lit("0x");' + Space(1): ' ' + Visible(1): '}' + Space(1): ' ' + Visible(6): 'break;' +Line 1209 - Chunks 16: + Tab(2): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(2): '8:' + Space(2): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(6): 'prefix' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'lit("0o");' + Space(1): ' ' + Visible(1): '}' + Space(1): ' ' + Visible(6): 'break;' +Line 1210 - Chunks 16: + Tab(2): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(2): '2:' + Space(2): ' ' + Visible(1): '{' + Space(1): ' ' + Visible(6): 'prefix' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'lit("0b");' + Space(1): ' ' + Visible(1): '}' + Space(1): ' ' + Visible(6): 'break;' +Line 1211 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 1212 - Chunks 1: + Tab(1): ' ' +Line 1213 - Chunks 8: + Tab(1): ' ' + Visible(2): 'U8' + Space(1): ' ' + Visible(16): 'digit_group_size' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '3;' +Line 1214 - Chunks 4: + Tab(1): ' ' + Visible(6): 'switch' + Space(1): ' ' + Visible(7): '(radix)' +Line 1215 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 1216 - Chunks 4: + Tab(2): ' ' + Visible(8): 'default:' + Space(1): ' ' + Visible(6): 'break;' +Line 1217 - Chunks 4: + Tab(2): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(2): '2:' +Line 1218 - Chunks 4: + Tab(2): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(2): '8:' +Line 1219 - Chunks 7: + Tab(2): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(3): '16:' + Space(1): ' ' + Visible(1): '{' + Space(1): ' ' +Line 1220 - Chunks 6: + Tab(3): ' ' + Visible(16): 'digit_group_size' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '4;' +Line 1221 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 1222 - Chunks 2: + Tab(2): ' ' + Visible(6): 'break;' +Line 1223 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 1224 - Chunks 0: +Line 1225 - Chunks 8: + Tab(1): ' ' + Visible(3): 'U32' + Space(1): ' ' + Visible(20): 'needed_leading_zeros' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 1226 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 1227 - Chunks 8: + Tab(2): ' ' + Visible(3): 'U32' + Space(1): ' ' + Visible(13): 'needed_digits' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '1;' +Line 1228 - Chunks 2: + Tab(2): ' ' + Visible(1): '{' +Line 1229 - Chunks 8: + Tab(3): ' ' + Visible(3): 'U32' + Space(1): ' ' + Visible(10): 'u32_reduce' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): 'num;' +Line 1230 - Chunks 2: + Tab(3): ' ' + Visible(7): 'for(;;)' +Line 1231 - Chunks 2: + Tab(3): ' ' + Visible(1): '{' +Line 1232 - Chunks 6: + Tab(4): ' ' + Visible(10): 'u32_reduce' + Space(1): ' ' + Visible(2): '/=' + Space(1): ' ' + Visible(6): 'radix;' +Line 1233 - Chunks 10: + Tab(4): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(11): '(u32_reduce' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(2): '0)' + Space(1): ' ' + Visible(1): '{' +Line 1234 - Chunks 2: + Tab(5): ' ' + Visible(6): 'break;' +Line 1235 - Chunks 2: + Tab(4): ' ' + Visible(1): '}' +Line 1236 - Chunks 6: + Tab(4): ' ' + Visible(13): 'needed_digits' + Space(1): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(2): '1;' +Line 1237 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 1238 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 1239 - Chunks 0: +Line 1240 - Chunks 23: + Tab(2): ' ' + Space(4): ' ' + Visible(20): 'needed_leading_zeros' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): '(min_digits' + Space(1): ' ' + Visible(1): '>' + Space(1): ' ' + Visible(14): 'needed_digits)' + Space(1): ' ' + Visible(1): '?' + Space(1): ' ' + Visible(10): 'min_digits' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(13): 'needed_digits' + Space(1): ' ' + Visible(1): ':' + Space(1): ' ' + Visible(2): '0;' +Line 1241 - Chunks 8: + Tab(2): ' ' + Visible(3): 'U32' + Space(1): ' ' + Visible(17): 'needed_separators' + Space(4): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 1242 - Chunks 8: + Tab(2): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(22): '(digit_group_separator' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(2): '0)' +Line 1243 - Chunks 2: + Tab(2): ' ' + Visible(1): '{' +Line 1244 - Chunks 14: + Tab(3): ' ' + Visible(17): 'needed_separators' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(14): '(needed_digits' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(21): 'needed_leading_zeros)' + Space(1): ' ' + Visible(1): '/' + Space(1): ' ' + Visible(17): 'digit_group_size;' +Line 1245 - Chunks 26: + Tab(3): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(18): '(needed_separators' + Space(1): ' ' + Visible(1): '>' + Space(1): ' ' + Visible(1): '0' + Space(1): ' ' + Visible(2): '&&' + Space(1): ' ' + Visible(14): '(needed_digits' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(21): 'needed_leading_zeros)' + Space(1): ' ' + Visible(1): '%' + Space(1): ' ' + Visible(16): 'digit_group_size' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(2): '0)' + Space(1): ' ' + Visible(1): '{' +Line 1246 - Chunks 6: + Tab(4): ' ' + Visible(17): 'needed_separators' + Space(1): ' ' + Visible(2): '-=' + Space(1): ' ' + Visible(2): '1;' +Line 1247 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 1248 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 1249 - Chunks 1: + Tab(2): ' ' +Line 1250 - Chunks 18: + Tab(2): ' ' + Visible(10): 'result.len' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'prefix.len' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(20): 'needed_leading_zeros' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(17): 'needed_separators' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(14): 'needed_digits;' +Line 1251 - Chunks 6: + Tab(2): ' ' + Visible(17): 'assert(result.len' + Space(1): ' ' + Visible(2): '<=' + Space(1): ' ' + Visible(9): 'mem.len);' +Line 1252 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 1253 - Chunks 1: + Tab(1): ' ' +Line 1254 - Chunks 6: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'Fill' + Space(1): ' ' + Visible(7): 'Content' +Line 1255 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 1256 - Chunks 8: + Tab(2): ' ' + Visible(3): 'U32' + Space(1): ' ' + Visible(10): 'num_reduce' + Space(13): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): 'num;' +Line 1257 - Chunks 8: + Tab(2): ' ' + Visible(3): 'U32' + Space(1): ' ' + Visible(22): 'digits_until_separator' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(17): 'digit_group_size;' +Line 1258 - Chunks 22: + Tab(2): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(4): '(U32' + Space(1): ' ' + Visible(3): 'idx' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' + Space(1): ' ' + Visible(3): 'idx' + Space(1): ' ' + Visible(1): '<' + Space(1): ' ' + Visible(11): 'result.len;' + Space(1): ' ' + Visible(3): 'idx' + Space(1): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(2): '1)' +Line 1259 - Chunks 2: + Tab(2): ' ' + Visible(1): '{' +Line 1260 - Chunks 16: + Tab(3): ' ' + Visible(5): 'SSIZE' + Space(1): ' ' + Visible(13): 'separator_pos' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'result.len' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(3): 'idx' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(2): '1;' +Line 1261 - Chunks 18: + Tab(3): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(23): '(digits_until_separator' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(1): '0' + Space(1): ' ' + Visible(2): '&&' + Space(1): ' ' + Visible(21): 'digit_group_separator' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(2): '0)' + Space(1): ' ' + Visible(1): '{' +Line 1262 - Chunks 6: + Tab(4): ' ' + Visible(25): 'result.ptr[separator_pos]' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(22): 'digit_group_separator;' +Line 1263 - Chunks 10: + Tab(4): ' ' + Visible(22): 'digits_until_separator' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(16): 'digit_group_size' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(2): '1;' +Line 1264 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 1265 - Chunks 4: + Tab(3): ' ' + Visible(4): 'else' + Space(1): ' ' + Visible(1): '{' +Line 1266 - Chunks 10: + Tab(4): ' ' + Visible(25): 'result.ptr[separator_pos]' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(40): 'char_to_lower(integer_symbols(num_reduce' + Space(1): ' ' + Visible(1): '%' + Space(1): ' ' + Visible(8): 'radix));' +Line 1267 - Chunks 6: + Tab(4): ' ' + Visible(10): 'num_reduce' + Space(1): ' ' + Visible(2): '/=' + Space(1): ' ' + Visible(6): 'radix;' +Line 1268 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 1269 - Chunks 6: + Tab(3): ' ' + Visible(22): 'digits_until_separator' + Space(1): ' ' + Visible(2): '-=' + Space(1): ' ' + Visible(2): '1;' +Line 1270 - Chunks 10: + Tab(3): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(11): '(num_reduce' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(2): '0)' + Space(1): ' ' + Visible(1): '{' +Line 1271 - Chunks 2: + Tab(4): ' ' + Visible(6): 'break;' +Line 1272 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 1273 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 1274 - Chunks 24: + Tab(2): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(4): '(U32' + Space(1): ' ' + Visible(13): 'leading_0_idx' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' + Space(1): ' ' + Visible(13): 'leading_0_idx' + Space(1): ' ' + Visible(1): '<' + Space(1): ' ' + Visible(21): 'needed_leading_zeros;' + Space(1): ' ' + Visible(13): 'leading_0_idx' + Space(1): ' ' + Visible(2): '+=' + Space(1): ' ' + Visible(2): '1)' + Space(1): ' ' + Visible(1): '{' +Line 1275 - Chunks 10: + Tab(3): ' ' + Visible(21): 'result.ptr[prefix.len' + Space(1): ' ' + Visible(1): '+' + Space(1): ' ' + Visible(14): 'leading_0_idx]' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): ''0';' +Line 1276 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 1277 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 1278 - Chunks 6: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'Fill' + Space(1): ' ' + Visible(6): 'Prefix' +Line 1279 - Chunks 10: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(11): '(prefix.len' + Space(1): ' ' + Visible(1): '>' + Space(1): ' ' + Visible(2): '0)' + Space(1): ' ' + Visible(1): '{' +Line 1280 - Chunks 4: + Tab(2): ' ' + Visible(18): 'slice_copy(result,' + Space(1): ' ' + Visible(8): 'prefix);' +Line 1281 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 1282 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(7): 'result;' +Line 1283 - Chunks 1: + Visible(1): '}' +Line 1284 - Chunks 0: +Line 1285 - Chunks 7: + Visible(2): '//' + Space(1): ' ' + Visible(8): 'Utilized' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(16): 'file_write_str8:' +Line 1286 - Chunks 3: + Visible(3): '#if' + Space(1): ' ' + Visible(1): '0' +Line 1287 - Chunks 3: + Visible(4): 'BOOL' + Space(1): ' ' + Visible(10): 'WriteFile(' +Line 1288 - Chunks 6: + Space(2): ' ' + Visible(4): '[in]' + Space(16): ' ' + Visible(6): 'HANDLE' + Space(7): ' ' + Visible(6): 'hFile,' +Line 1289 - Chunks 6: + Space(2): ' ' + Visible(4): '[in]' + Space(16): ' ' + Visible(7): 'LPCVOID' + Space(6): ' ' + Visible(9): 'lpBuffer,' +Line 1290 - Chunks 6: + Space(2): ' ' + Visible(4): '[in]' + Space(16): ' ' + Visible(5): 'DWORD' + Space(8): ' ' + Visible(22): 'nNumberOfBytesToWrite,' +Line 1291 - Chunks 8: + Space(2): ' ' + Visible(5): '[out,' + Space(1): ' ' + Visible(9): 'optional]' + Space(5): ' ' + Visible(7): 'LPDWORD' + Space(6): ' ' + Visible(23): 'lpNumberOfBytesWritten,' +Line 1292 - Chunks 10: + Space(2): ' ' + Visible(4): '[in,' + Space(1): ' ' + Visible(4): 'out,' + Space(1): ' ' + Visible(9): 'optional]' + Space(1): ' ' + Visible(12): 'LPOVERLAPPED' + Space(1): ' ' + Visible(12): 'lpOverlapped' +Line 1293 - Chunks 1: + Visible(2): ');' +Line 1294 - Chunks 1: + Visible(6): '#endif' +Line 1295 - Chunks 1: + Visible(2): '/*' +Line 1296 - Chunks 15: + Visible(7): 'Lastly:' + Space(1): ' ' + Visible(8): 'Writting' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'file' + Space(1): ' ' + Visible(5): 'using' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(3): 'Win' + Space(1): ' ' + Visible(4): 'API.' +Line 1297 - Chunks 1: + Visible(2): '*/' +Line 1298 - Chunks 9: + Visible(4): 'void' + Space(1): ' ' + Visible(20): 'file_write_str8(Str8' + Space(1): ' ' + Visible(5): 'path,' + Space(1): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(8): 'content)' +Line 1299 - Chunks 1: + Visible(1): '{' +Line 1300 - Chunks 2: + Tab(1): ' ' + Visible(19): 'slice_assert(path);' +Line 1301 - Chunks 2: + Tab(1): ' ' + Visible(22): 'slice_assert(content);' +Line 1302 - Chunks 0: +Line 1303 - Chunks 8: + Tab(1): ' ' + Visible(9): 'FMem_16KB' + Space(1): ' ' + Visible(7): 'scratch' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 1304 - Chunks 12: + Tab(1): ' ' + Visible(4): 'char' + Space(1): ' ' + Visible(6): 'const*' + Space(1): ' ' + Visible(9): 'path_cstr' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(25): 'str8_to_cstr_capped(path,' + Space(1): ' ' + Visible(21): 'fmem_slice(scratch));' +Line 1305 - Chunks 0: +Line 1306 - Chunks 8: + Tab(1): ' ' + Visible(6): 'HANDLE' + Space(1): ' ' + Visible(7): 'id_file' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(12): 'CreateFileA(' +Line 1307 - Chunks 2: + Tab(2): ' ' + Visible(10): 'path_cstr,' +Line 1308 - Chunks 2: + Tab(2): ' ' + Visible(14): 'GENERIC_WRITE,' +Line 1309 - Chunks 2: + Tab(2): ' ' + Visible(16): 'FILE_SHARE_READ,' +Line 1310 - Chunks 2: + Tab(2): ' ' + Visible(5): 'NULL,' +Line 1311 - Chunks 2: + Tab(2): ' ' + Visible(14): 'CREATE_ALWAYS,' +Line 1312 - Chunks 2: + Tab(2): ' ' + Visible(22): 'FILE_ATTRIBUTE_NORMAL,' +Line 1313 - Chunks 2: + Tab(2): ' ' + Visible(4): 'NULL' +Line 1314 - Chunks 2: + Tab(1): ' ' + Visible(2): ');' +Line 1315 - Chunks 0: +Line 1316 - Chunks 12: + Tab(1): ' ' + Visible(3): 'B32' + Space(1): ' ' + Visible(11): 'open_failed' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(7): 'id_file' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(21): 'INVALID_HANDLE_VALUE;' +Line 1317 - Chunks 6: + Tab(1): ' ' + Visible(2): 'if' + Space(1): ' ' + Visible(13): '(open_failed)' + Space(1): ' ' + Visible(1): '{' +Line 1318 - Chunks 8: + Tab(2): ' ' + Visible(5): 'DWORD' + Space(2): ' ' + Visible(10): 'error_code' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(15): 'GetLastError();' +Line 1319 - Chunks 6: + Tab(2): ' ' + Visible(17): 'assert(error_code' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(3): '0);' +Line 1320 - Chunks 2: + Tab(2): ' ' + Visible(7): 'return;' +Line 1321 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 1322 - Chunks 0: +Line 1323 - Chunks 8: + Tab(1): ' ' + Visible(5): 'DWORD' + Space(1): ' ' + Visible(13): 'bytes_written' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 1324 - Chunks 8: + Tab(1): ' ' + Visible(3): 'B32' + Space(1): ' ' + Visible(6): 'status' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(17): 'WriteFile(id_file' +Line 1325 - Chunks 6: + Tab(2): ' ' + Visible(1): ',' + Space(1): ' ' + Visible(11): 'cast(void*,' + Space(1): ' ' + Visible(12): 'content.ptr)' +Line 1326 - Chunks 6: + Tab(2): ' ' + Visible(1): ',' + Space(1): ' ' + Visible(11): 'cast(USIZE,' + Space(1): ' ' + Visible(12): 'content.len)' +Line 1327 - Chunks 6: + Tab(2): ' ' + Visible(1): ',' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(13): 'bytes_written' +Line 1328 - Chunks 4: + Tab(2): ' ' + Visible(1): ',' + Space(1): ' ' + Visible(4): 'NULL' +Line 1329 - Chunks 2: + Tab(1): ' ' + Visible(2): ');' +Line 1330 - Chunks 6: + Tab(1): ' ' + Visible(13): 'assert(status' + Space(1): ' ' + Visible(2): '!=' + Space(1): ' ' + Visible(3): '0);' +Line 1331 - Chunks 6: + Tab(1): ' ' + Visible(20): 'assert(bytes_written' + Space(1): ' ' + Visible(2): '==' + Space(1): ' ' + Visible(13): 'content.len);' +Line 1332 - Chunks 1: + Visible(1): '}' +Line 1333 - Chunks 0: +Line 1334 - Chunks 1: + Visible(2): '/*' +Line 1335 - Chunks 31: + Visible(2): 'We' + Space(1): ' ' + Visible(3): 'now' + Space(1): ' ' + Visible(4): 'have' + Space(1): ' ' + Visible(4): 'what' + Space(1): ' ' + Visible(2): 'we' + Space(1): ' ' + Visible(4): 'need' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(6): 'create' + Space(1): ' ' + Visible(3): 'the' + Space(1): ' ' + Visible(10): 'structural' + Space(1): ' ' + Visible(7): 'listing' + Space(1): ' ' + Visible(4): 'dump' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(6): 'WATL's' + Space(1): ' ' + Visible(4): 'data' + Space(1): ' ' + Visible(11): 'structures.' +Line 1336 - Chunks 1: + Visible(2): '*/' +Line 1337 - Chunks 0: +Line 1338 - Chunks 9: + Visible(4): 'Str8' + Space(1): ' ' + Visible(27): 'watl_dump_listing(SliceByte' + Space(1): ' ' + Visible(7): 'buffer,' + Space(1): ' ' + Visible(14): 'WATL_SliceLine' + Space(1): ' ' + Visible(6): 'lines)' +Line 1339 - Chunks 1: + Visible(1): '{' +Line 1340 - Chunks 10: + Tab(1): ' ' + Visible(13): 'local_persist' + Space(1): ' ' + Visible(9): 'FMem_64KB' + Space(1): ' ' + Visible(7): 'scratch' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 1341 - Chunks 8: + Tab(1): ' ' + Visible(6): 'FArena' + Space(1): ' ' + Visible(6): 'sarena' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(33): 'farena_init(fmem_slice(scratch));' +Line 1342 - Chunks 0: +Line 1343 - Chunks 8: + Tab(1): ' ' + Visible(7): 'Str8Gen' + Space(1): ' ' + Visible(6): 'result' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(21): 'str8gen_make(buffer);' +Line 1344 - Chunks 8: + Tab(1): ' ' + Visible(3): 'U32' + Space(1): ' ' + Visible(8): 'line_num' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(2): '0;' +Line 1345 - Chunks 6: + Tab(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(18): '(slice_iter(lines,' + Space(1): ' ' + Visible(6): 'line))' +Line 1346 - Chunks 2: + Tab(1): ' ' + Visible(1): '{' +Line 1347 - Chunks 20: + Tab(1): ' ' + Visible(7): '#define' + Space(1): ' ' + Visible(15): 'push_str8_u32()' + Space(11): ' ' + Visible(12): '(SliceByte){' + Space(1): ' ' + Visible(14): 'farena__push(&' + Space(1): ' ' + Visible(7): 'sarena,' + Space(1): ' ' + Visible(14): 'size_of(UTF8),' + Space(1): ' ' + Visible(3): '64,' + Space(1): ' ' + Visible(13): 'lit("UTF8")),' + Space(1): ' ' + Visible(2): '64' + Space(1): ' ' + Visible(1): '}' +Line 1348 - Chunks 18: + Tab(1): ' ' + Visible(7): '#define' + Space(1): ' ' + Visible(20): 'fmt_entry_u32(label,' + Space(1): ' ' + Visible(4): 'num)' + Space(1): ' ' + Visible(11): 'lit(label),' + Space(1): ' ' + Visible(30): 'str8_from_u32(push_str8_u32(),' + Space(1): ' ' + Visible(4): 'num,' + Space(1): ' ' + Visible(3): '10,' + Space(1): ' ' + Visible(2): '0,' + Space(1): ' ' + Visible(2): '0)' +Line 1349 - Chunks 4: + Tab(2): ' ' + Visible(2): '++' + Space(1): ' ' + Visible(9): 'line_num;' +Line 1350 - Chunks 12: + Tab(2): ' ' + Visible(26): 'str8gen_append_fmt(result,' + Space(1): ' ' + Visible(5): '"Line' + Space(1): ' ' + Visible(10): '' + Space(1): ' ' + Visible(1): '-' + Space(1): ' ' + Visible(6): 'Chunks' + Space(1): ' ' + Visible(15): ':\n"' +Line 1351 - Chunks 14: + Tab(2): ' ' + Visible(1): ',' + Tab(1): ' ' + Visible(21): 'fmt_entry("line_num",' + Space(2): ' ' + Visible(30): 'str8_from_u32(push_str8_u32(),' + Space(1): ' ' + Visible(9): 'line_num,' + Space(1): ' ' + Visible(3): '10,' + Space(1): ' ' + Visible(2): '0,' + Space(1): ' ' + Visible(3): '0))' +Line 1352 - Chunks 14: + Tab(2): ' ' + Visible(1): ',' + Tab(1): ' ' + Visible(22): 'fmt_entry("chunk_num",' + Space(1): ' ' + Visible(30): 'str8_from_u32(push_str8_u32(),' + Space(1): ' ' + Visible(10): 'line->len,' + Space(1): ' ' + Visible(3): '10,' + Space(1): ' ' + Visible(2): '0,' + Space(1): ' ' + Visible(3): '0))' +Line 1353 - Chunks 2: + Tab(2): ' ' + Visible(2): ');' +Line 1354 - Chunks 9: + Tab(2): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(13): '(slice_iter(*' + Space(1): ' ' + Visible(5): 'line,' + Space(1): ' ' + Visible(7): 'chunk))' + Space(1): ' ' +Line 1355 - Chunks 2: + Tab(2): ' ' + Visible(1): '{' +Line 1356 - Chunks 4: + Tab(3): ' ' + Visible(4): 'Str8' + Space(1): ' ' + Visible(3): 'id;' +Line 1357 - Chunks 6: + Tab(3): ' ' + Visible(6): 'switch' + Space(1): ' ' + Visible(2): '(*' + Space(1): ' ' + Visible(11): 'chunk->ptr)' +Line 1358 - Chunks 2: + Tab(3): ' ' + Visible(1): '{' +Line 1359 - Chunks 12: + Tab(4): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(15): 'WATL_Tok_Space:' + Space(1): ' ' + Visible(2): 'id' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(13): 'lit("Space");' + Space(3): ' ' + Visible(6): 'break;' +Line 1360 - Chunks 12: + Tab(4): ' ' + Visible(4): 'case' + Space(1): ' ' + Visible(13): 'WATL_Tok_Tab:' + Space(3): ' ' + Visible(2): 'id' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(11): 'lit("Tab");' + Space(5): ' ' + Visible(6): 'break;' +Line 1361 - Chunks 10: + Tab(4): ' ' + Visible(8): 'default:' + Space(13): ' ' + Visible(2): 'id' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(15): 'lit("Visible");' + Space(1): ' ' + Visible(6): 'break;' +Line 1362 - Chunks 2: + Tab(3): ' ' + Visible(1): '}' +Line 1363 - Chunks 6: + Tab(3): ' ' + Visible(26): 'str8gen_append_fmt(result,' + Space(1): ' ' + Visible(16): '"\t():' + Space(1): ' ' + Visible(12): '''\n"' +Line 1364 - Chunks 6: + Tab(3): ' ' + Visible(1): ',' + Tab(1): ' ' + Visible(15): 'fmt_entry("id",' + Space(1): ' ' + Visible(3): 'id)' +Line 1365 - Chunks 6: + Tab(3): ' ' + Visible(1): ',' + Tab(1): ' ' + Visible(21): 'fmt_entry_u32("size",' + Space(1): ' ' + Visible(11): 'chunk->len)' +Line 1366 - Chunks 8: + Tab(3): ' ' + Visible(1): ',' + Tab(1): ' ' + Visible(18): 'fmt_entry("chunk",' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(6): 'chunk)' +Line 1367 - Chunks 2: + Tab(3): ' ' + Visible(2): ');' +Line 1368 - Chunks 2: + Tab(2): ' ' + Visible(1): '}' +Line 1369 - Chunks 4: + Tab(2): ' ' + Visible(14): 'farena_reset(&' + Space(1): ' ' + Visible(8): 'sarena);' +Line 1370 - Chunks 4: + Tab(1): ' ' + Visible(6): '#undef' + Space(1): ' ' + Visible(13): 'push_str8_u32' +Line 1371 - Chunks 4: + Tab(1): ' ' + Visible(6): '#undef' + Space(1): ' ' + Visible(13): 'fmt_entry_u32' +Line 1372 - Chunks 2: + Tab(1): ' ' + Visible(1): '}' +Line 1373 - Chunks 10: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(7): '(Str8){' + Space(1): ' ' + Visible(11): 'result.ptr,' + Space(1): ' ' + Visible(10): 'result.len' + Space(1): ' ' + Visible(2): '};' +Line 1374 - Chunks 1: + Visible(1): '}' +Line 1375 - Chunks 0: +Line 1376 - Chunks 3: + Visible(6): '#ifdef' + Space(1): ' ' + Visible(18): 'DEMO__WATL_DUMP_V1' +Line 1377 - Chunks 3: + Visible(3): 'int' + Space(1): ' ' + Visible(6): 'main()' +Line 1378 - Chunks 1: + Visible(1): '{' +Line 1379 - Chunks 24: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'limit' + Space(1): ' ' + Visible(3): 'for' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(4): 'read' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): '64kb' + Space(1): ' ' + Visible(2): 'at' + Space(1): ' ' + Visible(5): 'most.' +Line 1380 - Chunks 8: + Tab(1): ' ' + Visible(10): 'FMem_128KB' + Space(3): ' ' + Visible(8): 'read_mem' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(4): '{0};' +Line 1381 - Chunks 16: + Tab(1): ' ' + Visible(12): 'FileOpResult' + Space(1): ' ' + Visible(8): 'read_res' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(43): 'file_read_contents(lit("demo.str_cache.c"),' + Space(1): ' ' + Visible(8): '.backing' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'fmem_slice(read_mem)' + Space(1): ' ' + Visible(2): ');' +Line 1382 - Chunks 0: +Line 1383 - Chunks 36: + Tab(1): ' ' + Visible(2): '//' + Space(1): ' ' + Visible(4): 'This' + Space(1): ' ' + Visible(4): 'will' + Space(1): ' ' + Visible(5): 'limit' + Space(1): ' ' + Visible(3): 'our' + Space(1): ' ' + Visible(2): 'V1' + Space(1): ' ' + Visible(3): 'lex' + Space(1): ' ' + Visible(2): 'to' + Space(1): ' ' + Visible(4): 'only' + Space(1): ' ' + Visible(1): '8' + Space(1): ' ' + Visible(4): 'megs' + Space(1): ' ' + Visible(5): 'worth' + Space(1): ' ' + Visible(2): 'of' + Space(1): ' ' + Visible(5): 'token' + Space(1): ' ' + Visible(8): 'tracking' + Space(1): ' ' + Visible(2): 'on' + Space(1): ' ' + Visible(1): 'a' + Space(1): ' ' + Visible(5): 'file.' +Line 1384 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(4): ' ' + Visible(8): 'mem_toks' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'slicemem_alloc(MEGABYTES(16));' +Line 1385 - Chunks 16: + Tab(1): ' ' + Visible(12): 'WATL_LexInfo' + Space(1): ' ' + Visible(7): 'lex_res' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(20): 'watl_lex(pcast(Str8,' + Space(1): ' ' + Visible(18): 'read_res.content),' + Space(1): ' ' + Visible(10): '.pool_toks' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(10): 'mem_toks);' +Line 1386 - Chunks 0: +Line 1387 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(14): 'mem_cache_strs' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'slicemem_alloc(MEGABYTES(64));' +Line 1388 - Chunks 20: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_cache_slots' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(19): 'slicemem_alloc(1024' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(4): '1024' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(2): '16' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(30): 'size_of(Str8Cache_SliceSlot));' +Line 1389 - Chunks 16: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_cache_table' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(19): 'slicemem_alloc(1024' + Space(8): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(2): '16' + Space(1): ' ' + Visible(1): '*' + Space(1): ' ' + Visible(30): 'size_of(Str8Cache_SliceSlot));' +Line 1390 - Chunks 12: + Tab(1): ' ' + Visible(9): 'Str8Cache' + Space(1): ' ' + Visible(9): 'str_cache' + Space(7): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'str8cache_init(mem_cache_strs,' + Space(1): ' ' + Visible(16): 'mem_cache_slots,' + Space(1): ' ' + Visible(17): 'mem_cache_table);' +Line 1391 - Chunks 0: +Line 1392 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_parse_nodes' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'slicemem_alloc(MEGABYTES(4));' +Line 1393 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(15): 'mem_parse_lines' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(29): 'slicemem_alloc(MEGABYTES(4));' +Line 1394 - Chunks 28: + Tab(1): ' ' + Visible(14): 'WATL_ParseInfo' + Space(1): ' ' + Visible(9): 'parse_res' + Space(2): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(26): 'watl_parse(lex_res.tokens,' + Space(1): ' ' + Visible(14): '.backing_nodes' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(16): 'mem_parse_nodes,' + Space(1): ' ' + Visible(14): '.backing_lines' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(16): 'mem_parse_lines,' + Space(1): ' ' + Visible(10): '.str_cache' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(1): '&' + Space(1): ' ' + Visible(11): 'str_cache);' +Line 1395 - Chunks 0: +Line 1396 - Chunks 8: + Tab(1): ' ' + Visible(9): 'SliceByte' + Space(1): ' ' + Visible(11): 'scratch_dmp' + Space(1): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'slicemem_alloc(MEGABYTES(16));' +Line 1397 - Chunks 10: + Tab(1): ' ' + Visible(4): 'Str8' + Space(6): ' ' + Visible(7): 'listing' + Space(5): ' ' + Visible(1): '=' + Space(1): ' ' + Visible(30): 'watl_dump_listing(scratch_dmp,' + Space(1): ' ' + Visible(17): 'parse_res.lines);' +Line 1398 - Chunks 4: + Tab(1): ' ' + Visible(50): 'file_write_str8(lit("demo.str_cache.listing.txt"),' + Space(1): ' ' + Visible(9): 'listing);' +Line 1399 - Chunks 4: + Tab(1): ' ' + Visible(6): 'return' + Space(1): ' ' + Visible(2): '0;' +Line 1400 - Chunks 1: + Visible(1): '}' +Line 1401 - Chunks 1: + Visible(6): '#endif'