internal void Bootstrap_Main_Thread_Context () { // 0. Setup general purpose allocator GPAllocator_Initialize_Allocation_Tracker(); // 1. Setup arena table initialize_arena_table(); // 2. Setup thread local context Arena* arena = next_arena(Arena_Reserve::Size_64G); thread_local_context = New(get_allocator(arena)); thread_local_context->temp = next_arena(Arena_Reserve::Size_64G); thread_local_context->arena = arena; thread_local_context->allocator = get_allocator(arena); thread_local_context->thread_idx = 0; thread_local_context->thread_name = "Main Thread"; // thread_local_context->logger = init_logger(); // debug_break(); } // #include "lib/Base/Arena_Array.h" void run_arena_array_tests () { { push_arena(thread_local_context->temp); push_alignment(thread_local_context->temp, 1); auto_reset(thread_local_context->temp); auto something = New(); auto something2 = New>(); auto something3 = internal_alloc(5000); } { push_allocator(GPAllocator()); auto something = New(); auto something2 = New>(); } // { auto na = arena_array_new(64000, Arena_Reserve::Size_64G); // array_add(...) // } } internal void Main_Entry_Point (int argc, WCHAR **argv) { run_arena_array_tests(); // #TODO: // [ ] Launch second thread // [ ] Setup Mouse and Keyboard Inputs // OS_Create_Window(); }