54 lines
1.4 KiB
C
54 lines
1.4 KiB
C
#pragma once
|
|
|
|
// =============================================================================
|
|
// Core Types
|
|
typedef uint64 JA_ID;
|
|
|
|
// =============================================================================
|
|
// States Types
|
|
|
|
typedef struct JA_WindowState JA_WindowState;
|
|
struct JA_WindowState
|
|
{
|
|
JA_WindowState* order_next;
|
|
JA_WindowState* order_previous;
|
|
JA_WindowState* hash_next;
|
|
JA_WindowState* hash_previous;
|
|
JA_ID id;
|
|
WM_Window plat_handle;
|
|
};
|
|
|
|
typedef struct JA_State JA_State;
|
|
struct JA_State
|
|
{
|
|
// Base
|
|
Arena* arena;
|
|
bool32 quit;
|
|
|
|
// Windows
|
|
JA_WindowState* first_window_state;
|
|
JA_WindowState* last_window_state;
|
|
JA_WindowState* window_state_last_accessed;
|
|
JA_ID window_state_last_accessed_id;
|
|
JA_ID window_state_gen_id;
|
|
};
|
|
|
|
// =============================================================================
|
|
// Globals
|
|
|
|
read_only global JA_WindowState ja_nil_window_state = { &ja_nil_window_state, &ja_nil_window_state };
|
|
|
|
global JA_State* ja_state = 0;
|
|
|
|
// =============================================================================
|
|
// Top level Functions
|
|
|
|
internal void ja_init();
|
|
internal void ja_frame();
|
|
internal void ja_shutdown();
|
|
|
|
// =============================================================================
|
|
// Window Functions
|
|
|
|
internal JA_WindowState* ja_window_state_from_id(JA_ID id);
|