internal void Bootstrap_Main_Thread_Context () { // 0. Setup general MB(70) allocator GPAllocator_Initialize_Allocation_Tracker(); // 1. Setup arena table initialize_arena_table(); // 2. Setup thread local context ExpandableArena* arena_ex = expandable_arena_new(Arena_Reserve::Size_64M, 16); thread_local_context = New(get_allocator(arena_ex)); thread_local_context->temp = expandable_arena_new(Arena_Reserve::Size_2M, 16); thread_local_context->arena = arena_ex; thread_local_context->allocator = get_allocator(arena_ex); thread_local_context->thread_idx = 0; thread_local_context->thread_name = "Main Thread"; // thread_local_context->logger = init_logger(); } // #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(MB(70)); } { 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(); // Worker_Info* info = (Worker_Info*)GPAllocator_New(sizeof(Worker_Info), 64); temp_reset(); debug_break(); printf("sizeof(Array): %zd\n", sizeof(Array)); printf("sizeof(Arena): %zd\n", sizeof(Arena)); printf("sizeof(Worker_Info): %zd\n", sizeof(Thread)); printf("sizeof(Worker_Info): %zd\n", sizeof(Worker_Info)); // #TODO: // [ ] Launch second thread // [ ] Setup Mouse and Keyboard Inputs // OS_Create_Window(); }