Final type fixups; package and build stuff straightened out
parent
27a2a45f59
commit
4817510c5d
|
@ -363,7 +363,7 @@ buffer_seek_string(Application_Links *app, Buffer_ID buffer, String_Const_u8 nee
|
||||||
Gap_Buffer *gap_buffer = &file->state.buffer;
|
Gap_Buffer *gap_buffer = &file->state.buffer;
|
||||||
i64 size = buffer_size(gap_buffer);
|
i64 size = buffer_size(gap_buffer);
|
||||||
List_String_Const_u8 chunks = buffer_get_chunks(scratch, gap_buffer);
|
List_String_Const_u8 chunks = buffer_get_chunks(scratch, gap_buffer);
|
||||||
Interval_i64 range = {};
|
Range_i64 range = {};
|
||||||
if (direction == Scan_Forward){
|
if (direction == Scan_Forward){
|
||||||
i64 adjusted_pos = start_pos + 1;
|
i64 adjusted_pos = start_pos + 1;
|
||||||
start_pos = clamp_top(adjusted_pos, size);
|
start_pos = clamp_top(adjusted_pos, size);
|
||||||
|
@ -1979,7 +1979,7 @@ managed_id_get(Application_Links *app, String_Const_u8 group, String_Const_u8 na
|
||||||
}
|
}
|
||||||
|
|
||||||
api(custom) function void*
|
api(custom) function void*
|
||||||
managed_scope_get_attachment(Application_Links *app, Managed_Scope scope, Managed_ID id, umem size){
|
managed_scope_get_attachment(Application_Links *app, Managed_Scope scope, Managed_ID id, u64 size){
|
||||||
Models *models = (Models*)app->cmd_context;
|
Models *models = (Models*)app->cmd_context;
|
||||||
Dynamic_Workspace *workspace = get_dynamic_workspace(models, scope);
|
Dynamic_Workspace *workspace = get_dynamic_workspace(models, scope);
|
||||||
void *result = 0;
|
void *result = 0;
|
||||||
|
@ -2283,7 +2283,7 @@ set_custom_hook(Application_Links *app, Hook_ID hook_id, Void_Func *func_ptr){
|
||||||
}
|
}
|
||||||
|
|
||||||
api(custom) function b32
|
api(custom) function b32
|
||||||
set_custom_hook_memory_size(Application_Links *app, Hook_ID hook_id, umem size){
|
set_custom_hook_memory_size(Application_Links *app, Hook_ID hook_id, u64 size){
|
||||||
Models *models = (Models*)app->cmd_context;
|
Models *models = (Models*)app->cmd_context;
|
||||||
b32 result = true;
|
b32 result = true;
|
||||||
switch (hook_id){
|
switch (hook_id){
|
||||||
|
@ -2738,8 +2738,8 @@ set_window_title(Application_Links *app, String_Const_u8 title)
|
||||||
{
|
{
|
||||||
Models *models = (Models*)app->cmd_context;
|
Models *models = (Models*)app->cmd_context;
|
||||||
models->has_new_title = true;
|
models->has_new_title = true;
|
||||||
umem cap_before_null = (umem)(models->title_capacity - 1);
|
u64 cap_before_null = (u64)(models->title_capacity - 1);
|
||||||
umem copy_size = clamp_top(title.size, cap_before_null);
|
u64 copy_size = clamp_top(title.size, cap_before_null);
|
||||||
block_copy(models->title_space, title.str, copy_size);
|
block_copy(models->title_space, title.str, copy_size);
|
||||||
models->title_space[copy_size] = 0;
|
models->title_space[copy_size] = 0;
|
||||||
}
|
}
|
||||||
|
@ -2824,8 +2824,8 @@ text_layout_create(Application_Links *app, Buffer_ID buffer_id, Rect_f32 rect, B
|
||||||
y = next_y;
|
y = next_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
Interval_i64 visible_line_number_range = Ii64(buffer_point.line_number, line_number);
|
Range_i64 visible_line_number_range = Ii64(buffer_point.line_number, line_number);
|
||||||
Interval_i64 visible_range = Ii64(buffer_get_first_pos_from_line_number(buffer, visible_line_number_range.min),
|
Range_i64 visible_range = Ii64(buffer_get_first_pos_from_line_number(buffer, visible_line_number_range.min),
|
||||||
buffer_get_last_pos_from_line_number(buffer, visible_line_number_range.max));
|
buffer_get_last_pos_from_line_number(buffer, visible_line_number_range.max));
|
||||||
|
|
||||||
i64 item_count = range_size_inclusive(visible_range);
|
i64 item_count = range_size_inclusive(visible_range);
|
||||||
|
@ -2978,8 +2978,7 @@ text_layout_character_on_screen(Application_Links *app, Text_Layout_ID layout_id
|
||||||
}
|
}
|
||||||
|
|
||||||
api(custom) function void
|
api(custom) function void
|
||||||
paint_text_color(Application_Links *app, Text_Layout_ID layout_id, Interval_i64 range,
|
paint_text_color(Application_Links *app, Text_Layout_ID layout_id, Range_i64 range, ARGB_Color color){
|
||||||
ARGB_Color color){
|
|
||||||
Models *models = (Models*)app->cmd_context;
|
Models *models = (Models*)app->cmd_context;
|
||||||
Rect_f32 result = {};
|
Rect_f32 result = {};
|
||||||
Text_Layout *layout = text_layout_get(&models->text_layouts, layout_id);
|
Text_Layout *layout = text_layout_get(&models->text_layouts, layout_id);
|
||||||
|
|
|
@ -63,7 +63,7 @@ struct Models{
|
||||||
Tick_Function *tick;
|
Tick_Function *tick;
|
||||||
Render_Caller_Function *render_caller;
|
Render_Caller_Function *render_caller;
|
||||||
Delta_Rule_Function *delta_rule;
|
Delta_Rule_Function *delta_rule;
|
||||||
umem delta_rule_memory_size;
|
u64 delta_rule_memory_size;
|
||||||
|
|
||||||
Hook_Function *buffer_viewer_update;
|
Hook_Function *buffer_viewer_update;
|
||||||
Custom_Command_Function *view_event_handler;
|
Custom_Command_Function *view_event_handler;
|
||||||
|
|
|
@ -278,12 +278,12 @@ buffer_line_count(Gap_Buffer *buffer){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
buffer_init(Gap_Buffer *buffer, u8 *data, umem size, Base_Allocator *allocator){
|
buffer_init(Gap_Buffer *buffer, u8 *data, u64 size, Base_Allocator *allocator){
|
||||||
block_zero_struct(buffer);
|
block_zero_struct(buffer);
|
||||||
|
|
||||||
buffer->allocator = allocator;
|
buffer->allocator = allocator;
|
||||||
|
|
||||||
umem capacity = round_up_umem(size*2, KB(4));
|
u64 capacity = round_up_u64(size*2, KB(4));
|
||||||
Data memory = base_allocate(allocator, capacity);
|
Data memory = base_allocate(allocator, capacity);
|
||||||
buffer->data = (u8*)memory.data;
|
buffer->data = (u8*)memory.data;
|
||||||
buffer->size1 = size/2;
|
buffer->size1 = size/2;
|
||||||
|
@ -357,21 +357,21 @@ buffer_get_chunks(Arena *arena, Gap_Buffer *buffer){
|
||||||
string_list_push(arena, &list, SCu8(buffer->data, buffer->size1));
|
string_list_push(arena, &list, SCu8(buffer->data, buffer->size1));
|
||||||
}
|
}
|
||||||
if (buffer->size2 > 0){
|
if (buffer->size2 > 0){
|
||||||
umem gap_2_pos = buffer->size1 + buffer->gap_size;
|
u64 gap_2_pos = buffer->size1 + buffer->gap_size;
|
||||||
string_list_push(arena, &list, SCu8(buffer->data + gap_2_pos, buffer->size2));
|
string_list_push(arena, &list, SCu8(buffer->data + gap_2_pos, buffer->size2));
|
||||||
}
|
}
|
||||||
return(list);
|
return(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
buffer_chunks_clamp(List_String_Const_u8 *chunks, Interval_i64 range){
|
buffer_chunks_clamp(List_String_Const_u8 *chunks, Range_i64 range){
|
||||||
i64 p = 0;
|
i64 p = 0;
|
||||||
List_String_Const_u8 list = {};
|
List_String_Const_u8 list = {};
|
||||||
for (Node_String_Const_u8 *node = chunks->first, *next = 0;
|
for (Node_String_Const_u8 *node = chunks->first, *next = 0;
|
||||||
node != 0;
|
node != 0;
|
||||||
node = next){
|
node = next){
|
||||||
next = node->next;
|
next = node->next;
|
||||||
Interval_i64 node_range = Ii64(p, p + node->string.size);
|
Range_i64 node_range = Ii64(p, p + node->string.size);
|
||||||
if (range_overlap(range, node_range)){
|
if (range_overlap(range, node_range)){
|
||||||
i64 first = Max(node_range.first, range.first) - node_range.first;
|
i64 first = Max(node_range.first, range.first) - node_range.first;
|
||||||
i64 one_past_last = Min(node_range.one_past_last, range.one_past_last) - node_range.first;
|
i64 one_past_last = Min(node_range.one_past_last, range.one_past_last) - node_range.first;
|
||||||
|
@ -387,17 +387,17 @@ buffer_chunks_clamp(List_String_Const_u8 *chunks, Interval_i64 range){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal String_Const_u8
|
internal String_Const_u8
|
||||||
buffer_stringify(Arena *arena, Gap_Buffer *buffer, Interval_i64 range){
|
buffer_stringify(Arena *arena, Gap_Buffer *buffer, Range_i64 range){
|
||||||
List_String_Const_u8 list = buffer_get_chunks(arena, buffer);
|
List_String_Const_u8 list = buffer_get_chunks(arena, buffer);
|
||||||
buffer_chunks_clamp(&list, range);
|
buffer_chunks_clamp(&list, range);
|
||||||
return(string_list_flatten(arena, list, StringFill_NullTerminate));
|
return(string_list_flatten(arena, list, StringFill_NullTerminate));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal String_Const_u8
|
internal String_Const_u8
|
||||||
buffer_eol_convert_out(Arena *arena, Gap_Buffer *buffer, Interval_i64 range){
|
buffer_eol_convert_out(Arena *arena, Gap_Buffer *buffer, Range_i64 range){
|
||||||
List_String_Const_u8 list = buffer_get_chunks(arena, buffer);
|
List_String_Const_u8 list = buffer_get_chunks(arena, buffer);
|
||||||
buffer_chunks_clamp(&list, range);
|
buffer_chunks_clamp(&list, range);
|
||||||
umem cap = list.total_size*2;
|
u64 cap = list.total_size*2;
|
||||||
u8 *memory = push_array(arena, u8, cap);
|
u8 *memory = push_array(arena, u8, cap);
|
||||||
u8 *memory_opl = memory + cap;
|
u8 *memory_opl = memory + cap;
|
||||||
u8 *ptr = memory;
|
u8 *ptr = memory;
|
||||||
|
@ -549,7 +549,7 @@ push_line_move(Arena *arena, Line_Move *moves, i64 new_line_first,
|
||||||
function i64
|
function i64
|
||||||
count_lines(String_Const_u8 string){
|
count_lines(String_Const_u8 string){
|
||||||
i64 result = 0;
|
i64 result = 0;
|
||||||
for (umem i = 0; i < string.size; i += 1){
|
for (u64 i = 0; i < string.size; i += 1){
|
||||||
if (string.str[i] == '\n'){
|
if (string.str[i] == '\n'){
|
||||||
result += 1;
|
result += 1;
|
||||||
}
|
}
|
||||||
|
@ -560,7 +560,7 @@ count_lines(String_Const_u8 string){
|
||||||
function void
|
function void
|
||||||
fill_line_starts(i64 *lines_starts, String_Const_u8 string, i64 text_base){
|
fill_line_starts(i64 *lines_starts, String_Const_u8 string, i64 text_base){
|
||||||
i64 *ptr = lines_starts;
|
i64 *ptr = lines_starts;
|
||||||
for (umem i = 0; i < string.size; i += 1){
|
for (u64 i = 0; i < string.size; i += 1){
|
||||||
if (string.str[i] == '\n'){
|
if (string.str[i] == '\n'){
|
||||||
*ptr = text_base + i + 1;
|
*ptr = text_base + i + 1;
|
||||||
ptr += 1;
|
ptr += 1;
|
||||||
|
@ -693,9 +693,9 @@ buffer_remeasure_starts(Arena *scratch, Gap_Buffer *buffer,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
internal Interval_i64
|
internal Range_i64
|
||||||
buffer_get_pos_range_from_line_number(Gap_Buffer *buffer, i64 line_number){
|
buffer_get_pos_range_from_line_number(Gap_Buffer *buffer, i64 line_number){
|
||||||
Interval_i64 result = {};
|
Range_i64 result = {};
|
||||||
if (1 <= line_number && line_number < buffer->line_start_count){
|
if (1 <= line_number && line_number < buffer->line_start_count){
|
||||||
result.first = buffer->line_starts[line_number - 1];
|
result.first = buffer->line_starts[line_number - 1];
|
||||||
result.one_past_last = buffer->line_starts[line_number];
|
result.one_past_last = buffer->line_starts[line_number];
|
||||||
|
@ -815,7 +815,7 @@ buffer_get_chunk_position(String_Const_u8_Array chunks, i64 buffer_size, i64 rea
|
||||||
pos.real_pos = real_pos;
|
pos.real_pos = real_pos;
|
||||||
pos.chunk_pos = real_pos;
|
pos.chunk_pos = real_pos;
|
||||||
if (pos.real_pos != buffer_size){
|
if (pos.real_pos != buffer_size){
|
||||||
for (;(imem)(chunks.vals[pos.chunk_index].size) <= pos.chunk_pos;){
|
for (;(i64)(chunks.vals[pos.chunk_index].size) <= pos.chunk_pos;){
|
||||||
Assert(pos.chunk_index < chunks.count);
|
Assert(pos.chunk_index < chunks.count);
|
||||||
pos.chunk_pos -= (i32)chunks.vals[pos.chunk_index].size;
|
pos.chunk_pos -= (i32)chunks.vals[pos.chunk_index].size;
|
||||||
pos.chunk_index += 1;
|
pos.chunk_index += 1;
|
||||||
|
@ -842,7 +842,7 @@ buffer_chunk_position_iterate(String_Const_u8_Array chunks, Buffer_Chunk_Positio
|
||||||
pos->chunk_pos = (i32)chunks.vals[pos->chunk_index].size - 1;
|
pos->chunk_pos = (i32)chunks.vals[pos->chunk_index].size - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pos->chunk_pos >= (imem)(chunks.vals[pos->chunk_index].size)){
|
else if (pos->chunk_pos >= (i64)(chunks.vals[pos->chunk_index].size)){
|
||||||
pos->chunk_index += 1;
|
pos->chunk_index += 1;
|
||||||
if (pos->chunk_index == chunks.count){
|
if (pos->chunk_index == chunks.count){
|
||||||
past_end = 1;
|
past_end = 1;
|
||||||
|
|
|
@ -97,7 +97,7 @@ dynamic_variable_block_init(Base_Allocator *allocator, Dynamic_Variable_Block *b
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Data
|
internal Data
|
||||||
dynamic_variable_get(Dynamic_Variable_Block *block, Managed_ID id, umem size){
|
dynamic_variable_get(Dynamic_Variable_Block *block, Managed_ID id, u64 size){
|
||||||
Data result = {};
|
Data result = {};
|
||||||
Table_Lookup lookup = table_lookup(&block->id_to_data_table, id);
|
Table_Lookup lookup = table_lookup(&block->id_to_data_table, id);
|
||||||
if (lookup.found_match){
|
if (lookup.found_match){
|
||||||
|
@ -425,7 +425,7 @@ lifetime_get_or_create_intersection_key(Lifetime_Allocator *lifetime_allocator,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize
|
// Initialize
|
||||||
umem new_memory_size = sizeof(Lifetime_Object*)*count;
|
u64 new_memory_size = sizeof(Lifetime_Object*)*count;
|
||||||
Data new_memory = base_allocate(lifetime_allocator->allocator, new_memory_size);
|
Data new_memory = base_allocate(lifetime_allocator->allocator, new_memory_size);
|
||||||
new_key->members = (Lifetime_Object**)new_memory.data;
|
new_key->members = (Lifetime_Object**)new_memory.data;
|
||||||
block_copy_dynamic_array(new_key->members, object_ptr_array, count);
|
block_copy_dynamic_array(new_key->members, object_ptr_array, count);
|
||||||
|
|
43
4ed_edit.cpp
43
4ed_edit.cpp
|
@ -9,12 +9,12 @@
|
||||||
|
|
||||||
// TOP
|
// TOP
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
pre_edit_state_change(Models *models, Editing_File *file){
|
pre_edit_state_change(Models *models, Editing_File *file){
|
||||||
file_add_dirty_flag(file, DirtyState_UnsavedChanges);
|
file_add_dirty_flag(file, DirtyState_UnsavedChanges);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
pre_edit_history_prep(Editing_File *file, Edit_Behaviors behaviors){
|
pre_edit_history_prep(Editing_File *file, Edit_Behaviors behaviors){
|
||||||
if (!behaviors.do_not_post_to_history){
|
if (!behaviors.do_not_post_to_history){
|
||||||
history_dump_records_after_index(&file->state.history,
|
history_dump_records_after_index(&file->state.history,
|
||||||
|
@ -22,9 +22,9 @@ pre_edit_history_prep(Editing_File *file, Edit_Behaviors behaviors){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
post_edit_call_hook(Thread_Context *tctx, Models *models, Editing_File *file,
|
post_edit_call_hook(Thread_Context *tctx, Models *models, Editing_File *file,
|
||||||
Range_i64 new_range, umem original_size){
|
Range_i64 new_range, u64 original_size){
|
||||||
// NOTE(allen): edit range hook
|
// NOTE(allen): edit range hook
|
||||||
if (models->buffer_edit_range != 0){
|
if (models->buffer_edit_range != 0){
|
||||||
Application_Links app = {};
|
Application_Links app = {};
|
||||||
|
@ -34,7 +34,7 @@ post_edit_call_hook(Thread_Context *tctx, Models *models, Editing_File *file,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
edit_fix_markers__write_workspace_markers(Dynamic_Workspace *workspace, Buffer_ID buffer_id,
|
edit_fix_markers__write_workspace_markers(Dynamic_Workspace *workspace, Buffer_ID buffer_id,
|
||||||
Cursor_With_Index *cursors, Cursor_With_Index *r_cursors,
|
Cursor_With_Index *cursors, Cursor_With_Index *r_cursors,
|
||||||
i32 *cursor_count, i32 *r_cursor_count){
|
i32 *cursor_count, i32 *r_cursor_count){
|
||||||
|
@ -56,7 +56,7 @@ edit_fix_markers__write_workspace_markers(Dynamic_Workspace *workspace, Buffer_I
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
edit_fix_markers__read_workspace_markers(Dynamic_Workspace *workspace, Buffer_ID buffer_id,
|
edit_fix_markers__read_workspace_markers(Dynamic_Workspace *workspace, Buffer_ID buffer_id,
|
||||||
Cursor_With_Index *cursors, Cursor_With_Index *r_cursors, i32 *cursor_count, i32 *r_cursor_count){
|
Cursor_With_Index *cursors, Cursor_With_Index *r_cursors, i32 *cursor_count, i32 *r_cursor_count){
|
||||||
for (Managed_Buffer_Markers_Header *node = workspace->buffer_markers_list.first;
|
for (Managed_Buffer_Markers_Header *node = workspace->buffer_markers_list.first;
|
||||||
|
@ -77,19 +77,19 @@ edit_fix_markers__read_workspace_markers(Dynamic_Workspace *workspace, Buffer_ID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal f32
|
function f32
|
||||||
edit_fix_markers__compute_scroll_y(i32 line_height, f32 old_y_val, f32 new_y_val_aligned){
|
edit_fix_markers__compute_scroll_y(i32 line_height, f32 old_y_val, f32 new_y_val_aligned){
|
||||||
f32 y_offset = mod_f32(old_y_val, line_height);
|
f32 y_offset = mod_f32(old_y_val, line_height);
|
||||||
f32 y_position = new_y_val_aligned + y_offset;
|
f32 y_position = new_y_val_aligned + y_offset;
|
||||||
return(y_position);
|
return(y_position);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal i32
|
function i32
|
||||||
edit_fix_markers__compute_scroll_y(i32 line_height, i32 old_y_val, f32 new_y_val_aligned){
|
edit_fix_markers__compute_scroll_y(i32 line_height, i32 old_y_val, f32 new_y_val_aligned){
|
||||||
return((i32)edit_fix_markers__compute_scroll_y(line_height, (f32)old_y_val, new_y_val_aligned));
|
return((i32)edit_fix_markers__compute_scroll_y(line_height, (f32)old_y_val, new_y_val_aligned));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
edit_fix_markers(Thread_Context *tctx, Models *models, Editing_File *file,
|
edit_fix_markers(Thread_Context *tctx, Models *models, Editing_File *file,
|
||||||
Batch_Edit *batch){
|
Batch_Edit *batch){
|
||||||
Layout *layout = &models->layout;
|
Layout *layout = &models->layout;
|
||||||
|
@ -200,7 +200,7 @@ edit_fix_markers(Thread_Context *tctx, Models *models, Editing_File *file,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
file_end_file(Thread_Context *tctx, Models *models, Editing_File *file){
|
file_end_file(Thread_Context *tctx, Models *models, Editing_File *file){
|
||||||
if (models->end_buffer != 0){
|
if (models->end_buffer != 0){
|
||||||
Application_Links app = {};
|
Application_Links app = {};
|
||||||
|
@ -213,9 +213,8 @@ file_end_file(Thread_Context *tctx, Models *models, Editing_File *file){
|
||||||
file->lifetime_object = lifetime_alloc_object(lifetime_allocator, DynamicWorkspace_Buffer, file);
|
file->lifetime_object = lifetime_alloc_object(lifetime_allocator, DynamicWorkspace_Buffer, file);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
edit__apply(Thread_Context *tctx, Models *models, Editing_File *file,
|
edit__apply(Thread_Context *tctx, Models *models, Editing_File *file, Range_i64 range, String_Const_u8 string, Edit_Behaviors behaviors){
|
||||||
Interval_i64 range, String_Const_u8 string, Edit_Behaviors behaviors){
|
|
||||||
Edit edit = {};
|
Edit edit = {};
|
||||||
edit.text = string;
|
edit.text = string;
|
||||||
edit.range = range;
|
edit.range = range;
|
||||||
|
@ -241,7 +240,7 @@ edit__apply(Thread_Context *tctx, Models *models, Editing_File *file,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
edit_single(Thread_Context *tctx, Models *models, Editing_File *file,
|
edit_single(Thread_Context *tctx, Models *models, Editing_File *file,
|
||||||
Range_i64 range, String_Const_u8 string, Edit_Behaviors behaviors){
|
Range_i64 range, String_Const_u8 string, Edit_Behaviors behaviors){
|
||||||
pre_edit_state_change(models, file);
|
pre_edit_state_change(models, file);
|
||||||
|
@ -261,7 +260,7 @@ edit_single(Thread_Context *tctx, Models *models, Editing_File *file,
|
||||||
Ii64_size(range.first, string.size), range_size(range));
|
Ii64_size(range.first, string.size), range_size(range));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
edit__apply_record_forward(Thread_Context *tctx, Models *models, Editing_File *file, Record *record, Edit_Behaviors behaviors_prototype){
|
edit__apply_record_forward(Thread_Context *tctx, Models *models, Editing_File *file, Record *record, Edit_Behaviors behaviors_prototype){
|
||||||
// NOTE(allen): // NOTE(allen): // NOTE(allen): // NOTE(allen): // NOTE(allen):
|
// NOTE(allen): // NOTE(allen): // NOTE(allen): // NOTE(allen): // NOTE(allen):
|
||||||
// Whenever you change this also change the backward version!
|
// Whenever you change this also change the backward version!
|
||||||
|
@ -270,7 +269,7 @@ edit__apply_record_forward(Thread_Context *tctx, Models *models, Editing_File *f
|
||||||
case RecordKind_Single:
|
case RecordKind_Single:
|
||||||
{
|
{
|
||||||
String_Const_u8 str = record->single.forward_text;
|
String_Const_u8 str = record->single.forward_text;
|
||||||
Interval_i64 range = Ii64(record->single.first, record->single.first + record->single.backward_text.size);
|
Range_i64 range = Ii64(record->single.first, record->single.first + record->single.backward_text.size);
|
||||||
edit_single(tctx, models, file, range, str, behaviors_prototype);
|
edit_single(tctx, models, file, range, str, behaviors_prototype);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
|
@ -292,7 +291,7 @@ edit__apply_record_forward(Thread_Context *tctx, Models *models, Editing_File *f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
edit__apply_record_backward(Thread_Context *tctx, Models *models, Editing_File *file, Record *record, Edit_Behaviors behaviors_prototype){
|
edit__apply_record_backward(Thread_Context *tctx, Models *models, Editing_File *file, Record *record, Edit_Behaviors behaviors_prototype){
|
||||||
// NOTE(allen): // NOTE(allen): // NOTE(allen): // NOTE(allen): // NOTE(allen):
|
// NOTE(allen): // NOTE(allen): // NOTE(allen): // NOTE(allen): // NOTE(allen):
|
||||||
// Whenever you change this also change the forward version!
|
// Whenever you change this also change the forward version!
|
||||||
|
@ -301,7 +300,7 @@ edit__apply_record_backward(Thread_Context *tctx, Models *models, Editing_File *
|
||||||
case RecordKind_Single:
|
case RecordKind_Single:
|
||||||
{
|
{
|
||||||
String_Const_u8 str = record->single.backward_text;
|
String_Const_u8 str = record->single.backward_text;
|
||||||
Interval_i64 range = Ii64(record->single.first, record->single.first + record->single.forward_text.size);
|
Range_i64 range = Ii64(record->single.first, record->single.first + record->single.forward_text.size);
|
||||||
edit_single(tctx, models, file, range, str, behaviors_prototype);
|
edit_single(tctx, models, file, range, str, behaviors_prototype);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
|
@ -323,7 +322,7 @@ edit__apply_record_backward(Thread_Context *tctx, Models *models, Editing_File *
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
function void
|
||||||
edit_change_current_history_state(Thread_Context *tctx, Models *models, Editing_File *file, i32 target_index){
|
edit_change_current_history_state(Thread_Context *tctx, Models *models, Editing_File *file, i32 target_index){
|
||||||
History *history = &file->state.history;
|
History *history = &file->state.history;
|
||||||
if (history->activated && file->state.current_record_index != target_index){
|
if (history->activated && file->state.current_record_index != target_index){
|
||||||
|
@ -358,7 +357,7 @@ edit_change_current_history_state(Thread_Context *tctx, Models *models, Editing_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal b32
|
function b32
|
||||||
edit_merge_history_range(Thread_Context *tctx, Models *models, Editing_File *file, History_Record_Index first_index, History_Record_Index last_index, Record_Merge_Flag flags){
|
edit_merge_history_range(Thread_Context *tctx, Models *models, Editing_File *file, History_Record_Index first_index, History_Record_Index last_index, Record_Merge_Flag flags){
|
||||||
b32 result = false;
|
b32 result = false;
|
||||||
History *history = &file->state.history;
|
History *history = &file->state.history;
|
||||||
|
@ -419,7 +418,7 @@ edit_batch_check(Thread_Context *tctx, Profile_Global_List *list, Batch_Edit *ba
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal b32
|
function b32
|
||||||
edit_batch(Thread_Context *tctx, Models *models, Editing_File *file,
|
edit_batch(Thread_Context *tctx, Models *models, Editing_File *file,
|
||||||
Batch_Edit *batch, Edit_Behaviors behaviors){
|
Batch_Edit *batch, Edit_Behaviors behaviors){
|
||||||
b32 result = true;
|
b32 result = true;
|
||||||
|
@ -502,7 +501,7 @@ edit_batch(Thread_Context *tctx, Models *models, Editing_File *file,
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
|
||||||
internal Editing_File*
|
function Editing_File*
|
||||||
create_file(Thread_Context *tctx, Models *models, String_Const_u8 file_name, Buffer_Create_Flag flags){
|
create_file(Thread_Context *tctx, Models *models, String_Const_u8 file_name, Buffer_Create_Flag flags){
|
||||||
Editing_File *result = 0;
|
Editing_File *result = 0;
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,7 @@ file_clear_dirty_flags(Editing_File *file){
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
file_name_terminate(Editing_File_Name *name){
|
file_name_terminate(Editing_File_Name *name){
|
||||||
umem size = name->name_size;
|
u64 size = name->name_size;
|
||||||
size = clamp_top(size, sizeof(name->name_space) - 1);
|
size = clamp_top(size, sizeof(name->name_space) - 1);
|
||||||
name->name_space[size] = 0;
|
name->name_space[size] = 0;
|
||||||
name->name_size = size;
|
name->name_size = size;
|
||||||
|
@ -395,7 +395,7 @@ file_line_y_difference(Thread_Context *tctx, Models *models, Editing_File *file,
|
||||||
i64 line_a, i64 line_b){
|
i64 line_a, i64 line_b){
|
||||||
f32 result = 0.f;
|
f32 result = 0.f;
|
||||||
if (line_a != line_b){
|
if (line_a != line_b){
|
||||||
Interval_i64 line_range = Ii64(line_a, line_b);
|
Range_i64 line_range = Ii64(line_a, line_b);
|
||||||
for (i64 i = line_range.min; i < line_range.max; i += 1){
|
for (i64 i = line_range.min; i < line_range.max; i += 1){
|
||||||
Layout_Item_List line = file_get_line_layout(tctx, models, file, layout_func, width, face, i);
|
Layout_Item_List line = file_get_line_layout(tctx, models, file, layout_func, width, face, i);
|
||||||
result += line.height;
|
result += line.height;
|
||||||
|
@ -522,7 +522,7 @@ internal i64
|
||||||
file_line_character_difference(Thread_Context *tctx, Models *models, Editing_File *file, Layout_Function *layout_func, f32 width, Face *face, i64 line_a, i64 line_b){
|
file_line_character_difference(Thread_Context *tctx, Models *models, Editing_File *file, Layout_Function *layout_func, f32 width, Face *face, i64 line_a, i64 line_b){
|
||||||
i64 result = 0;
|
i64 result = 0;
|
||||||
if (line_a != line_b){
|
if (line_a != line_b){
|
||||||
Interval_i64 line_range = Ii64(line_a, line_b);
|
Range_i64 line_range = Ii64(line_a, line_b);
|
||||||
for (i64 i = line_range.min; i < line_range.max; i += 1){
|
for (i64 i = line_range.min; i < line_range.max; i += 1){
|
||||||
Layout_Item_List line = file_get_line_layout(tctx, models, file, layout_func, width, face, i);
|
Layout_Item_List line = file_get_line_layout(tctx, models, file, layout_func, width, face, i);
|
||||||
result += line.character_count;
|
result += line.character_count;
|
||||||
|
|
|
@ -79,7 +79,7 @@ struct Editing_File_State{
|
||||||
|
|
||||||
struct Editing_File_Name{
|
struct Editing_File_Name{
|
||||||
u8 name_space[256];
|
u8 name_space[256];
|
||||||
umem name_size;
|
u64 name_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Editing_File{
|
struct Editing_File{
|
||||||
|
|
|
@ -348,8 +348,8 @@ layout_get_absolute_position_of_split(Panel *panel){
|
||||||
return(pos);
|
return(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Range
|
internal Range_i32
|
||||||
layout__get_limiting_range_on_split_children(i32 mid, b32 vertical_split, Panel *panel, Range range){
|
layout__get_limiting_range_on_split_children(i32 mid, b32 vertical_split, Panel *panel, Range_i32 range){
|
||||||
if (panel->kind == PanelKind_Intermediate){
|
if (panel->kind == PanelKind_Intermediate){
|
||||||
if (vertical_split == panel->vertical_split){
|
if (vertical_split == panel->vertical_split){
|
||||||
i32 pos = layout_get_absolute_position_of_split(panel);
|
i32 pos = layout_get_absolute_position_of_split(panel);
|
||||||
|
@ -366,10 +366,10 @@ layout__get_limiting_range_on_split_children(i32 mid, b32 vertical_split, Panel
|
||||||
return(range);
|
return(range);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Range
|
internal Range_i32
|
||||||
layout_get_limiting_range_on_split(Layout *layout, Panel *panel){
|
layout_get_limiting_range_on_split(Layout *layout, Panel *panel){
|
||||||
// root level min max
|
// root level min max
|
||||||
Range range = {};
|
Range_i32 range = {};
|
||||||
if (panel->vertical_split){
|
if (panel->vertical_split){
|
||||||
range.max = layout->full_dim.x;
|
range.max = layout->full_dim.x;
|
||||||
}
|
}
|
||||||
|
|
22
4ed_mem.cpp
22
4ed_mem.cpp
|
@ -12,25 +12,25 @@
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
internal void
|
internal void
|
||||||
block_zero(void *a, umem size){
|
block_zero(void *a, u64 size){
|
||||||
for (u8 *ptr = (u8*)a, *e = ptr + size; ptr < e; ptr += 1){
|
for (u8 *ptr = (u8*)a, *e = ptr + size; ptr < e; ptr += 1){
|
||||||
*ptr = 0;
|
*ptr = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
internal void
|
internal void
|
||||||
block_fill_ones(void *a, umem size){
|
block_fill_ones(void *a, u64 size){
|
||||||
for (u8 *ptr = (u8*)a, *e = ptr + size; ptr < e; ptr += 1){
|
for (u8 *ptr = (u8*)a, *e = ptr + size; ptr < e; ptr += 1){
|
||||||
*ptr = 0xFF;
|
*ptr = 0xFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
internal void
|
internal void
|
||||||
block_copy(void *dst, void *src, umem size){
|
block_copy(void *dst, void *src, u64 size){
|
||||||
for (u8 *d = (u8*)dst, *s = (u8*)src, *e = s + size; s < e; d += 1, s += 1){
|
for (u8 *d = (u8*)dst, *s = (u8*)src, *e = s + size; s < e; d += 1, s += 1){
|
||||||
*d = *s;
|
*d = *s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
internal i32
|
internal i32
|
||||||
block_compare(void *a, void *b, umem size){
|
block_compare(void *a, void *b, u64 size){
|
||||||
for (u8 *aptr = (u8*)a, *bptr = (u8*)b, *e = bptr + size; bptr < e; aptr += 1, bptr += 1){
|
for (u8 *aptr = (u8*)a, *bptr = (u8*)b, *e = bptr + size; bptr < e; aptr += 1, bptr += 1){
|
||||||
i32 dif = (i32)*aptr - (i32)*bptr;
|
i32 dif = (i32)*aptr - (i32)*bptr;
|
||||||
if (dif != 0){
|
if (dif != 0){
|
||||||
|
@ -40,31 +40,31 @@ block_compare(void *a, void *b, umem size){
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
internal void
|
internal void
|
||||||
block_fill_u8(void *a, umem size, u8 val){
|
block_fill_u8(void *a, u64 size, u8 val){
|
||||||
for (u8 *ptr = (u8*)a, *e = ptr + size; ptr < e; ptr += 1){
|
for (u8 *ptr = (u8*)a, *e = ptr + size; ptr < e; ptr += 1){
|
||||||
*ptr = val;
|
*ptr = val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
internal void
|
internal void
|
||||||
block_fill_u16(void *a, umem size, u16 val){
|
block_fill_u16(void *a, u64 size, u16 val){
|
||||||
Assert(size%sizeof(u16) == 0);
|
Assert(size%sizeof(u16) == 0);
|
||||||
umem count = size/sizeof(u16);
|
u64 count = size/sizeof(u16);
|
||||||
for (u16 *ptr = (u16*)a, *e = ptr + count; ptr < e; ptr += 1){
|
for (u16 *ptr = (u16*)a, *e = ptr + count; ptr < e; ptr += 1){
|
||||||
*ptr = val;
|
*ptr = val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
internal void
|
internal void
|
||||||
block_fill_u32(void *a, umem size, u32 val){
|
block_fill_u32(void *a, u64 size, u32 val){
|
||||||
Assert(size%sizeof(u32) == 0);
|
Assert(size%sizeof(u32) == 0);
|
||||||
umem count = size/sizeof(u32);
|
u64 count = size/sizeof(u32);
|
||||||
for (u32 *ptr = (u32*)a, *e = ptr + count; ptr < e; ptr += 1){
|
for (u32 *ptr = (u32*)a, *e = ptr + count; ptr < e; ptr += 1){
|
||||||
*ptr = val;
|
*ptr = val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
internal void
|
internal void
|
||||||
block_fill_u64(void *a, umem size, u64 val){
|
block_fill_u64(void *a, u64 size, u64 val){
|
||||||
Assert(size%sizeof(u64) == 0);
|
Assert(size%sizeof(u64) == 0);
|
||||||
umem count = size/sizeof(u64);
|
u64 count = size/sizeof(u64);
|
||||||
for (u64 *ptr = (u64*)a, *e = ptr + count; ptr < e; ptr += 1){
|
for (u64 *ptr = (u64*)a, *e = ptr + count; ptr < e; ptr += 1){
|
||||||
*ptr = val;
|
*ptr = val;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ function String_Const_u8
|
||||||
get_full_path(Arena *arena, Path_Search_List *search_list, String_Const_u8 relative){
|
get_full_path(Arena *arena, Path_Search_List *search_list, String_Const_u8 relative){
|
||||||
String_Const_u8 result = {};
|
String_Const_u8 result = {};
|
||||||
Temp_Memory restore_point = begin_temp(arena);
|
Temp_Memory restore_point = begin_temp(arena);
|
||||||
umem buffer_cap = search_list->max_member_length + relative.size + 1;
|
u64 buffer_cap = search_list->max_member_length + relative.size + 1;
|
||||||
u8 *buffer = push_array(arena, u8, buffer_cap);
|
u8 *buffer = push_array(arena, u8, buffer_cap);
|
||||||
u8 *opl = buffer + buffer_cap;
|
u8 *opl = buffer + buffer_cap;
|
||||||
u8 *relative_base = opl - 1 - relative.size;
|
u8 *relative_base = opl - 1 - relative.size;
|
||||||
|
@ -38,7 +38,7 @@ get_full_path(Arena *arena, Path_Search_List *search_list, String_Const_u8 relat
|
||||||
for (Node_String_Const_u8 *node = search_list->list.first;
|
for (Node_String_Const_u8 *node = search_list->list.first;
|
||||||
node != 0;
|
node != 0;
|
||||||
node = node->next){
|
node = node->next){
|
||||||
umem node_size = node->string.size;
|
u64 node_size = node->string.size;
|
||||||
u8 *path_base = relative_base - node_size;
|
u8 *path_base = relative_base - node_size;
|
||||||
block_copy(path_base, node->string.str, node_size);
|
block_copy(path_base, node->string.str, node_size);
|
||||||
String_Const_u8 name = SCu8(path_base, opl);
|
String_Const_u8 name = SCu8(path_base, opl);
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
struct Path_Search_List{
|
struct Path_Search_List{
|
||||||
List_String_Const_u8 list;
|
List_String_Const_u8 list;
|
||||||
umem max_member_length;
|
u64 max_member_length;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -229,21 +229,21 @@ api_call(arena, api, "condition_variable_make",
|
||||||
|
|
||||||
{
|
{
|
||||||
API_Call *call = api_call(arena, api, "memory_allocate", "void*");
|
API_Call *call = api_call(arena, api, "memory_allocate", "void*");
|
||||||
api_param(arena, call, "umem", "size");
|
api_param(arena, call, "u64", "size");
|
||||||
api_param(arena, call, "String_Const_u8", "location");
|
api_param(arena, call, "String_Const_u8", "location");
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
API_Call *call = api_call(arena, api, "memory_set_protection", "b32");
|
API_Call *call = api_call(arena, api, "memory_set_protection", "b32");
|
||||||
api_param(arena, call, "void*", "ptr");
|
api_param(arena, call, "void*", "ptr");
|
||||||
api_param(arena, call, "umem", "size");
|
api_param(arena, call, "u64", "size");
|
||||||
api_param(arena, call, "u32", "flags");
|
api_param(arena, call, "u32", "flags");
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
API_Call *call = api_call(arena, api, "memory_free", "void");
|
API_Call *call = api_call(arena, api, "memory_free", "void");
|
||||||
api_param(arena, call, "void*", "ptr");
|
api_param(arena, call, "void*", "ptr");
|
||||||
api_param(arena, call, "umem", "size");
|
api_param(arena, call, "u64", "size");
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,8 +18,8 @@ union Text_Layout{
|
||||||
Arena *arena;
|
Arena *arena;
|
||||||
Buffer_ID buffer_id;
|
Buffer_ID buffer_id;
|
||||||
Buffer_Point point;
|
Buffer_Point point;
|
||||||
Interval_i64 visible_range;
|
Range_i64 visible_range;
|
||||||
Interval_i64 visible_line_number_range;
|
Range_i64 visible_line_number_range;
|
||||||
Rect_f32 rect;
|
Rect_f32 rect;
|
||||||
ARGB_Color *item_colors;
|
ARGB_Color *item_colors;
|
||||||
Layout_Function *layout_func;
|
Layout_Function *layout_func;
|
||||||
|
|
|
@ -207,7 +207,7 @@ get_file_from_identifier(Working_Set *working_set, Buffer_Identifier buffer){
|
||||||
|
|
||||||
// TODO(allen): Bring the clipboard fully to the custom side.
|
// TODO(allen): Bring the clipboard fully to the custom side.
|
||||||
internal String_Const_u8*
|
internal String_Const_u8*
|
||||||
working_set_next_clipboard_string(Heap *heap, Working_Set *working, umem str_size){
|
working_set_next_clipboard_string(Heap *heap, Working_Set *working, u64 str_size){
|
||||||
i32 clipboard_current = working->clipboard_current;
|
i32 clipboard_current = working->clipboard_current;
|
||||||
if (working->clipboard_size == 0){
|
if (working->clipboard_size == 0){
|
||||||
clipboard_current = 0;
|
clipboard_current = 0;
|
||||||
|
@ -276,7 +276,7 @@ internal b32
|
||||||
get_canon_name(Arena *scratch, String_Const_u8 file_name, Editing_File_Name *canon_name){
|
get_canon_name(Arena *scratch, String_Const_u8 file_name, Editing_File_Name *canon_name){
|
||||||
Temp_Memory temp = begin_temp(scratch);
|
Temp_Memory temp = begin_temp(scratch);
|
||||||
String_Const_u8 canonical = system_get_canonical(scratch, file_name);
|
String_Const_u8 canonical = system_get_canonical(scratch, file_name);
|
||||||
umem size = Min(sizeof(canon_name->name_space), canonical.size);
|
u64 size = Min(sizeof(canon_name->name_space), canonical.size);
|
||||||
block_copy(canon_name->name_space, canonical.str, size);
|
block_copy(canon_name->name_space, canonical.str, size);
|
||||||
canon_name->name_size = size;
|
canon_name->name_size = size;
|
||||||
end_temp(temp);
|
end_temp(temp);
|
||||||
|
@ -288,7 +288,7 @@ internal void
|
||||||
file_bind_file_name(Working_Set *working_set, Editing_File *file, String_Const_u8 canon_file_name){
|
file_bind_file_name(Working_Set *working_set, Editing_File *file, String_Const_u8 canon_file_name){
|
||||||
Assert(file->unique_name.name_size == 0);
|
Assert(file->unique_name.name_size == 0);
|
||||||
Assert(file->canon.name_size == 0);
|
Assert(file->canon.name_size == 0);
|
||||||
umem size = canon_file_name.size;
|
u64 size = canon_file_name.size;
|
||||||
size = clamp_top(size, sizeof(file->canon.name_space) - 1);
|
size = clamp_top(size, sizeof(file->canon.name_space) - 1);
|
||||||
file->canon.name_size = size;
|
file->canon.name_size = size;
|
||||||
block_copy(file->canon.name_space, canon_file_name.str, size);
|
block_copy(file->canon.name_space, canon_file_name.str, size);
|
||||||
|
@ -323,11 +323,11 @@ buffer_name_has_conflict(Working_Set *working_set, String_Const_u8 base_name){
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
buffer_resolve_name_low_level(Arena *scratch, Working_Set *working_set, Editing_File_Name *name, String_Const_u8 base_name){
|
buffer_resolve_name_low_level(Arena *scratch, Working_Set *working_set, Editing_File_Name *name, String_Const_u8 base_name){
|
||||||
umem size = base_name.size;
|
u64 size = base_name.size;
|
||||||
size = clamp_top(size, sizeof(name->name_space));
|
size = clamp_top(size, sizeof(name->name_space));
|
||||||
block_copy(name->name_space, base_name.str, size);
|
block_copy(name->name_space, base_name.str, size);
|
||||||
String_u8 string = Su8(name->name_space, size, sizeof(name->name_space));
|
String_u8 string = Su8(name->name_space, size, sizeof(name->name_space));
|
||||||
umem original_size = string.size;
|
u64 original_size = string.size;
|
||||||
u64 file_x = 0;
|
u64 file_x = 0;
|
||||||
for (b32 hit_conflict = true; hit_conflict;){
|
for (b32 hit_conflict = true; hit_conflict;){
|
||||||
hit_conflict = buffer_name_has_conflict(working_set, string.string);
|
hit_conflict = buffer_name_has_conflict(working_set, string.string);
|
||||||
|
@ -354,14 +354,14 @@ buffer_bind_name_low_level(Arena *scratch, Working_Set *working_set, Editing_Fil
|
||||||
buffer_resolve_name_low_level(scratch, working_set, &new_name, name);
|
buffer_resolve_name_low_level(scratch, working_set, &new_name, name);
|
||||||
|
|
||||||
{
|
{
|
||||||
umem size = base_name.size;
|
u64 size = base_name.size;
|
||||||
size = clamp_top(size, sizeof(file->base_name.name_space));
|
size = clamp_top(size, sizeof(file->base_name.name_space));
|
||||||
block_copy(file->base_name.name_space, base_name.str, size);
|
block_copy(file->base_name.name_space, base_name.str, size);
|
||||||
file->base_name.name_size = size;
|
file->base_name.name_size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
umem size = new_name.name_size;
|
u64 size = new_name.name_size;
|
||||||
block_copy(file->unique_name.name_space, new_name.name_space, size);
|
block_copy(file->unique_name.name_space, new_name.name_space, size);
|
||||||
file->unique_name.name_size = size;
|
file->unique_name.name_size = size;
|
||||||
}
|
}
|
||||||
|
@ -431,7 +431,7 @@ buffer_bind_name(Thread_Context *tctx, Models *models, Arena *scratch, Working_S
|
||||||
if (i > 0){
|
if (i > 0){
|
||||||
b = string_from_file_name(&file_ptr->unique_name);
|
b = string_from_file_name(&file_ptr->unique_name);
|
||||||
}
|
}
|
||||||
umem unique_name_capacity = 256;
|
u64 unique_name_capacity = 256;
|
||||||
u8 *unique_name_buffer = push_array(scratch, u8, unique_name_capacity);
|
u8 *unique_name_buffer = push_array(scratch, u8, unique_name_capacity);
|
||||||
Assert(b.size <= unique_name_capacity);
|
Assert(b.size <= unique_name_capacity);
|
||||||
block_copy(unique_name_buffer, b.str, b.size);
|
block_copy(unique_name_buffer, b.str, b.size);
|
||||||
|
|
|
@ -137,14 +137,14 @@ enum{
|
||||||
OPTIMIZATION = 0x20,
|
OPTIMIZATION = 0x20,
|
||||||
SUPER = 0x40,
|
SUPER = 0x40,
|
||||||
INTERNAL = 0x80,
|
INTERNAL = 0x80,
|
||||||
KEEP_ASSERT = 0x100,
|
SHIP = 0x100,
|
||||||
};
|
};
|
||||||
|
|
||||||
internal char**
|
internal char**
|
||||||
get_defines_from_flags(Arena *arena, u32 flags){
|
get_defines_from_flags(Arena *arena, u32 flags){
|
||||||
char **result = 0;
|
char **result = 0;
|
||||||
if (HasFlag(flags, KEEP_ASSERT)){
|
if (HasFlag(flags, SHIP)){
|
||||||
result = fm_list(arena, fm_list_one_item(arena, "FRED_KEEP_ASSERT"), result);
|
result = fm_list(arena, fm_list_one_item(arena, "SHIP_MODE"), result);
|
||||||
}
|
}
|
||||||
if (HasFlag(flags, INTERNAL)){
|
if (HasFlag(flags, INTERNAL)){
|
||||||
result = fm_list(arena, fm_list_one_item(arena, "FRED_INTERNAL"), result);
|
result = fm_list(arena, fm_list_one_item(arena, "FRED_INTERNAL"), result);
|
||||||
|
@ -270,6 +270,7 @@ build(Arena *arena, u32 flags, u32 arch, char *code_path, char **code_files, cha
|
||||||
|
|
||||||
fm_finish_build_line(&line);
|
fm_finish_build_line(&line);
|
||||||
|
|
||||||
|
//printf("%s\n", line.build_options);
|
||||||
systemf("%s", line.build_options);
|
systemf("%s", line.build_options);
|
||||||
fm_popdir(temp);
|
fm_popdir(temp);
|
||||||
|
|
||||||
|
@ -419,25 +420,6 @@ build_and_run(Arena *arena, char *cdir, char *filename, char *name, u32 flags){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
|
||||||
string_build(Arena *arena, char *cdir){
|
|
||||||
char *dir = fm_str(arena, BUILD_DIR);
|
|
||||||
|
|
||||||
{
|
|
||||||
char *file = fm_str(arena, "string/4ed_string_builder.cpp");
|
|
||||||
BEGIN_TIME_SECTION();
|
|
||||||
build(arena, OPTS | DEBUG_INFO, Arch_X64, cdir, file, dir, "string_builder", 0, 0, includes);
|
|
||||||
END_TIME_SECTION("build string_builder");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (prev_error == 0){
|
|
||||||
char *cmd = fm_str(arena, cdir, "/", dir, "/string_builder");
|
|
||||||
BEGIN_TIME_SECTION();
|
|
||||||
fm_execute_in_dir(fm_str(arena, cdir, "/string"), cmd, 0);
|
|
||||||
END_TIME_SECTION("run string_builder");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
buildsuper(Arena *arena, char *cdir, char *file, u32 arch){
|
buildsuper(Arena *arena, char *cdir, char *file, u32 arch){
|
||||||
printf("BUILDSUPER: cdir: %s; file: %s; arch: %u\n", cdir, file, arch);
|
printf("BUILDSUPER: cdir: %s; file: %s; arch: %u\n", cdir, file, arch);
|
||||||
|
@ -458,29 +440,6 @@ buildsuper(Arena *arena, char *cdir, char *file, u32 arch){
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(allen): Remove this
|
|
||||||
internal i32
|
|
||||||
get_freetype_include(char *out, u32 max){
|
|
||||||
i32 size = 0;
|
|
||||||
#if 0
|
|
||||||
#if OS_LINUX
|
|
||||||
char freetype_include[512];
|
|
||||||
FILE *file = popen("pkg-config --cflags freetype2", "r");
|
|
||||||
if (file != 0){
|
|
||||||
fgets(freetype_include, sizeof(freetype_include), file);
|
|
||||||
size = strlen(freetype_include);
|
|
||||||
memcpy(out, freetype_include, size);
|
|
||||||
pclose(file);
|
|
||||||
}
|
|
||||||
#elif OS_MAC
|
|
||||||
char *freetype_include = "/usr/local/include/freetype2";
|
|
||||||
size = strlen(freetype_include);
|
|
||||||
memcpy(out, freetype_include, size);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
return(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
build_main(Arena *arena, char *cdir, b32 update_local_theme, u32 flags, u32 arch){
|
build_main(Arena *arena, char *cdir, b32 update_local_theme, u32 flags, u32 arch){
|
||||||
char *dir = fm_str(arena, BUILD_DIR);
|
char *dir = fm_str(arena, BUILD_DIR);
|
||||||
|
@ -491,14 +450,6 @@ build_main(Arena *arena, char *cdir, b32 update_local_theme, u32 flags, u32 arch
|
||||||
|
|
||||||
char **build_includes = includes;
|
char **build_includes = includes;
|
||||||
|
|
||||||
char ft_include[512];
|
|
||||||
i32 ft_size = get_freetype_include(ft_include, sizeof(ft_include) - 1);
|
|
||||||
if (ft_size > 0){
|
|
||||||
ft_include[ft_size] = 0;
|
|
||||||
fprintf(stdout, "FREETYPE: %s\n", ft_include);
|
|
||||||
build_includes = fm_list(arena, build_includes, fm_list_one_item(arena, ft_include));
|
|
||||||
}
|
|
||||||
|
|
||||||
BEGIN_TIME_SECTION();
|
BEGIN_TIME_SECTION();
|
||||||
build(arena, OPTS | SHARED_CODE | flags, arch, cdir, file, dir, "4ed_app" DLL, get_defines_from_flags(arena, flags), exports, build_includes);
|
build(arena, OPTS | SHARED_CODE | flags, arch, cdir, file, dir, "4ed_app" DLL, get_defines_from_flags(arena, flags), exports, build_includes);
|
||||||
END_TIME_SECTION("build 4ed_app");
|
END_TIME_SECTION("build 4ed_app");
|
||||||
|
@ -564,7 +515,7 @@ package(Arena *arena, char *cdir){
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
char *tier_names[] = { "demo", "super", };
|
char *tier_names[] = { "demo", "super", };
|
||||||
u32 base_flags = OPTIMIZATION | KEEP_ASSERT | DEBUG_INFO;
|
u32 base_flags = SHIP | DEBUG_INFO | OPTIMIZATION;
|
||||||
u32 tier_flags[] = { 0, SUPER, };
|
u32 tier_flags[] = { 0, SUPER, };
|
||||||
|
|
||||||
fm_make_folder_if_missing(arena, pack_dir);
|
fm_make_folder_if_missing(arena, pack_dir);
|
||||||
|
@ -633,15 +584,19 @@ int main(int argc, char **argv){
|
||||||
Assert(n < sizeof(cdir));
|
Assert(n < sizeof(cdir));
|
||||||
END_TIME_SECTION("current directory");
|
END_TIME_SECTION("current directory");
|
||||||
|
|
||||||
#if defined(DEV_BUILD) || defined(OPT_BUILD) || defined(DEV_BUILD_X86)
|
u32 flags = SUPER;
|
||||||
u32 flags = DEBUG_INFO | SUPER | INTERNAL;
|
|
||||||
u32 arch = Arch_X64;
|
u32 arch = Arch_X64;
|
||||||
#if defined(OPT_BUILD)
|
#if defined(DEV_BUILD) || defined(DEV_BUILD_X86)
|
||||||
|
flags |= DEBUG_INFO | INTERNAL;
|
||||||
|
#endif
|
||||||
|
#if defined(OPT_BUILD) || defined(OPT_BUILD_X86)
|
||||||
flags |= OPTIMIZATION;
|
flags |= OPTIMIZATION;
|
||||||
#endif
|
#endif
|
||||||
#if defined(DEV_BUILD_X86)
|
#if defined(DEV_BUILD_X86) || defined(OPT_BUILD_X86)
|
||||||
arch = Arch_X86;
|
arch = Arch_X86;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(DEV_BUILD) || defined(OPT_BUILD) || defined(DEV_BUILD_X86)
|
||||||
standard_build(&arena, cdir, flags, arch);
|
standard_build(&arena, cdir, flags, arch);
|
||||||
|
|
||||||
#elif defined(PACKAGE)
|
#elif defined(PACKAGE)
|
||||||
|
|
|
@ -15,13 +15,13 @@ Scratch_Block::Scratch_Block(Application_Links *app){
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
|
||||||
internal Arena*
|
internal Arena*
|
||||||
reserve_arena(Application_Links *app, umem chunk_size, umem align){
|
reserve_arena(Application_Links *app, u64 chunk_size, u64 align){
|
||||||
Thread_Context *tctx = get_thread_context(app);
|
Thread_Context *tctx = get_thread_context(app);
|
||||||
return(reserve_arena(tctx, chunk_size, align));
|
return(reserve_arena(tctx, chunk_size, align));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Arena*
|
internal Arena*
|
||||||
reserve_arena(Application_Links *app, umem chunk_size){
|
reserve_arena(Application_Links *app, u64 chunk_size){
|
||||||
Thread_Context *tctx = get_thread_context(app);
|
Thread_Context *tctx = get_thread_context(app);
|
||||||
return(reserve_arena(tctx, chunk_size));
|
return(reserve_arena(tctx, chunk_size));
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ make_batch_from_indentations(Application_Links *app, Arena *arena, Buffer_ID buf
|
||||||
}
|
}
|
||||||
|
|
||||||
if (correct_indentation != indent_info.indent_pos){
|
if (correct_indentation != indent_info.indent_pos){
|
||||||
umem str_size = 0;
|
u64 str_size = 0;
|
||||||
u8 *str = 0;
|
u8 *str = 0;
|
||||||
if (HasFlag(flags, Indent_UseTab)){
|
if (HasFlag(flags, Indent_UseTab)){
|
||||||
i64 tab_count = correct_indentation/tab_width;
|
i64 tab_count = correct_indentation/tab_width;
|
||||||
|
@ -399,7 +399,7 @@ CUSTOM_DOC("Inserts text and auto-indents the line on which the cursor sits if a
|
||||||
String_Const_u8 insert = to_writable(&in);
|
String_Const_u8 insert = to_writable(&in);
|
||||||
if (insert.str != 0 && insert.size > 0){
|
if (insert.str != 0 && insert.size > 0){
|
||||||
b32 do_auto_indent = false;
|
b32 do_auto_indent = false;
|
||||||
for (umem i = 0; !do_auto_indent && i < insert.size; i += 1){
|
for (u64 i = 0; !do_auto_indent && i < insert.size; i += 1){
|
||||||
switch (insert.str[i]){
|
switch (insert.str[i]){
|
||||||
case ';': case ':':
|
case ';': case ':':
|
||||||
case '{': case '}':
|
case '{': case '}':
|
||||||
|
|
|
@ -588,8 +588,8 @@ CUSTOM_DOC("Removes trailing whitespace from all lines in the current buffer.")
|
||||||
|
|
||||||
String_Const_u8 text = push_whole_buffer(app, scratch, buffer);
|
String_Const_u8 text = push_whole_buffer(app, scratch, buffer);
|
||||||
|
|
||||||
umem whitespace_start = 0;
|
u64 whitespace_start = 0;
|
||||||
for (umem i = 0; i < text.size; i += 1){
|
for (u64 i = 0; i < text.size; i += 1){
|
||||||
u8 v = string_get_character(text, i);
|
u8 v = string_get_character(text, i);
|
||||||
if (v == '\n' || i + 1 == text.size){
|
if (v == '\n' || i + 1 == text.size){
|
||||||
if (whitespace_start < i){
|
if (whitespace_start < i){
|
||||||
|
@ -752,7 +752,7 @@ CUSTOM_DOC("Queries the user for a number, and jumps the cursor to the correspon
|
||||||
u8 string_space[256];
|
u8 string_space[256];
|
||||||
Query_Bar bar = {};
|
Query_Bar bar = {};
|
||||||
bar.prompt = string_u8_litexpr("Goto Line: ");
|
bar.prompt = string_u8_litexpr("Goto Line: ");
|
||||||
bar.string = SCu8(string_space, (umem)0);
|
bar.string = SCu8(string_space, (u64)0);
|
||||||
bar.string_capacity = sizeof(string_space);
|
bar.string_capacity = sizeof(string_space);
|
||||||
if (query_user_number(app, &bar)){
|
if (query_user_number(app, &bar)){
|
||||||
i32 line_number = (i32)string_to_integer(bar.string, 10);
|
i32 line_number = (i32)string_to_integer(bar.string, 10);
|
||||||
|
@ -797,7 +797,7 @@ isearch(Application_Links *app, Scan_Direction start_scan, i64 first_pos,
|
||||||
String_Const_u8 isearch_str = string_u8_litexpr("I-Search: ");
|
String_Const_u8 isearch_str = string_u8_litexpr("I-Search: ");
|
||||||
String_Const_u8 rsearch_str = string_u8_litexpr("Reverse-I-Search: ");
|
String_Const_u8 rsearch_str = string_u8_litexpr("Reverse-I-Search: ");
|
||||||
|
|
||||||
umem match_size = bar.string.size;
|
u64 match_size = bar.string.size;
|
||||||
|
|
||||||
User_Input in = {};
|
User_Input in = {};
|
||||||
for (;;){
|
for (;;){
|
||||||
|
@ -830,7 +830,7 @@ isearch(Application_Links *app, Scan_Direction start_scan, i64 first_pos,
|
||||||
block_copy(bar.string.str, previous_isearch_query, bar.string.size);
|
block_copy(bar.string.str, previous_isearch_query, bar.string.size);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
umem size = bar.string.size;
|
u64 size = bar.string.size;
|
||||||
size = clamp_top(size, sizeof(previous_isearch_query) - 1);
|
size = clamp_top(size, sizeof(previous_isearch_query) - 1);
|
||||||
block_copy(previous_isearch_query, bar.string.str, size);
|
block_copy(previous_isearch_query, bar.string.str, size);
|
||||||
previous_isearch_query[size] = 0;
|
previous_isearch_query[size] = 0;
|
||||||
|
@ -845,7 +845,7 @@ isearch(Application_Links *app, Scan_Direction start_scan, i64 first_pos,
|
||||||
}
|
}
|
||||||
else if (match_key_code(&in, KeyCode_Backspace)){
|
else if (match_key_code(&in, KeyCode_Backspace)){
|
||||||
if (is_unmodified_key(&in.event)){
|
if (is_unmodified_key(&in.event)){
|
||||||
umem old_bar_string_size = bar.string.size;
|
u64 old_bar_string_size = bar.string.size;
|
||||||
bar.string = backspace_utf8(bar.string);
|
bar.string = backspace_utf8(bar.string);
|
||||||
string_change = (bar.string.size < old_bar_string_size);
|
string_change = (bar.string.size < old_bar_string_size);
|
||||||
}
|
}
|
||||||
|
@ -940,7 +940,7 @@ isearch(Application_Links *app, Scan_Direction start_scan, i64 first_pos,
|
||||||
view_disable_highlight_range(app, view);
|
view_disable_highlight_range(app, view);
|
||||||
|
|
||||||
if (in.abort){
|
if (in.abort){
|
||||||
umem size = bar.string.size;
|
u64 size = bar.string.size;
|
||||||
size = clamp_top(size, sizeof(previous_isearch_query) - 1);
|
size = clamp_top(size, sizeof(previous_isearch_query) - 1);
|
||||||
block_copy(previous_isearch_query, bar.string.str, size);
|
block_copy(previous_isearch_query, bar.string.str, size);
|
||||||
previous_isearch_query[size] = 0;
|
previous_isearch_query[size] = 0;
|
||||||
|
@ -1008,13 +1008,13 @@ query_user_replace_pair(Application_Links *app, Arena *arena){
|
||||||
Query_Bar *replace = push_array(arena, Query_Bar, 1);
|
Query_Bar *replace = push_array(arena, Query_Bar, 1);
|
||||||
u8 *replace_space = push_array(arena, u8, KB(1));
|
u8 *replace_space = push_array(arena, u8, KB(1));
|
||||||
replace->prompt = string_u8_litexpr("Replace: ");
|
replace->prompt = string_u8_litexpr("Replace: ");
|
||||||
replace->string = SCu8(replace_space, (umem)0);
|
replace->string = SCu8(replace_space, (u64)0);
|
||||||
replace->string_capacity = KB(1);
|
replace->string_capacity = KB(1);
|
||||||
|
|
||||||
Query_Bar *with = push_array(arena, Query_Bar, 1);
|
Query_Bar *with = push_array(arena, Query_Bar, 1);
|
||||||
u8 *with_space = push_array(arena, u8, KB(1));
|
u8 *with_space = push_array(arena, u8, KB(1));
|
||||||
with->prompt = string_u8_litexpr("With: ");
|
with->prompt = string_u8_litexpr("With: ");
|
||||||
with->string = SCu8(with_space, (umem)0);
|
with->string = SCu8(with_space, (u64)0);
|
||||||
with->string_capacity = KB(1);
|
with->string_capacity = KB(1);
|
||||||
|
|
||||||
String_Pair result = {};
|
String_Pair result = {};
|
||||||
|
@ -1127,7 +1127,7 @@ query_replace_parameter(Application_Links *app, String_Const_u8 replace_str, i64
|
||||||
Query_Bar with = {};
|
Query_Bar with = {};
|
||||||
u8 with_space[1024];
|
u8 with_space[1024];
|
||||||
with.prompt = string_u8_litexpr("With: ");
|
with.prompt = string_u8_litexpr("With: ");
|
||||||
with.string = SCu8(with_space, (umem)0);
|
with.string = SCu8(with_space, (u64)0);
|
||||||
with.string_capacity = sizeof(with_space);
|
with.string_capacity = sizeof(with_space);
|
||||||
|
|
||||||
if (query_user_string(app, &with)){
|
if (query_user_string(app, &with)){
|
||||||
|
@ -1156,7 +1156,7 @@ CUSTOM_DOC("Queries the user for two strings, and incrementally replaces every o
|
||||||
Query_Bar replace = {};
|
Query_Bar replace = {};
|
||||||
u8 replace_space[1024];
|
u8 replace_space[1024];
|
||||||
replace.prompt = string_u8_litexpr("Replace: ");
|
replace.prompt = string_u8_litexpr("Replace: ");
|
||||||
replace.string = SCu8(replace_space, (umem)0);
|
replace.string = SCu8(replace_space, (u64)0);
|
||||||
replace.string_capacity = sizeof(replace_space);
|
replace.string_capacity = sizeof(replace_space);
|
||||||
if (query_user_string(app, &replace)){
|
if (query_user_string(app, &replace)){
|
||||||
if (replace.string.size > 0){
|
if (replace.string.size > 0){
|
||||||
|
@ -1276,7 +1276,7 @@ CUSTOM_DOC("Queries the user for a file name and saves the contents of the curre
|
||||||
u8 name_space[4096];
|
u8 name_space[4096];
|
||||||
Query_Bar bar = {};
|
Query_Bar bar = {};
|
||||||
bar.prompt = push_u8_stringf(scratch, "Save '%.*s' to: ", string_expand(buffer_name));
|
bar.prompt = push_u8_stringf(scratch, "Save '%.*s' to: ", string_expand(buffer_name));
|
||||||
bar.string = SCu8(name_space, (umem)0);
|
bar.string = SCu8(name_space, (u64)0);
|
||||||
bar.string_capacity = sizeof(name_space);
|
bar.string_capacity = sizeof(name_space);
|
||||||
if (query_user_string(app, &bar)){
|
if (query_user_string(app, &bar)){
|
||||||
if (bar.string.size != 0){
|
if (bar.string.size != 0){
|
||||||
|
@ -1311,7 +1311,7 @@ CUSTOM_DOC("Queries the user for a new name and renames the file of the current
|
||||||
u8 name_space[4096];
|
u8 name_space[4096];
|
||||||
Query_Bar bar = {};
|
Query_Bar bar = {};
|
||||||
bar.prompt = push_u8_stringf(scratch, "Rename '%.*s' to: ", string_expand(front));
|
bar.prompt = push_u8_stringf(scratch, "Rename '%.*s' to: ", string_expand(front));
|
||||||
bar.string = SCu8(name_space, (umem)0);
|
bar.string = SCu8(name_space, (u64)0);
|
||||||
bar.string_capacity = sizeof(name_space);
|
bar.string_capacity = sizeof(name_space);
|
||||||
if (query_user_string(app, &bar)){
|
if (query_user_string(app, &bar)){
|
||||||
if (bar.string.size != 0){
|
if (bar.string.size != 0){
|
||||||
|
@ -1345,7 +1345,7 @@ CUSTOM_DOC("Queries the user for a name and creates a new directory with the giv
|
||||||
u8 name_space[4096];
|
u8 name_space[4096];
|
||||||
Query_Bar bar = {};
|
Query_Bar bar = {};
|
||||||
bar.prompt = push_u8_stringf(scratch, "Make directory at '%.*s': ", string_expand(hot));
|
bar.prompt = push_u8_stringf(scratch, "Make directory at '%.*s': ", string_expand(hot));
|
||||||
bar.string = SCu8(name_space, (umem)0);
|
bar.string = SCu8(name_space, (u64)0);
|
||||||
bar.string_capacity = sizeof(name_space);
|
bar.string_capacity = sizeof(name_space);
|
||||||
|
|
||||||
if (!query_user_string(app, &bar)) return;
|
if (!query_user_string(app, &bar)) return;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -104,6 +104,9 @@
|
||||||
|
|
||||||
#if !defined(SHIP_MODE)
|
#if !defined(SHIP_MODE)
|
||||||
#define SHIP_MODE 0
|
#define SHIP_MODE 0
|
||||||
|
#else
|
||||||
|
#undef SHIP_MODE
|
||||||
|
#define SHIP_MODE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
@ -154,14 +157,6 @@ typedef i8 b8;
|
||||||
typedef i32 b32;
|
typedef i32 b32;
|
||||||
typedef i64 b64;
|
typedef i64 b64;
|
||||||
|
|
||||||
#if ARCH_32BIT
|
|
||||||
typedef u32 umem;
|
|
||||||
typedef i32 imem;
|
|
||||||
#else
|
|
||||||
typedef u64 umem;
|
|
||||||
typedef i64 imem;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef float f32;
|
typedef float f32;
|
||||||
typedef double f64;
|
typedef double f64;
|
||||||
|
|
||||||
|
@ -722,12 +717,6 @@ union Range_f32{
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef Range_i32 Interval_i32;
|
|
||||||
typedef Range_i64 Interval_i64;
|
|
||||||
typedef Range_u64 Interval_u64;
|
|
||||||
typedef Range_f32 Interval_f32;
|
|
||||||
typedef Range_i32 Range;
|
|
||||||
|
|
||||||
struct Range_i32_Array{
|
struct Range_i32_Array{
|
||||||
Range_i32 *ranges;
|
Range_i32 *ranges;
|
||||||
i32 count;
|
i32 count;
|
||||||
|
@ -744,7 +733,6 @@ struct Range_f32_Array{
|
||||||
Range_f32 *ranges;
|
Range_f32 *ranges;
|
||||||
i32 count;
|
i32 count;
|
||||||
};
|
};
|
||||||
typedef Range_i32_Array Range_Array;
|
|
||||||
|
|
||||||
union Rect_i32{
|
union Rect_i32{
|
||||||
struct{
|
struct{
|
||||||
|
@ -974,40 +962,40 @@ struct String_char{
|
||||||
String_Const_char string;
|
String_Const_char string;
|
||||||
struct{
|
struct{
|
||||||
char *str;
|
char *str;
|
||||||
umem size;
|
u64 size;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
umem cap;
|
u64 cap;
|
||||||
};
|
};
|
||||||
struct String_u8{
|
struct String_u8{
|
||||||
union{
|
union{
|
||||||
String_Const_u8 string;
|
String_Const_u8 string;
|
||||||
struct{
|
struct{
|
||||||
u8 *str;
|
u8 *str;
|
||||||
umem size;
|
u64 size;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
umem cap;
|
u64 cap;
|
||||||
};
|
};
|
||||||
struct String_u16{
|
struct String_u16{
|
||||||
union{
|
union{
|
||||||
String_Const_u16 string;
|
String_Const_u16 string;
|
||||||
struct{
|
struct{
|
||||||
u16 *str;
|
u16 *str;
|
||||||
umem size;
|
u64 size;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
umem cap;
|
u64 cap;
|
||||||
};
|
};
|
||||||
struct String_u32{
|
struct String_u32{
|
||||||
union{
|
union{
|
||||||
String_Const_u32 string;
|
String_Const_u32 string;
|
||||||
struct{
|
struct{
|
||||||
u32 *str;
|
u32 *str;
|
||||||
umem size;
|
u64 size;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
umem cap;
|
u64 cap;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct String_Any{
|
struct String_Any{
|
||||||
|
@ -1015,8 +1003,8 @@ struct String_Any{
|
||||||
union{
|
union{
|
||||||
struct{
|
struct{
|
||||||
void *str;
|
void *str;
|
||||||
umem size;
|
u64 size;
|
||||||
umem cap;
|
u64 cap;
|
||||||
};
|
};
|
||||||
String_char s_char;
|
String_char s_char;
|
||||||
String_u8 s_u8;
|
String_u8 s_u8;
|
||||||
|
@ -1045,7 +1033,7 @@ global u32 nonchar_max = 0xFDEF;
|
||||||
|
|
||||||
struct Data{
|
struct Data{
|
||||||
u8 *data;
|
u8 *data;
|
||||||
umem size;
|
u64 size;
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
@ -1087,11 +1075,11 @@ enum{
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
|
||||||
typedef void *Base_Allocator_Reserve_Signature(void *user_data, umem size, umem *size_out, String_Const_u8 location);
|
typedef void *Base_Allocator_Reserve_Signature(void *user_data, u64 size, u64 *size_out, String_Const_u8 location);
|
||||||
typedef void Base_Allocator_Commit_Signature(void *user_data, void *ptr, umem size);
|
typedef void Base_Allocator_Commit_Signature(void *user_data, void *ptr, u64 size);
|
||||||
typedef void Base_Allocator_Uncommit_Signature(void *user_data, void *ptr, umem size);
|
typedef void Base_Allocator_Uncommit_Signature(void *user_data, void *ptr, u64 size);
|
||||||
typedef void Base_Allocator_Free_Signature(void *user_data, void *ptr);
|
typedef void Base_Allocator_Free_Signature(void *user_data, void *ptr);
|
||||||
typedef void Base_Allocator_Set_Access_Signature(void *user_data, void *ptr, umem size, Access_Flag flags);
|
typedef void Base_Allocator_Set_Access_Signature(void *user_data, void *ptr, u64 size, Access_Flag flags);
|
||||||
struct Base_Allocator{
|
struct Base_Allocator{
|
||||||
Base_Allocator_Reserve_Signature *reserve;
|
Base_Allocator_Reserve_Signature *reserve;
|
||||||
Base_Allocator_Commit_Signature *commit;
|
Base_Allocator_Commit_Signature *commit;
|
||||||
|
@ -1103,12 +1091,12 @@ struct Base_Allocator{
|
||||||
|
|
||||||
struct Cursor{
|
struct Cursor{
|
||||||
u8 *base;
|
u8 *base;
|
||||||
umem pos;
|
u64 pos;
|
||||||
umem cap;
|
u64 cap;
|
||||||
};
|
};
|
||||||
struct Temp_Memory_Cursor{
|
struct Temp_Memory_Cursor{
|
||||||
Cursor *cursor;
|
Cursor *cursor;
|
||||||
umem pos;
|
u64 pos;
|
||||||
};
|
};
|
||||||
struct Cursor_Node{
|
struct Cursor_Node{
|
||||||
union{
|
union{
|
||||||
|
@ -1120,13 +1108,13 @@ struct Cursor_Node{
|
||||||
struct Arena{
|
struct Arena{
|
||||||
Base_Allocator *base_allocator;
|
Base_Allocator *base_allocator;
|
||||||
Cursor_Node *cursor_node;
|
Cursor_Node *cursor_node;
|
||||||
umem chunk_size;
|
u64 chunk_size;
|
||||||
umem alignment;
|
u64 alignment;
|
||||||
};
|
};
|
||||||
struct Temp_Memory_Arena{
|
struct Temp_Memory_Arena{
|
||||||
Arena *arena;
|
Arena *arena;
|
||||||
Cursor_Node *cursor_node;
|
Cursor_Node *cursor_node;
|
||||||
umem pos;
|
u64 pos;
|
||||||
};
|
};
|
||||||
typedef i32 Linear_Allocator_Kind;
|
typedef i32 Linear_Allocator_Kind;
|
||||||
enum{
|
enum{
|
||||||
|
@ -1243,7 +1231,7 @@ struct Heap_Node{
|
||||||
struct{
|
struct{
|
||||||
Heap_Basic_Node order;
|
Heap_Basic_Node order;
|
||||||
Heap_Basic_Node alloc;
|
Heap_Basic_Node alloc;
|
||||||
umem size;
|
u64 size;
|
||||||
};
|
};
|
||||||
u8 force_size__[64];
|
u8 force_size__[64];
|
||||||
};
|
};
|
||||||
|
@ -1254,8 +1242,8 @@ struct Heap{
|
||||||
Arena *arena;
|
Arena *arena;
|
||||||
Heap_Basic_Node in_order;
|
Heap_Basic_Node in_order;
|
||||||
Heap_Basic_Node free_nodes;
|
Heap_Basic_Node free_nodes;
|
||||||
umem used_space;
|
u64 used_space;
|
||||||
umem total_space;
|
u64 total_space;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,19 +26,19 @@ CUSTOM_DOC("Queries for an output buffer name and system command, runs the syste
|
||||||
|
|
||||||
Query_Bar bar_out = {};
|
Query_Bar bar_out = {};
|
||||||
bar_out.prompt = string_u8_litexpr("Output Buffer: ");
|
bar_out.prompt = string_u8_litexpr("Output Buffer: ");
|
||||||
bar_out.string = SCu8(out_buffer_space, (umem)0);
|
bar_out.string = SCu8(out_buffer_space, (u64)0);
|
||||||
bar_out.string_capacity = sizeof(out_buffer_space);
|
bar_out.string_capacity = sizeof(out_buffer_space);
|
||||||
if (!query_user_string(app, &bar_out)) return;
|
if (!query_user_string(app, &bar_out)) return;
|
||||||
|
|
||||||
Query_Bar bar_cmd = {};
|
Query_Bar bar_cmd = {};
|
||||||
bar_cmd.prompt = string_u8_litexpr("Command: ");
|
bar_cmd.prompt = string_u8_litexpr("Command: ");
|
||||||
bar_cmd.string = SCu8(command_space, (umem)0);
|
bar_cmd.string = SCu8(command_space, (u64)0);
|
||||||
bar_cmd.string_capacity = sizeof(command_space);
|
bar_cmd.string_capacity = sizeof(command_space);
|
||||||
if (!query_user_string(app, &bar_cmd)) return;
|
if (!query_user_string(app, &bar_cmd)) return;
|
||||||
|
|
||||||
String_Const_u8 hot = push_hot_directory(app, scratch);
|
String_Const_u8 hot = push_hot_directory(app, scratch);
|
||||||
{
|
{
|
||||||
umem size = clamp_top(hot.size, sizeof(hot_directory_space));
|
u64 size = clamp_top(hot.size, sizeof(hot_directory_space));
|
||||||
block_copy(hot_directory_space, hot.str, size);
|
block_copy(hot_directory_space, hot.str, size);
|
||||||
hot_directory_space[hot.size] = 0;
|
hot_directory_space[hot.size] = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -278,7 +278,7 @@ CUSTOM_COMMAND_SIG(multi_paste_interactive_quick){
|
||||||
Query_Bar_Group group(app);
|
Query_Bar_Group group(app);
|
||||||
Query_Bar bar = {};
|
Query_Bar bar = {};
|
||||||
bar.prompt = string_u8_litexpr("How Many Slots To Paste: ");
|
bar.prompt = string_u8_litexpr("How Many Slots To Paste: ");
|
||||||
bar.string = SCu8(string_space, (umem)0);
|
bar.string = SCu8(string_space, (u64)0);
|
||||||
bar.string_capacity = sizeof(string_space);
|
bar.string_capacity = sizeof(string_space);
|
||||||
query_user_number(app, &bar);
|
query_user_number(app, &bar);
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,7 @@ code_index_get_nest(Code_Index_File *file, i64 pos){
|
||||||
}
|
}
|
||||||
|
|
||||||
function void
|
function void
|
||||||
index_shift(i64 *ptr, Range_i64 old_range, umem new_size){
|
index_shift(i64 *ptr, Range_i64 old_range, u64 new_size){
|
||||||
i64 i = *ptr;
|
i64 i = *ptr;
|
||||||
if (old_range.min <= i && i < old_range.max){
|
if (old_range.min <= i && i < old_range.max){
|
||||||
*ptr = old_range.first;
|
*ptr = old_range.first;
|
||||||
|
@ -169,7 +169,7 @@ index_shift(i64 *ptr, Range_i64 old_range, umem new_size){
|
||||||
|
|
||||||
function void
|
function void
|
||||||
code_index_shift(Code_Index_Nest_Ptr_Array *array,
|
code_index_shift(Code_Index_Nest_Ptr_Array *array,
|
||||||
Range_i64 old_range, umem new_size){
|
Range_i64 old_range, u64 new_size){
|
||||||
i32 count = array->count;
|
i32 count = array->count;
|
||||||
Code_Index_Nest **nest_ptr = array->ptrs;
|
Code_Index_Nest **nest_ptr = array->ptrs;
|
||||||
for (i32 i = 0; i < count; i += 1, nest_ptr += 1){
|
for (i32 i = 0; i < count; i += 1, nest_ptr += 1){
|
||||||
|
@ -185,7 +185,7 @@ code_index_shift(Code_Index_Nest_Ptr_Array *array,
|
||||||
}
|
}
|
||||||
|
|
||||||
function void
|
function void
|
||||||
code_index_shift(Code_Index_File *file, Range_i64 old_range, umem new_size){
|
code_index_shift(Code_Index_File *file, Range_i64 old_range, u64 new_size){
|
||||||
code_index_shift(&file->nest_array, old_range, new_size);
|
code_index_shift(&file->nest_array, old_range, new_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -841,7 +841,7 @@ layout_index_x_shift(Application_Links *app, Layout_Reflex *reflex, Code_Index_F
|
||||||
function void
|
function void
|
||||||
layout_index__emit_chunk(LefRig_TopBot_Layout_Vars *pos_vars, Face_ID face, Arena *arena, u8 *text_str, i64 range_first, u8 *ptr, u8 *end, Layout_Item_List *list){
|
layout_index__emit_chunk(LefRig_TopBot_Layout_Vars *pos_vars, Face_ID face, Arena *arena, u8 *text_str, i64 range_first, u8 *ptr, u8 *end, Layout_Item_List *list){
|
||||||
for (;ptr < end;){
|
for (;ptr < end;){
|
||||||
Character_Consume_Result consume = utf8_consume(ptr, (umem)(end - ptr));
|
Character_Consume_Result consume = utf8_consume(ptr, (u64)(end - ptr));
|
||||||
if (consume.codepoint != '\r'){
|
if (consume.codepoint != '\r'){
|
||||||
i64 index = layout_index_from_ptr(ptr, text_str, range_first);
|
i64 index = layout_index_from_ptr(ptr, text_str, range_first);
|
||||||
if (consume.codepoint != max_u32){
|
if (consume.codepoint != max_u32){
|
||||||
|
@ -961,7 +961,7 @@ layout_index__inner(Application_Links *app, Arena *arena, Buffer_ID buffer, Rang
|
||||||
f32 word_advance = 0.f;
|
f32 word_advance = 0.f;
|
||||||
ptr = word.str;
|
ptr = word.str;
|
||||||
for (;ptr < word_end;){
|
for (;ptr < word_end;){
|
||||||
Character_Consume_Result consume = utf8_consume(ptr, (umem)(word_end - ptr));
|
Character_Consume_Result consume = utf8_consume(ptr, (u64)(word_end - ptr));
|
||||||
if (consume.codepoint != max_u32){
|
if (consume.codepoint != max_u32){
|
||||||
word_advance += lr_tb_advance(&pos_vars, face, consume.codepoint);
|
word_advance += lr_tb_advance(&pos_vars, face, consume.codepoint);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ parse_extension_line_to_extension_list(Application_Links *app,
|
||||||
Arena *arena, String_Const_u8 str){
|
Arena *arena, String_Const_u8 str){
|
||||||
ProfileScope(app, "parse extension line to extension list");
|
ProfileScope(app, "parse extension line to extension list");
|
||||||
i32 count = 0;
|
i32 count = 0;
|
||||||
for (umem i = 0; i < str.size; i += 1){
|
for (u64 i = 0; i < str.size; i += 1){
|
||||||
if (str.str[i] == '.'){
|
if (str.str[i] == '.'){
|
||||||
count += 1;
|
count += 1;
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ parse_extension_line_to_extension_list(Application_Links *app,
|
||||||
push_align(arena, 1);
|
push_align(arena, 1);
|
||||||
str = string_skip(str, string_find_first(str, '.') + 1);
|
str = string_skip(str, string_find_first(str, '.') + 1);
|
||||||
for (i32 i = 0; i < count; i += 1){
|
for (i32 i = 0; i < count; i += 1){
|
||||||
umem next_period = string_find_first(str, '.');
|
u64 next_period = string_find_first(str, '.');
|
||||||
String_Const_u8 extension = string_prefix(str, next_period);
|
String_Const_u8 extension = string_prefix(str, next_period);
|
||||||
str = string_skip(str, next_period + 1);
|
str = string_skip(str, next_period + 1);
|
||||||
array.strings[i] = push_string_copy(arena, extension);
|
array.strings[i] = push_string_copy(arena, extension);
|
||||||
|
@ -748,11 +748,11 @@ config_string_var(Config *config, char *var_name, i32 subscript, String_Const_u8
|
||||||
}
|
}
|
||||||
|
|
||||||
function b32
|
function b32
|
||||||
config_placed_string_var(Config *config, String_Const_u8 var_name, i32 subscript, String_Const_u8* var_out, u8 *space, umem space_size){
|
config_placed_string_var(Config *config, String_Const_u8 var_name, i32 subscript, String_Const_u8* var_out, u8 *space, u64 space_size){
|
||||||
Config_Get_Result result = config_var(config, var_name, subscript);
|
Config_Get_Result result = config_var(config, var_name, subscript);
|
||||||
b32 success = (result.success && result.type == ConfigRValueType_String);
|
b32 success = (result.success && result.type == ConfigRValueType_String);
|
||||||
if (success){
|
if (success){
|
||||||
umem size = result.string.size;
|
u64 size = result.string.size;
|
||||||
size = clamp_top(size, space_size);
|
size = clamp_top(size, space_size);
|
||||||
block_copy(space, result.string.str, size);
|
block_copy(space, result.string.str, size);
|
||||||
*var_out = SCu8(space, size);
|
*var_out = SCu8(space, size);
|
||||||
|
@ -761,7 +761,7 @@ config_placed_string_var(Config *config, String_Const_u8 var_name, i32 subscript
|
||||||
}
|
}
|
||||||
|
|
||||||
function b32
|
function b32
|
||||||
config_placed_string_var(Config *config, char *var_name, i32 subscript, String_Const_u8* var_out, u8 *space, umem space_size){
|
config_placed_string_var(Config *config, char *var_name, i32 subscript, String_Const_u8* var_out, u8 *space, u64 space_size){
|
||||||
return(config_placed_string_var(config, SCu8(var_name), subscript, var_out, space, space_size));
|
return(config_placed_string_var(config, SCu8(var_name), subscript, var_out, space, space_size));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -879,11 +879,11 @@ config_compound_string_member(Config *config, Config_Compound *compound,
|
||||||
|
|
||||||
function b32
|
function b32
|
||||||
config_compound_placed_string_member(Config *config, Config_Compound *compound,
|
config_compound_placed_string_member(Config *config, Config_Compound *compound,
|
||||||
String_Const_u8 var_name, i32 index, String_Const_u8* var_out, u8 *space, umem space_size){
|
String_Const_u8 var_name, i32 index, String_Const_u8* var_out, u8 *space, u64 space_size){
|
||||||
Config_Get_Result result = config_compound_member(config, compound, var_name, index);
|
Config_Get_Result result = config_compound_member(config, compound, var_name, index);
|
||||||
b32 success = (result.success && result.type == ConfigRValueType_String);
|
b32 success = (result.success && result.type == ConfigRValueType_String);
|
||||||
if (success){
|
if (success){
|
||||||
umem size = result.string.size;
|
u64 size = result.string.size;
|
||||||
size = clamp_top(size, space_size);
|
size = clamp_top(size, space_size);
|
||||||
block_copy(space, result.string.str, size);
|
block_copy(space, result.string.str, size);
|
||||||
*var_out = SCu8(space, size);
|
*var_out = SCu8(space, size);
|
||||||
|
@ -893,7 +893,7 @@ config_compound_placed_string_member(Config *config, Config_Compound *compound,
|
||||||
|
|
||||||
function b32
|
function b32
|
||||||
config_compound_placed_string_member(Config *config, Config_Compound *compound,
|
config_compound_placed_string_member(Config *config, Config_Compound *compound,
|
||||||
char *var_name, i32 index, String_Const_u8* var_out, u8 *space, umem space_size){
|
char *var_name, i32 index, String_Const_u8* var_out, u8 *space, u64 space_size){
|
||||||
return(config_compound_placed_string_member(config, compound, SCu8(var_name), index, var_out, space, space_size));
|
return(config_compound_placed_string_member(config, compound, SCu8(var_name), index, var_out, space, space_size));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -978,11 +978,11 @@ typed_string_array_iteration_step(Config *config, Config_Compound *compound, i32
|
||||||
}
|
}
|
||||||
|
|
||||||
function Iteration_Step_Result
|
function Iteration_Step_Result
|
||||||
typed_placed_string_array_iteration_step(Config *config, Config_Compound *compound, i32 index, String_Const_u8* var_out, u8 *space, umem space_size){
|
typed_placed_string_array_iteration_step(Config *config, Config_Compound *compound, i32 index, String_Const_u8* var_out, u8 *space, u64 space_size){
|
||||||
Config_Iteration_Step_Result result = typed_array_iteration_step(config, compound, ConfigRValueType_String, index);
|
Config_Iteration_Step_Result result = typed_array_iteration_step(config, compound, ConfigRValueType_String, index);
|
||||||
b32 success = (result.step == Iteration_Good);
|
b32 success = (result.step == Iteration_Good);
|
||||||
if (success){
|
if (success){
|
||||||
umem size = result.get.string.size;
|
u64 size = result.get.string.size;
|
||||||
size = clamp_top(size, space_size);
|
size = clamp_top(size, space_size);
|
||||||
block_copy(space, result.get.string.str, size);
|
block_copy(space, result.get.string.str, size);
|
||||||
*var_out = SCu8(space, size);
|
*var_out = SCu8(space, size);
|
||||||
|
@ -1192,11 +1192,11 @@ config_from_text(Application_Links *app, Arena *arena, String_Const_u8 file_name
|
||||||
|
|
||||||
function void
|
function void
|
||||||
config_init_default(Config_Data *config){
|
config_init_default(Config_Data *config){
|
||||||
config->user_name = SCu8(config->user_name_space, (umem)0);
|
config->user_name = SCu8(config->user_name_space, (u64)0);
|
||||||
|
|
||||||
block_zero_struct(&config->code_exts);
|
block_zero_struct(&config->code_exts);
|
||||||
|
|
||||||
config->mode = SCu8(config->mode_space, (umem)0);
|
config->mode = SCu8(config->mode_space, (u64)0);
|
||||||
|
|
||||||
config->use_scroll_bars = false;
|
config->use_scroll_bars = false;
|
||||||
config->use_file_bars = true;
|
config->use_file_bars = true;
|
||||||
|
@ -1226,19 +1226,19 @@ config_init_default(Config_Data *config){
|
||||||
block_copy(config->default_theme_name.str, "4coder", config->default_theme_name.size);
|
block_copy(config->default_theme_name.str, "4coder", config->default_theme_name.size);
|
||||||
config->highlight_line_at_cursor = true;
|
config->highlight_line_at_cursor = true;
|
||||||
|
|
||||||
config->default_font_name = SCu8(config->default_font_name_space, (umem)0);
|
config->default_font_name = SCu8(config->default_font_name_space, (u64)0);
|
||||||
config->default_font_size = 16;
|
config->default_font_size = 16;
|
||||||
config->default_font_hinting = false;
|
config->default_font_hinting = false;
|
||||||
|
|
||||||
config->default_compiler_bat = SCu8(config->default_compiler_bat_space, 2);
|
config->default_compiler_bat = SCu8(config->default_compiler_bat_space, 2);
|
||||||
block_copy(config->default_compiler_bat.str, "cl", 2);
|
block_copy(config->default_compiler_bat.str, "cl", 2);
|
||||||
|
|
||||||
config->default_flags_bat = SCu8(config->default_flags_bat_space, (umem)0);
|
config->default_flags_bat = SCu8(config->default_flags_bat_space, (u64)0);
|
||||||
|
|
||||||
config->default_compiler_sh = SCu8(config->default_compiler_sh_space, 3);
|
config->default_compiler_sh = SCu8(config->default_compiler_sh_space, 3);
|
||||||
block_copy(config->default_compiler_sh.str, "g++", 3);
|
block_copy(config->default_compiler_sh.str, "g++", 3);
|
||||||
|
|
||||||
config->default_flags_sh = SCu8(config->default_flags_sh_space, (umem)0);
|
config->default_flags_sh = SCu8(config->default_flags_sh_space, (u64)0);
|
||||||
|
|
||||||
config->lalt_lctrl_is_altgr = false;
|
config->lalt_lctrl_is_altgr = false;
|
||||||
}
|
}
|
||||||
|
@ -1484,7 +1484,7 @@ load_config_and_apply(Application_Links *app, Arena *out_arena, Config_Data *con
|
||||||
print_message(app, string_u8_litexpr("Using default config:\n"));
|
print_message(app, string_u8_litexpr("Using default config:\n"));
|
||||||
Face_Description description = get_face_description(app, 0);
|
Face_Description description = get_face_description(app, 0);
|
||||||
if (description.font.file_name.str != 0){
|
if (description.font.file_name.str != 0){
|
||||||
umem size = Min(description.font.file_name.size, sizeof(config->default_font_name_space));
|
u64 size = Min(description.font.file_name.size, sizeof(config->default_font_name_space));
|
||||||
block_copy(config->default_font_name_space, description.font.file_name.str, size);
|
block_copy(config->default_font_name_space, description.font.file_name.str, size);
|
||||||
config->default_font_name.size = size;
|
config->default_font_name.size = size;
|
||||||
}
|
}
|
||||||
|
|
|
@ -482,7 +482,7 @@ BUFFER_NAME_RESOLVER_SIG(default_buffer_name_resolution){
|
||||||
i32 conflict_index = unresolved[i];
|
i32 conflict_index = unresolved[i];
|
||||||
Buffer_Name_Conflict_Entry *conflict = &conflicts[conflict_index];
|
Buffer_Name_Conflict_Entry *conflict = &conflicts[conflict_index];
|
||||||
|
|
||||||
umem size = conflict->base_name.size;
|
u64 size = conflict->base_name.size;
|
||||||
size = clamp_top(size, conflict->unique_name_capacity);
|
size = clamp_top(size, conflict->unique_name_capacity);
|
||||||
conflict->unique_name_len_in_out = size;
|
conflict->unique_name_len_in_out = size;
|
||||||
block_copy(conflict->unique_name_in_out, conflict->base_name.str, size);
|
block_copy(conflict->unique_name_in_out, conflict->base_name.str, size);
|
||||||
|
@ -1031,9 +1031,9 @@ BUFFER_EDIT_RANGE_SIG(default_buffer_edit_range){
|
||||||
|
|
||||||
i64 token_index_resync = relex.first_resync_index;
|
i64 token_index_resync = relex.first_resync_index;
|
||||||
|
|
||||||
Interval_i64 head = Ii64(0, token_index_first);
|
Range_i64 head = Ii64(0, token_index_first);
|
||||||
Interval_i64 replaced = Ii64(token_index_first, token_index_resync);
|
Range_i64 replaced = Ii64(token_index_first, token_index_resync);
|
||||||
Interval_i64 tail = Ii64(token_index_resync, ptr->count);
|
Range_i64 tail = Ii64(token_index_resync, ptr->count);
|
||||||
i64 resynced_count = (token_index_resync_guess + 1) - token_index_resync;
|
i64 resynced_count = (token_index_resync_guess + 1) - token_index_resync;
|
||||||
i64 relexed_count = relex_list.total_count - resynced_count;
|
i64 relexed_count = relex_list.total_count - resynced_count;
|
||||||
i64 tail_shift = relexed_count - (token_index_resync - token_index_first);
|
i64 tail_shift = relexed_count - (token_index_resync - token_index_first);
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
|
|
||||||
// TOP
|
// TOP
|
||||||
|
|
||||||
function umem
|
function u64
|
||||||
delta_ctx_size(umem base_size){
|
delta_ctx_size(u64 base_size){
|
||||||
return(base_size + sizeof(Delta_Context_Header));
|
return(base_size + sizeof(Delta_Context_Header));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,12 +175,12 @@ DELTA_RULE_SIG(original_delta){
|
||||||
*velocity = V2f32(step_x.v, step_y.v);
|
*velocity = V2f32(step_x.v, step_y.v);
|
||||||
return(V2f32(step_x.p, step_y.p));
|
return(V2f32(step_x.p, step_y.p));
|
||||||
}
|
}
|
||||||
global_const umem original_delta_memory_size = sizeof(Vec2_f32);
|
global_const u64 original_delta_memory_size = sizeof(Vec2_f32);
|
||||||
|
|
||||||
DELTA_RULE_SIG(snap_delta){
|
DELTA_RULE_SIG(snap_delta){
|
||||||
return(pending);
|
return(pending);
|
||||||
}
|
}
|
||||||
global_const umem snap_delta_memory_size = 0;
|
global_const u64 snap_delta_memory_size = 0;
|
||||||
|
|
||||||
function f32
|
function f32
|
||||||
cubic_reinterpolate(f32 t){
|
cubic_reinterpolate(f32 t){
|
||||||
|
@ -212,7 +212,7 @@ DELTA_RULE_SIG(fixed_time_cubic_delta){
|
||||||
}
|
}
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
global_const umem fixed_time_cubic_delta_memory_size = sizeof(f32);
|
global_const u64 fixed_time_cubic_delta_memory_size = sizeof(f32);
|
||||||
|
|
||||||
// BOTTOM
|
// BOTTOM
|
||||||
|
|
||||||
|
|
|
@ -97,7 +97,7 @@ struct Doc_Content{
|
||||||
struct Doc_Content_List{
|
struct Doc_Content_List{
|
||||||
Doc_Content *first;
|
Doc_Content *first;
|
||||||
Doc_Content *last;
|
Doc_Content *last;
|
||||||
umem total_size;
|
u64 total_size;
|
||||||
i32 node_count;
|
i32 node_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -340,7 +340,7 @@ draw_line_number_margin(Application_Links *app, View_ID view_id, Buffer_ID buffe
|
||||||
Rect_f32 prev_clip = draw_set_clip(app, margin);
|
Rect_f32 prev_clip = draw_set_clip(app, margin);
|
||||||
draw_rectangle_fcolor(app, margin, 0.f, fcolor_id(defcolor_line_numbers_back));
|
draw_rectangle_fcolor(app, margin, 0.f, fcolor_id(defcolor_line_numbers_back));
|
||||||
|
|
||||||
Interval_i64 visible_range = text_layout_get_visible_range(app, text_layout_id);
|
Range_i64 visible_range = text_layout_get_visible_range(app, text_layout_id);
|
||||||
|
|
||||||
FColor line_color = fcolor_id(defcolor_line_numbers_text);
|
FColor line_color = fcolor_id(defcolor_line_numbers_text);
|
||||||
|
|
||||||
|
@ -391,13 +391,13 @@ draw_fps_hud(Application_Links *app, Frame_Info frame_info,
|
||||||
|
|
||||||
Scratch_Block scratch(app);
|
Scratch_Block scratch(app);
|
||||||
|
|
||||||
Range ranges[2];
|
Range_i32 ranges[2] = {};
|
||||||
ranges[0].first = wrapped_index;
|
ranges[0].first = wrapped_index;
|
||||||
ranges[0].one_past_last = -1;
|
ranges[0].one_past_last = -1;
|
||||||
ranges[1].first = fps_history_depth - 1;
|
ranges[1].first = fps_history_depth - 1;
|
||||||
ranges[1].one_past_last = wrapped_index;
|
ranges[1].one_past_last = wrapped_index;
|
||||||
for (i32 i = 0; i < 2; i += 1){
|
for (i32 i = 0; i < 2; i += 1){
|
||||||
Range r = ranges[i];
|
Range_i32 r = ranges[i];
|
||||||
for (i32 j = r.first; j > r.one_past_last; j -= 1, p.y += line_height){
|
for (i32 j = r.first; j > r.one_past_last; j -= 1, p.y += line_height){
|
||||||
f32 dts[2];
|
f32 dts[2];
|
||||||
dts[0] = history_literal_dt[j];
|
dts[0] = history_literal_dt[j];
|
||||||
|
@ -482,7 +482,7 @@ get_token_color_cpp(Token token){
|
||||||
|
|
||||||
function void
|
function void
|
||||||
draw_cpp_token_colors(Application_Links *app, Text_Layout_ID text_layout_id, Token_Array *array){
|
draw_cpp_token_colors(Application_Links *app, Text_Layout_ID text_layout_id, Token_Array *array){
|
||||||
Interval_i64 visible_range = text_layout_get_visible_range(app, text_layout_id);
|
Range_i64 visible_range = text_layout_get_visible_range(app, text_layout_id);
|
||||||
i64 first_index = token_index_from_pos(array, visible_range.first);
|
i64 first_index = token_index_from_pos(array, visible_range.first);
|
||||||
Token_Iterator_Array it = token_iterator_index(0, array, first_index);
|
Token_Iterator_Array it = token_iterator_index(0, array, first_index);
|
||||||
for (;;){
|
for (;;){
|
||||||
|
@ -503,7 +503,7 @@ function void
|
||||||
draw_comment_highlights(Application_Links *app, Buffer_ID buffer, Text_Layout_ID text_layout_id,
|
draw_comment_highlights(Application_Links *app, Buffer_ID buffer, Text_Layout_ID text_layout_id,
|
||||||
Token_Array *array, Comment_Highlight_Pair *pairs, i32 pair_count){
|
Token_Array *array, Comment_Highlight_Pair *pairs, i32 pair_count){
|
||||||
Scratch_Block scratch(app);
|
Scratch_Block scratch(app);
|
||||||
Interval_i64 visible_range = text_layout_get_visible_range(app, text_layout_id);
|
Range_i64 visible_range = text_layout_get_visible_range(app, text_layout_id);
|
||||||
i64 first_index = token_index_from_pos(array, visible_range.first);
|
i64 first_index = token_index_from_pos(array, visible_range.first);
|
||||||
Token_Iterator_Array it = token_iterator_index(buffer, array, first_index);
|
Token_Iterator_Array it = token_iterator_index(buffer, array, first_index);
|
||||||
for (;;){
|
for (;;){
|
||||||
|
@ -519,7 +519,7 @@ draw_comment_highlights(Application_Links *app, Buffer_ID buffer, Text_Layout_ID
|
||||||
tail = string_skip(tail, 1), index += 1){
|
tail = string_skip(tail, 1), index += 1){
|
||||||
Comment_Highlight_Pair *pair = pairs;
|
Comment_Highlight_Pair *pair = pairs;
|
||||||
for (i32 i = 0; i < pair_count; i += 1, pair += 1){
|
for (i32 i = 0; i < pair_count; i += 1, pair += 1){
|
||||||
umem needle_size = pair->needle.size;
|
u64 needle_size = pair->needle.size;
|
||||||
if (needle_size == 0){
|
if (needle_size == 0){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -335,9 +335,9 @@ stringize_keyboard_event(Arena *arena, Input_Event *event){
|
||||||
case InputEventKind_TextInsert:
|
case InputEventKind_TextInsert:
|
||||||
{
|
{
|
||||||
string_list_push(arena, &list, string_u8_litexpr("t"));
|
string_list_push(arena, &list, string_u8_litexpr("t"));
|
||||||
umem size = event->text.string.size;
|
u64 size = event->text.string.size;
|
||||||
u8 *ptr = event->text.string.str;
|
u8 *ptr = event->text.string.str;
|
||||||
for (umem i = 0; i < size; i += 1, ptr += 1){
|
for (u64 i = 0; i < size; i += 1, ptr += 1){
|
||||||
string_list_pushf(arena, &list, "%02X", (i32)(*ptr));
|
string_list_pushf(arena, &list, "%02X", (i32)(*ptr));
|
||||||
}
|
}
|
||||||
string_list_push(arena, &list, string_u8_litexpr("\n"));
|
string_list_push(arena, &list, string_u8_litexpr("\n"));
|
||||||
|
@ -369,14 +369,14 @@ stringize_keyboard_event(Arena *arena, Input_Event *event){
|
||||||
function Input_Event
|
function Input_Event
|
||||||
parse_keyboard_event(Arena *arena, String_Const_u8 text){
|
parse_keyboard_event(Arena *arena, String_Const_u8 text){
|
||||||
Input_Event result = {};
|
Input_Event result = {};
|
||||||
umem pos = 0;
|
u64 pos = 0;
|
||||||
Range_i64 range = {};
|
Range_i64 range = {};
|
||||||
|
|
||||||
if (pos < text.size && text.str[pos] == 't'){
|
if (pos < text.size && text.str[pos] == 't'){
|
||||||
pos += 1;
|
pos += 1;
|
||||||
result.kind = InputEventKind_TextInsert;
|
result.kind = InputEventKind_TextInsert;
|
||||||
|
|
||||||
umem max_size = text.size/2;
|
u64 max_size = text.size/2;
|
||||||
result.text.string.str = push_array(arena, u8, max_size);
|
result.text.string.str = push_array(arena, u8, max_size);
|
||||||
for (; pos + 1 < text.size; pos += 2){
|
for (; pos + 1 < text.size; pos += 2){
|
||||||
if (character_is_base16(text.str[pos]) &&
|
if (character_is_base16(text.str[pos]) &&
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
function String_Const_u8
|
function String_Const_u8
|
||||||
file_load_all(Arena *arena, FILE *file){
|
file_load_all(Arena *arena, FILE *file){
|
||||||
fseek(file, 0, SEEK_END);
|
fseek(file, 0, SEEK_END);
|
||||||
umem size = ftell(file);
|
u64 size = ftell(file);
|
||||||
fseek(file, 0, SEEK_SET);
|
fseek(file, 0, SEEK_SET);
|
||||||
u8 *buffer = push_array(arena, u8, size + 1);
|
u8 *buffer = push_array(arena, u8, size + 1);
|
||||||
fread(buffer, 1, size, file);
|
fread(buffer, 1, size, file);
|
||||||
|
|
|
@ -477,7 +477,7 @@ file_dump(Arena *arena, char *name){
|
||||||
fprintf(stdout, "fatal error: not enough memory in partition for file dumping");
|
fprintf(stdout, "fatal error: not enough memory in partition for file dumping");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
fread(text.str, 1, text.size, file);
|
fread(text.str, 1, (size_t)text.size, file);
|
||||||
text.str[text.size] = 0;
|
text.str[text.size] = 0;
|
||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
|
|
|
@ -546,7 +546,7 @@ fm_copy_folder(Arena *arena, char *src_dir, char *dst_dir, char *src_folder){
|
||||||
|
|
||||||
// List Helpers
|
// List Helpers
|
||||||
internal i32
|
internal i32
|
||||||
listsize(void *p, umem item_size){
|
listsize(void *p, u64 item_size){
|
||||||
u64 zero = 0;
|
u64 zero = 0;
|
||||||
u8 *ptr = (u8*)p;
|
u8 *ptr = (u8*)p;
|
||||||
for (;memcmp(ptr, &zero, (size_t)item_size) != 0; ptr += item_size);
|
for (;memcmp(ptr, &zero, (size_t)item_size) != 0; ptr += item_size);
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#define FCODER_HASH_FUNCTIONS_CPP
|
#define FCODER_HASH_FUNCTIONS_CPP
|
||||||
|
|
||||||
static u64
|
static u64
|
||||||
table_hash_u8(u8 *v, umem size){
|
table_hash_u8(u8 *v, u64 size){
|
||||||
u64 hash = 0;
|
u64 hash = 0;
|
||||||
for (u8 *p = v, *e = v + size; p < e; p += 1){
|
for (u8 *p = v, *e = v + size; p < e; p += 1){
|
||||||
u8 k = *p;
|
u8 k = *p;
|
||||||
|
@ -26,7 +26,7 @@ table_hash_u8(u8 *v, umem size){
|
||||||
return(hash);
|
return(hash);
|
||||||
}
|
}
|
||||||
static u64
|
static u64
|
||||||
table_hash_u16(u16 *v, umem size){
|
table_hash_u16(u16 *v, u64 size){
|
||||||
u64 hash = 0;
|
u64 hash = 0;
|
||||||
for (u16 *p = v, *e = v + size; p < e; p += 1){
|
for (u16 *p = v, *e = v + size; p < e; p += 1){
|
||||||
u16 k = *p;
|
u16 k = *p;
|
||||||
|
@ -39,7 +39,7 @@ table_hash_u16(u16 *v, umem size){
|
||||||
return(hash);
|
return(hash);
|
||||||
}
|
}
|
||||||
static u64
|
static u64
|
||||||
table_hash_u32(u32 *v, umem size){
|
table_hash_u32(u32 *v, u64 size){
|
||||||
u64 hash = 0;
|
u64 hash = 0;
|
||||||
for (u32 *p = v, *e = v + size; p < e; p += 1){
|
for (u32 *p = v, *e = v + size; p < e; p += 1){
|
||||||
u32 k = *p;
|
u32 k = *p;
|
||||||
|
@ -52,7 +52,7 @@ table_hash_u32(u32 *v, umem size){
|
||||||
return(hash);
|
return(hash);
|
||||||
}
|
}
|
||||||
static u64
|
static u64
|
||||||
table_hash_u64(u64 *v, umem size){
|
table_hash_u64(u64 *v, u64 size){
|
||||||
u64 hash = 0;
|
u64 hash = 0;
|
||||||
for (u64 *p = v, *e = v + size; p < e; p += 1){
|
for (u64 *p = v, *e = v + size; p < e; p += 1){
|
||||||
u64 k = *p;
|
u64 k = *p;
|
||||||
|
@ -65,7 +65,7 @@ table_hash_u64(u64 *v, umem size){
|
||||||
return(hash);
|
return(hash);
|
||||||
}
|
}
|
||||||
static u64
|
static u64
|
||||||
table_hash(void *v, i32 it_size, umem size){
|
table_hash(void *v, i32 it_size, u64 size){
|
||||||
u64 hash = 0;
|
u64 hash = 0;
|
||||||
switch (it_size){
|
switch (it_size){
|
||||||
case 1:
|
case 1:
|
||||||
|
|
|
@ -1136,7 +1136,7 @@ line_is_blank(Application_Links *app, Buffer_ID buffer, i64 line_number){
|
||||||
Scratch_Block scratch(app);
|
Scratch_Block scratch(app);
|
||||||
String_Const_u8 line = push_buffer_line(app, scratch, buffer, line_number);
|
String_Const_u8 line = push_buffer_line(app, scratch, buffer, line_number);
|
||||||
b32 is_blank = true;
|
b32 is_blank = true;
|
||||||
for (umem i = 0; i < line.size; i += 1){
|
for (u64 i = 0; i < line.size; i += 1){
|
||||||
if (!character_is_whitespace(line.str[i])){
|
if (!character_is_whitespace(line.str[i])){
|
||||||
is_blank = false;
|
is_blank = false;
|
||||||
break;
|
break;
|
||||||
|
@ -1206,7 +1206,7 @@ get_indent_info_range(Application_Links *app, Buffer_ID buffer, Range_i64 range,
|
||||||
info.first_char_pos = range.end;
|
info.first_char_pos = range.end;
|
||||||
info.is_blank = true;
|
info.is_blank = true;
|
||||||
info.all_space = true;
|
info.all_space = true;
|
||||||
for (umem i = 0; i < s.size; i += 1){
|
for (u64 i = 0; i < s.size; i += 1){
|
||||||
u8 c = s.str[i];
|
u8 c = s.str[i];
|
||||||
if (!character_is_whitespace(c)){
|
if (!character_is_whitespace(c)){
|
||||||
info.is_blank = false;
|
info.is_blank = false;
|
||||||
|
@ -1262,7 +1262,7 @@ replace_in_range(Application_Links *app, Buffer_ID buffer, Range_i64 range, Stri
|
||||||
i64 new_pos = 0;
|
i64 new_pos = 0;
|
||||||
seek_string_forward(app, buffer, pos, range.end, needle, &new_pos);
|
seek_string_forward(app, buffer, pos, range.end, needle, &new_pos);
|
||||||
i64 shift = replace_range_shift(needle.size, string.size);
|
i64 shift = replace_range_shift(needle.size, string.size);
|
||||||
for (; new_pos + (imem)needle.size <= range.end;){
|
for (; new_pos + (i64)needle.size <= range.end;){
|
||||||
Range_i64 needle_range = Ii64(new_pos, new_pos + (i32)needle.size);
|
Range_i64 needle_range = Ii64(new_pos, new_pos + (i32)needle.size);
|
||||||
buffer_replace_range(app, buffer, needle_range, string);
|
buffer_replace_range(app, buffer, needle_range, string);
|
||||||
range.end += shift;
|
range.end += shift;
|
||||||
|
@ -1399,7 +1399,7 @@ match_core_code(User_Input *in, Key_Code core_code){
|
||||||
internal String_Const_u8
|
internal String_Const_u8
|
||||||
backspace_utf8(String_Const_u8 string){
|
backspace_utf8(String_Const_u8 string){
|
||||||
if (string.size > 0){
|
if (string.size > 0){
|
||||||
umem i = string.size - 1;
|
u64 i = string.size - 1;
|
||||||
for (; i > 0; --i){
|
for (; i > 0; --i){
|
||||||
if (string.str[i] <= 0x7F || string.str[i] >= 0xC0){
|
if (string.str[i] <= 0x7F || string.str[i] >= 0xC0){
|
||||||
break;
|
break;
|
||||||
|
@ -1773,7 +1773,7 @@ view_look_at_region(Application_Links *app, View_ID view, i64 major_pos, i64 min
|
||||||
Rect_f32 region = view_get_buffer_region(app, view);
|
Rect_f32 region = view_get_buffer_region(app, view);
|
||||||
f32 view_height = rect_height(region);
|
f32 view_height = rect_height(region);
|
||||||
f32 skirt_height = view_height*.1f;
|
f32 skirt_height = view_height*.1f;
|
||||||
Interval_f32 acceptable_y = If32(skirt_height, view_height*.9f);
|
Range_f32 acceptable_y = If32(skirt_height, view_height*.9f);
|
||||||
|
|
||||||
f32 target_height = view_line_y_difference(app, view, bottom.line + 1, top.line);
|
f32 target_height = view_line_y_difference(app, view, bottom.line + 1, top.line);
|
||||||
|
|
||||||
|
@ -1868,7 +1868,7 @@ get_query_string(Application_Links *app, char *query_str, u8 *string_space, i32
|
||||||
Query_Bar_Group group(app);
|
Query_Bar_Group group(app);
|
||||||
Query_Bar bar = {};
|
Query_Bar bar = {};
|
||||||
bar.prompt = SCu8((u8*)query_str);
|
bar.prompt = SCu8((u8*)query_str);
|
||||||
bar.string = SCu8(string_space, (umem)0);
|
bar.string = SCu8(string_space, (u64)0);
|
||||||
bar.string_capacity = space_size;
|
bar.string_capacity = space_size;
|
||||||
if (!query_user_string(app, &bar)){
|
if (!query_user_string(app, &bar)){
|
||||||
bar.string.size = 0;
|
bar.string.size = 0;
|
||||||
|
@ -1897,7 +1897,7 @@ push_token_or_word_under_pos(Application_Links *app, Arena *arena, Buffer_ID buf
|
||||||
String_Const_u8 result = {};
|
String_Const_u8 result = {};
|
||||||
Token *token = get_token_from_pos(app, buffer, pos);
|
Token *token = get_token_from_pos(app, buffer, pos);
|
||||||
if (token != 0 && token->size > 0 && token->kind != TokenBaseKind_Whitespace){
|
if (token != 0 && token->size > 0 && token->kind != TokenBaseKind_Whitespace){
|
||||||
Interval_i64 range = Ii64(token->pos, token->pos + token->size);
|
Range_i64 range = Ii64(token->pos, token->pos + token->size);
|
||||||
result = push_buffer_range(app, arena, buffer, range);
|
result = push_buffer_range(app, arena, buffer, range);
|
||||||
}
|
}
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -1939,11 +1939,11 @@ dump_file_handle(Arena *arena, FILE *file){
|
||||||
Data result = {};
|
Data result = {};
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
fseek(file, 0, SEEK_END);
|
fseek(file, 0, SEEK_END);
|
||||||
umem size = ftell(file);
|
u64 size = ftell(file);
|
||||||
char *mem = push_array(arena, char, size);
|
char *mem = push_array(arena, char, size);
|
||||||
if (mem != 0){
|
if (mem != 0){
|
||||||
fseek(file, 0, SEEK_SET);
|
fseek(file, 0, SEEK_SET);
|
||||||
fread(mem, 1, size, file);
|
fread(mem, 1, (size_t)size, file);
|
||||||
result = make_data(mem, size);
|
result = make_data(mem, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2053,10 +2053,10 @@ sort_pairs_by_key(Sort_Pair_i32 *pairs, i32 count){
|
||||||
sort_pairs_by_key__quick(pairs, 0, count);
|
sort_pairs_by_key__quick(pairs, 0, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Range_Array
|
internal Range_i32_Array
|
||||||
get_ranges_of_duplicate_keys(Arena *arena, i32 *keys, i32 stride, i32 count){
|
get_ranges_of_duplicate_keys(Arena *arena, i32 *keys, i32 stride, i32 count){
|
||||||
Range_Array result = {};
|
Range_i32_Array result = {};
|
||||||
result.ranges = push_array(arena, Range, count);
|
result.ranges = push_array(arena, Range_i32, count);
|
||||||
u8 *ptr = (u8*)keys;
|
u8 *ptr = (u8*)keys;
|
||||||
i32 start_i = 0;
|
i32 start_i = 0;
|
||||||
for (i32 i = 1; i <= count; i += 1){
|
for (i32 i = 1; i <= count; i += 1){
|
||||||
|
@ -2068,13 +2068,13 @@ get_ranges_of_duplicate_keys(Arena *arena, i32 *keys, i32 stride, i32 count){
|
||||||
is_end = true;
|
is_end = true;
|
||||||
}
|
}
|
||||||
if (is_end){
|
if (is_end){
|
||||||
Range *new_range = &result.ranges[result.count++];
|
Range_i32 *new_range = &result.ranges[result.count++];
|
||||||
new_range->first = start_i;
|
new_range->first = start_i;
|
||||||
new_range->one_past_last = i;
|
new_range->one_past_last = i;
|
||||||
start_i = i;
|
start_i = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pop_array(arena, Range, count - result.count);
|
pop_array(arena, Range_i32, count - result.count);
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2371,7 +2371,7 @@ select_scope(Application_Links *app, View_ID view, Range_i64 range){
|
||||||
|
|
||||||
function Line_Ending_Kind
|
function Line_Ending_Kind
|
||||||
guess_line_ending_kind_from_buffer(Application_Links *app, Buffer_ID buffer){
|
guess_line_ending_kind_from_buffer(Application_Links *app, Buffer_ID buffer){
|
||||||
umem size = buffer_get_size(app, buffer);
|
u64 size = buffer_get_size(app, buffer);
|
||||||
size = clamp_top(size, KB(8));
|
size = clamp_top(size, KB(8));
|
||||||
Scratch_Block scratch(app);
|
Scratch_Block scratch(app);
|
||||||
String_Const_u8 string = push_buffer_range(app, scratch, buffer, Ii64(0, size));
|
String_Const_u8 string = push_buffer_range(app, scratch, buffer, Ii64(0, size));
|
||||||
|
|
|
@ -23,7 +23,7 @@ begin_buffer_insertion_at_buffered(Application_Links *app, Buffer_ID buffer_id,
|
||||||
}
|
}
|
||||||
|
|
||||||
function Buffer_Insertion
|
function Buffer_Insertion
|
||||||
begin_buffer_insertion_at_buffered(Application_Links *app, Buffer_ID buffer_id, i64 at, Arena *buffer_memory, umem buffer_memory_size){
|
begin_buffer_insertion_at_buffered(Application_Links *app, Buffer_ID buffer_id, i64 at, Arena *buffer_memory, u64 buffer_memory_size){
|
||||||
Cursor *cursor = push_array(buffer_memory, Cursor, 1);
|
Cursor *cursor = push_array(buffer_memory, Cursor, 1);
|
||||||
*cursor = make_cursor(push_array(buffer_memory, u8, buffer_memory_size), buffer_memory_size);
|
*cursor = make_cursor(push_array(buffer_memory, u8, buffer_memory_size), buffer_memory_size);
|
||||||
return(begin_buffer_insertion_at_buffered(app, buffer_id, at, cursor));
|
return(begin_buffer_insertion_at_buffered(app, buffer_id, at, cursor));
|
||||||
|
@ -47,14 +47,14 @@ insert_string__no_buffering(Buffer_Insertion *insertion, String_Const_u8 string)
|
||||||
static void
|
static void
|
||||||
insert__flush(Buffer_Insertion *insertion){
|
insert__flush(Buffer_Insertion *insertion){
|
||||||
Cursor *cursor = insertion->cursor;
|
Cursor *cursor = insertion->cursor;
|
||||||
umem pos = insertion->temp.temp_memory_cursor.pos;
|
u64 pos = insertion->temp.temp_memory_cursor.pos;
|
||||||
String_Const_u8 string = SCu8(cursor->base + pos, cursor->pos - pos);
|
String_Const_u8 string = SCu8(cursor->base + pos, cursor->pos - pos);
|
||||||
insert_string__no_buffering(insertion, string);
|
insert_string__no_buffering(insertion, string);
|
||||||
end_temp(insertion->temp);
|
end_temp(insertion->temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char*
|
static char*
|
||||||
insert__reserve(Buffer_Insertion *insertion, umem size){
|
insert__reserve(Buffer_Insertion *insertion, u64 size){
|
||||||
char *space = push_array(insertion->cursor, char, size);
|
char *space = push_array(insertion->cursor, char, size);
|
||||||
if (space == 0){
|
if (space == 0){
|
||||||
insert__flush(insertion);
|
insert__flush(insertion);
|
||||||
|
@ -86,7 +86,7 @@ insert_string(Buffer_Insertion *insertion, String_Const_u8 string){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static umem
|
static u64
|
||||||
insertf(Buffer_Insertion *insertion, char *format, ...){
|
insertf(Buffer_Insertion *insertion, char *format, ...){
|
||||||
Scratch_Block scratch(insertion->app);
|
Scratch_Block scratch(insertion->app);
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
|
@ -106,14 +106,14 @@ init_marker_list(Application_Links *app, Heap *heap, Buffer_ID buffer, Marker_Li
|
||||||
Scratch_Block scratch(app);
|
Scratch_Block scratch(app);
|
||||||
|
|
||||||
Sticky_Jump_Array jumps = parse_buffer_to_jump_array(app, scratch, buffer);
|
Sticky_Jump_Array jumps = parse_buffer_to_jump_array(app, scratch, buffer);
|
||||||
Range_Array buffer_ranges = get_ranges_of_duplicate_keys(scratch, &jumps.jumps->jump_buffer_id, sizeof(*jumps.jumps), jumps.count);
|
Range_i32_Array buffer_ranges = get_ranges_of_duplicate_keys(scratch, &jumps.jumps->jump_buffer_id, sizeof(*jumps.jumps), jumps.count);
|
||||||
Sort_Pair_i32 *range_index_buffer_id_pairs = push_array(scratch, Sort_Pair_i32, buffer_ranges.count);
|
Sort_Pair_i32 *range_index_buffer_id_pairs = push_array(scratch, Sort_Pair_i32, buffer_ranges.count);
|
||||||
for (i32 i = 0; i < buffer_ranges.count; i += 1){
|
for (i32 i = 0; i < buffer_ranges.count; i += 1){
|
||||||
range_index_buffer_id_pairs[i].index = i;
|
range_index_buffer_id_pairs[i].index = i;
|
||||||
range_index_buffer_id_pairs[i].key = jumps.jumps[buffer_ranges.ranges[i].first].jump_buffer_id;
|
range_index_buffer_id_pairs[i].key = jumps.jumps[buffer_ranges.ranges[i].first].jump_buffer_id;
|
||||||
}
|
}
|
||||||
sort_pairs_by_key(range_index_buffer_id_pairs, buffer_ranges.count);
|
sort_pairs_by_key(range_index_buffer_id_pairs, buffer_ranges.count);
|
||||||
Range_Array scoped_buffer_ranges = get_ranges_of_duplicate_keys(scratch,
|
Range_i32_Array scoped_buffer_ranges = get_ranges_of_duplicate_keys(scratch,
|
||||||
&range_index_buffer_id_pairs->key,
|
&range_index_buffer_id_pairs->key,
|
||||||
sizeof(*range_index_buffer_id_pairs),
|
sizeof(*range_index_buffer_id_pairs),
|
||||||
buffer_ranges.count);
|
buffer_ranges.count);
|
||||||
|
@ -124,14 +124,14 @@ init_marker_list(Application_Links *app, Heap *heap, Buffer_ID buffer, Marker_Li
|
||||||
scope_array[0] = buffer_get_managed_scope(app, buffer);
|
scope_array[0] = buffer_get_managed_scope(app, buffer);
|
||||||
|
|
||||||
for (i32 i = 0; i < scoped_buffer_ranges.count; i += 1){
|
for (i32 i = 0; i < scoped_buffer_ranges.count; i += 1){
|
||||||
Range buffer_range_indices = scoped_buffer_ranges.ranges[i];
|
Range_i32 buffer_range_indices = scoped_buffer_ranges.ranges[i];
|
||||||
|
|
||||||
u32 total_jump_count = 0;
|
u32 total_jump_count = 0;
|
||||||
for (i32 j = buffer_range_indices.first;
|
for (i32 j = buffer_range_indices.first;
|
||||||
j < buffer_range_indices.one_past_last;
|
j < buffer_range_indices.one_past_last;
|
||||||
j += 1){
|
j += 1){
|
||||||
i32 range_index = range_index_buffer_id_pairs[j].index;
|
i32 range_index = range_index_buffer_id_pairs[j].index;
|
||||||
Range range = buffer_ranges.ranges[range_index];
|
Range_i32 range = buffer_ranges.ranges[range_index];
|
||||||
total_jump_count += range_size(range);
|
total_jump_count += range_size(range);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ init_marker_list(Application_Links *app, Heap *heap, Buffer_ID buffer, Marker_Li
|
||||||
j < buffer_range_indices.one_past_last;
|
j < buffer_range_indices.one_past_last;
|
||||||
j += 1){
|
j += 1){
|
||||||
i32 range_index = range_index_buffer_id_pairs[j].index;
|
i32 range_index = range_index_buffer_id_pairs[j].index;
|
||||||
Range range = buffer_ranges.ranges[range_index];
|
Range_i32 range = buffer_ranges.ranges[range_index];
|
||||||
if (target_buffer_id == 0){
|
if (target_buffer_id == 0){
|
||||||
target_buffer_id = jumps.jumps[range.first].jump_buffer_id;
|
target_buffer_id = jumps.jumps[range.first].jump_buffer_id;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
// TOP
|
// TOP
|
||||||
|
|
||||||
function b32
|
function b32
|
||||||
ms_style_verify(String_Const_u8 line, umem left_paren_pos, umem right_paren_pos){
|
ms_style_verify(String_Const_u8 line, u64 left_paren_pos, u64 right_paren_pos){
|
||||||
i32 result = false;
|
i32 result = false;
|
||||||
String_Const_u8 line_part = string_skip(line, right_paren_pos);
|
String_Const_u8 line_part = string_skip(line, right_paren_pos);
|
||||||
if (string_match(string_prefix(line_part, 4), string_u8_litexpr(") : "))){
|
if (string_match(string_prefix(line_part, 4), string_u8_litexpr(") : "))){
|
||||||
|
@ -18,7 +18,7 @@ ms_style_verify(String_Const_u8 line, umem left_paren_pos, umem right_paren_pos)
|
||||||
String_Const_u8 number = string_skip(string_prefix(line, right_paren_pos - 1), left_paren_pos + 1);
|
String_Const_u8 number = string_skip(string_prefix(line, right_paren_pos - 1), left_paren_pos + 1);
|
||||||
if (!string_is_integer(number, 10)){
|
if (!string_is_integer(number, 10)){
|
||||||
result = false;
|
result = false;
|
||||||
umem comma_pos = string_find_first(number, ',');
|
u64 comma_pos = string_find_first(number, ',');
|
||||||
if (comma_pos < number.size){
|
if (comma_pos < number.size){
|
||||||
String_Const_u8 sub_number0 = string_prefix(number, comma_pos);
|
String_Const_u8 sub_number0 = string_prefix(number, comma_pos);
|
||||||
String_Const_u8 sub_number1 = string_skip(number, comma_pos + 1);
|
String_Const_u8 sub_number1 = string_skip(number, comma_pos + 1);
|
||||||
|
@ -31,24 +31,24 @@ ms_style_verify(String_Const_u8 line, umem left_paren_pos, umem right_paren_pos)
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
function umem
|
function u64
|
||||||
try_skip_rust_arrow(String_Const_u8 line){
|
try_skip_rust_arrow(String_Const_u8 line){
|
||||||
umem pos = 0;
|
u64 pos = 0;
|
||||||
if (string_match(string_prefix(line, 3), string_u8_litexpr("-->"))){
|
if (string_match(string_prefix(line, 3), string_u8_litexpr("-->"))){
|
||||||
String_Const_u8 sub = string_skip(line, 3);
|
String_Const_u8 sub = string_skip(line, 3);
|
||||||
sub = string_skip_chop_whitespace(sub);
|
sub = string_skip_chop_whitespace(sub);
|
||||||
pos = (umem)(sub.str - line.str);
|
pos = (u64)(sub.str - line.str);
|
||||||
}
|
}
|
||||||
return(pos);
|
return(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
function b32
|
function b32
|
||||||
check_is_note(String_Const_u8 line, umem colon_pos){
|
check_is_note(String_Const_u8 line, u64 colon_pos){
|
||||||
b32 is_note = false;
|
b32 is_note = false;
|
||||||
umem note_pos = colon_pos + string_find_first(string_skip(line, colon_pos), string_u8_litexpr("note"));
|
u64 note_pos = colon_pos + string_find_first(string_skip(line, colon_pos), string_u8_litexpr("note"));
|
||||||
if (note_pos < line.size){
|
if (note_pos < line.size){
|
||||||
b32 is_all_whitespace = true;
|
b32 is_all_whitespace = true;
|
||||||
for (umem i = colon_pos + 1; i < note_pos; i += 1){
|
for (u64 i = colon_pos + 1; i < note_pos; i += 1){
|
||||||
if (!character_is_whitespace(line.str[i])){
|
if (!character_is_whitespace(line.str[i])){
|
||||||
is_all_whitespace = false;
|
is_all_whitespace = false;
|
||||||
break;
|
break;
|
||||||
|
@ -67,11 +67,11 @@ parse_jump_location(String_Const_u8 line){
|
||||||
jump.sub_jump_indented = (string_get_character(line, 0) == ' ');
|
jump.sub_jump_indented = (string_get_character(line, 0) == ' ');
|
||||||
|
|
||||||
String_Const_u8 reduced_line = string_skip_chop_whitespace(line);
|
String_Const_u8 reduced_line = string_skip_chop_whitespace(line);
|
||||||
umem whitespace_length = (umem)(reduced_line.str - line.str);
|
u64 whitespace_length = (u64)(reduced_line.str - line.str);
|
||||||
line = reduced_line;
|
line = reduced_line;
|
||||||
|
|
||||||
umem left_paren_pos = string_find_first(line, '(');
|
u64 left_paren_pos = string_find_first(line, '(');
|
||||||
umem right_paren_pos = left_paren_pos + string_find_first(string_skip(line, left_paren_pos), ')');
|
u64 right_paren_pos = left_paren_pos + string_find_first(string_skip(line, left_paren_pos), ')');
|
||||||
for (;!jump.is_ms_style && right_paren_pos < line.size;){
|
for (;!jump.is_ms_style && right_paren_pos < line.size;){
|
||||||
if (ms_style_verify(line, left_paren_pos, right_paren_pos)){
|
if (ms_style_verify(line, left_paren_pos, right_paren_pos)){
|
||||||
jump.is_ms_style = true;
|
jump.is_ms_style = true;
|
||||||
|
@ -96,7 +96,7 @@ parse_jump_location(String_Const_u8 line){
|
||||||
line_number = string_skip_chop_whitespace(line_number);
|
line_number = string_skip_chop_whitespace(line_number);
|
||||||
|
|
||||||
if (line_number.size > 0){
|
if (line_number.size > 0){
|
||||||
umem comma_pos = string_find_first(line_number, ',');
|
u64 comma_pos = string_find_first(line_number, ',');
|
||||||
if (comma_pos < line_number.size){
|
if (comma_pos < line_number.size){
|
||||||
String_Const_u8 column_number = string_skip(line_number, comma_pos + 1);
|
String_Const_u8 column_number = string_skip(line_number, comma_pos + 1);
|
||||||
line_number = string_prefix(line_number, comma_pos);
|
line_number = string_prefix(line_number, comma_pos);
|
||||||
|
@ -127,15 +127,15 @@ parse_jump_location(String_Const_u8 line){
|
||||||
jump.has_rust_arrow = true;
|
jump.has_rust_arrow = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
umem colon_pos1 = string_find_first(string_skip(line, start), ':') + start;
|
u64 colon_pos1 = string_find_first(string_skip(line, start), ':') + start;
|
||||||
if (line.size > colon_pos1 + 1){
|
if (line.size > colon_pos1 + 1){
|
||||||
if (character_is_slash(string_get_character(line, colon_pos1 + 1))){
|
if (character_is_slash(string_get_character(line, colon_pos1 + 1))){
|
||||||
colon_pos1 = string_find_first(string_skip(line, colon_pos1 + 1), ':') + colon_pos1 + 1;
|
colon_pos1 = string_find_first(string_skip(line, colon_pos1 + 1), ':') + colon_pos1 + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
umem colon_pos2 = string_find_first(string_skip(line, colon_pos1 + 1), ':') + colon_pos1 + 1;
|
u64 colon_pos2 = string_find_first(string_skip(line, colon_pos1 + 1), ':') + colon_pos1 + 1;
|
||||||
umem colon_pos3 = string_find_first(string_skip(line, colon_pos2 + 1), ':') + colon_pos2 + 1;
|
u64 colon_pos3 = string_find_first(string_skip(line, colon_pos2 + 1), ':') + colon_pos2 + 1;
|
||||||
|
|
||||||
if (colon_pos3 < line.size){
|
if (colon_pos3 < line.size){
|
||||||
if (check_is_note(line, colon_pos3)){
|
if (check_is_note(line, colon_pos3)){
|
||||||
|
|
|
@ -301,7 +301,7 @@ layout_unwrapped_small_blank_lines(Application_Links *app, Arena *arena, Buffer_
|
||||||
Newline_Layout_Vars newline_vars = get_newline_layout_vars();
|
Newline_Layout_Vars newline_vars = get_newline_layout_vars();
|
||||||
|
|
||||||
b32 all_whitespace = true;
|
b32 all_whitespace = true;
|
||||||
for (umem i = 0; i < text.size; i += 1){
|
for (u64 i = 0; i < text.size; i += 1){
|
||||||
if (!character_is_whitespace(text.str[i])){
|
if (!character_is_whitespace(text.str[i])){
|
||||||
all_whitespace = false;
|
all_whitespace = false;
|
||||||
break;
|
break;
|
||||||
|
@ -315,7 +315,7 @@ layout_unwrapped_small_blank_lines(Application_Links *app, Arena *arena, Buffer_
|
||||||
u8 *ptr = text.str;
|
u8 *ptr = text.str;
|
||||||
u8 *end_ptr = ptr + text.size;
|
u8 *end_ptr = ptr + text.size;
|
||||||
for (;ptr < end_ptr;){
|
for (;ptr < end_ptr;){
|
||||||
Character_Consume_Result consume = utf8_consume(ptr, (umem)(end_ptr - ptr));
|
Character_Consume_Result consume = utf8_consume(ptr, (u64)(end_ptr - ptr));
|
||||||
|
|
||||||
i64 index = layout_index_from_ptr(ptr, text.str, range.first);
|
i64 index = layout_index_from_ptr(ptr, text.str, range.first);
|
||||||
switch (consume.codepoint){
|
switch (consume.codepoint){
|
||||||
|
@ -396,7 +396,7 @@ layout_wrap_anywhere(Application_Links *app, Arena *arena, Buffer_ID buffer, Ran
|
||||||
u8 *ptr = text.str;
|
u8 *ptr = text.str;
|
||||||
u8 *end_ptr = ptr + text.size;
|
u8 *end_ptr = ptr + text.size;
|
||||||
for (;ptr < end_ptr;){
|
for (;ptr < end_ptr;){
|
||||||
Character_Consume_Result consume = utf8_consume(ptr, (umem)(end_ptr - ptr));
|
Character_Consume_Result consume = utf8_consume(ptr, (u64)(end_ptr - ptr));
|
||||||
i64 index = layout_index_from_ptr(ptr, text.str, range.first);
|
i64 index = layout_index_from_ptr(ptr, text.str, range.first);
|
||||||
switch (consume.codepoint){
|
switch (consume.codepoint){
|
||||||
default:
|
default:
|
||||||
|
@ -469,7 +469,7 @@ layout_unwrapped__inner(Application_Links *app, Arena *arena, Buffer_ID buffer,
|
||||||
u8 *ptr = text.str;
|
u8 *ptr = text.str;
|
||||||
u8 *end_ptr = ptr + text.size;
|
u8 *end_ptr = ptr + text.size;
|
||||||
for (;ptr < end_ptr;){
|
for (;ptr < end_ptr;){
|
||||||
Character_Consume_Result consume = utf8_consume(ptr, (umem)(end_ptr - ptr));
|
Character_Consume_Result consume = utf8_consume(ptr, (u64)(end_ptr - ptr));
|
||||||
|
|
||||||
i64 index = layout_index_from_ptr(ptr, text.str, range.first);
|
i64 index = layout_index_from_ptr(ptr, text.str, range.first);
|
||||||
switch (consume.codepoint){
|
switch (consume.codepoint){
|
||||||
|
@ -572,7 +572,7 @@ layout_wrap_whitespace__inner(Application_Links *app, Arena *arena, Buffer_ID bu
|
||||||
ptr = word.str;
|
ptr = word.str;
|
||||||
for (;ptr < word_end;){
|
for (;ptr < word_end;){
|
||||||
Character_Consume_Result consume =
|
Character_Consume_Result consume =
|
||||||
utf8_consume(ptr, (umem)(word_end - ptr));
|
utf8_consume(ptr, (u64)(word_end - ptr));
|
||||||
if (consume.codepoint != max_u32){
|
if (consume.codepoint != max_u32){
|
||||||
total_advance += lr_tb_advance(&pos_vars, face, consume.codepoint);
|
total_advance += lr_tb_advance(&pos_vars, face, consume.codepoint);
|
||||||
}
|
}
|
||||||
|
@ -591,7 +591,7 @@ layout_wrap_whitespace__inner(Application_Links *app, Arena *arena, Buffer_ID bu
|
||||||
|
|
||||||
for (;ptr < word_end;){
|
for (;ptr < word_end;){
|
||||||
Character_Consume_Result consume =
|
Character_Consume_Result consume =
|
||||||
utf8_consume(ptr, (umem)(word_end - ptr));
|
utf8_consume(ptr, (u64)(word_end - ptr));
|
||||||
i64 index = layout_index_from_ptr(ptr, text.str, range.first);
|
i64 index = layout_index_from_ptr(ptr, text.str, range.first);
|
||||||
|
|
||||||
if (consume.codepoint != max_u32){
|
if (consume.codepoint != max_u32){
|
||||||
|
|
|
@ -684,7 +684,7 @@ lister_begin_new_item_set(Application_Links *app, Lister *lister){
|
||||||
}
|
}
|
||||||
|
|
||||||
function void*
|
function void*
|
||||||
lister_add_item(Lister *lister, Lister_Prealloced_String string, Lister_Prealloced_String status, void *user_data, umem extra_space){
|
lister_add_item(Lister *lister, Lister_Prealloced_String string, Lister_Prealloced_String status, void *user_data, u64 extra_space){
|
||||||
void *base_memory = push_array(lister->arena, u8, sizeof(Lister_Node) + extra_space);
|
void *base_memory = push_array(lister->arena, u8, sizeof(Lister_Node) + extra_space);
|
||||||
Lister_Node *node = (Lister_Node*)base_memory;
|
Lister_Node *node = (Lister_Node*)base_memory;
|
||||||
node->string = string.string;
|
node->string = string.string;
|
||||||
|
@ -699,17 +699,17 @@ lister_add_item(Lister *lister, Lister_Prealloced_String string, Lister_Prealloc
|
||||||
|
|
||||||
function void*
|
function void*
|
||||||
lister_add_item(Lister *lister, Lister_Prealloced_String string, String_Const_u8 status,
|
lister_add_item(Lister *lister, Lister_Prealloced_String string, String_Const_u8 status,
|
||||||
void *user_data, umem extra_space){
|
void *user_data, u64 extra_space){
|
||||||
return(lister_add_item(lister, string, lister_prealloced(push_string_copy(lister->arena, status)), user_data, extra_space));
|
return(lister_add_item(lister, string, lister_prealloced(push_string_copy(lister->arena, status)), user_data, extra_space));
|
||||||
}
|
}
|
||||||
|
|
||||||
function void*
|
function void*
|
||||||
lister_add_item(Lister *lister, String_Const_u8 string, Lister_Prealloced_String status, void *user_data, umem extra_space){
|
lister_add_item(Lister *lister, String_Const_u8 string, Lister_Prealloced_String status, void *user_data, u64 extra_space){
|
||||||
return(lister_add_item(lister, lister_prealloced(push_string_copy(lister->arena, string)), status, user_data, extra_space));
|
return(lister_add_item(lister, lister_prealloced(push_string_copy(lister->arena, string)), status, user_data, extra_space));
|
||||||
}
|
}
|
||||||
|
|
||||||
function void*
|
function void*
|
||||||
lister_add_item(Lister *lister, String_Const_u8 string, String_Const_u8 status, void *user_data, umem extra_space){
|
lister_add_item(Lister *lister, String_Const_u8 string, String_Const_u8 status, void *user_data, u64 extra_space){
|
||||||
return(lister_add_item(lister,
|
return(lister_add_item(lister,
|
||||||
lister_prealloced(push_string_copy(lister->arena, string)),
|
lister_prealloced(push_string_copy(lister->arena, string)),
|
||||||
lister_prealloced(push_string_copy(lister->arena, status)),
|
lister_prealloced(push_string_copy(lister->arena, status)),
|
||||||
|
@ -895,7 +895,7 @@ get_choice_from_user(Application_Links *app, String_Const_u8 query,
|
||||||
for (Lister_Choice *choice = list.first;
|
for (Lister_Choice *choice = list.first;
|
||||||
choice != 0;
|
choice != 0;
|
||||||
choice = choice->next){
|
choice = choice->next){
|
||||||
umem code_size = sizeof(choice->key_code);
|
u64 code_size = sizeof(choice->key_code);
|
||||||
void *extra = lister_add_item(lister, choice->string, choice->status,
|
void *extra = lister_add_item(lister, choice->string, choice->status,
|
||||||
choice, code_size);
|
choice, code_size);
|
||||||
block_copy(extra, &choice->key_code, code_size);
|
block_copy(extra, &choice->key_code, code_size);
|
||||||
|
|
|
@ -173,7 +173,7 @@ make_log_parse(Arena *arena, String_Const_u8 source){
|
||||||
parse.id_to_string_table = make_table_u64_Data(arena->base_allocator, 500);
|
parse.id_to_string_table = make_table_u64_Data(arena->base_allocator, 500);
|
||||||
|
|
||||||
for (;source.size > 0;){
|
for (;source.size > 0;){
|
||||||
umem end_of_line = string_find_first(source, '\n');
|
u64 end_of_line = string_find_first(source, '\n');
|
||||||
String_Const_u8 line = string_prefix(source, end_of_line);
|
String_Const_u8 line = string_prefix(source, end_of_line);
|
||||||
line = string_skip_chop_whitespace(line);
|
line = string_skip_chop_whitespace(line);
|
||||||
source = string_skip(source, end_of_line + 1);
|
source = string_skip(source, end_of_line + 1);
|
||||||
|
@ -185,11 +185,11 @@ make_log_parse(Arena *arena, String_Const_u8 source){
|
||||||
String_Const_u8 whole_line = line;
|
String_Const_u8 whole_line = line;
|
||||||
|
|
||||||
{
|
{
|
||||||
umem colon1 = string_find_first(line, ':');
|
u64 colon1 = string_find_first(line, ':');
|
||||||
src_file_name = string_prefix(line, colon1);
|
src_file_name = string_prefix(line, colon1);
|
||||||
line = string_skip(line, colon1 + 1);
|
line = string_skip(line, colon1 + 1);
|
||||||
|
|
||||||
umem colon2 = string_find_first(line, ':');
|
u64 colon2 = string_find_first(line, ':');
|
||||||
src_line_number = string_prefix(line, colon2);
|
src_line_number = string_prefix(line, colon2);
|
||||||
line = string_skip(line, colon2 + 1);
|
line = string_skip(line, colon2 + 1);
|
||||||
|
|
||||||
|
@ -201,12 +201,12 @@ make_log_parse(Arena *arena, String_Const_u8 source){
|
||||||
if (!got_source_position){
|
if (!got_source_position){
|
||||||
line = whole_line;
|
line = whole_line;
|
||||||
|
|
||||||
umem colon0 = string_find_first(line, ':');
|
u64 colon0 = string_find_first(line, ':');
|
||||||
umem colon1 = string_find_first(line, colon0 + 1, ':');
|
u64 colon1 = string_find_first(line, colon0 + 1, ':');
|
||||||
src_file_name = string_prefix(line, colon1);
|
src_file_name = string_prefix(line, colon1);
|
||||||
line = string_skip(line, colon1 + 1);
|
line = string_skip(line, colon1 + 1);
|
||||||
|
|
||||||
umem colon2 = string_find_first(line, ':');
|
u64 colon2 = string_find_first(line, ':');
|
||||||
src_line_number = string_prefix(line, colon2);
|
src_line_number = string_prefix(line, colon2);
|
||||||
line = string_skip(line, colon2 + 1);
|
line = string_skip(line, colon2 + 1);
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ make_log_parse(Arena *arena, String_Const_u8 source){
|
||||||
}
|
}
|
||||||
|
|
||||||
if (got_source_position){
|
if (got_source_position){
|
||||||
umem bracket_open = string_find_first(line, '[');
|
u64 bracket_open = string_find_first(line, '[');
|
||||||
String_Const_u8 event_name = string_prefix(line, bracket_open);
|
String_Const_u8 event_name = string_prefix(line, bracket_open);
|
||||||
event_name = string_skip_chop_whitespace(event_name);
|
event_name = string_skip_chop_whitespace(event_name);
|
||||||
line = string_skip(line, bracket_open + 1);
|
line = string_skip(line, bracket_open + 1);
|
||||||
|
@ -225,13 +225,13 @@ make_log_parse(Arena *arena, String_Const_u8 source){
|
||||||
src_file_name, src_line_number, event_name);
|
src_file_name, src_line_number, event_name);
|
||||||
|
|
||||||
for (;line.size > 0;){
|
for (;line.size > 0;){
|
||||||
umem bracket_close = string_find_first(line, ']');
|
u64 bracket_close = string_find_first(line, ']');
|
||||||
String_Const_u8 tag = string_prefix(line, bracket_close);
|
String_Const_u8 tag = string_prefix(line, bracket_close);
|
||||||
line = string_skip(line, bracket_close + 1);
|
line = string_skip(line, bracket_close + 1);
|
||||||
bracket_open = string_find_first(line, '[');
|
bracket_open = string_find_first(line, '[');
|
||||||
line = string_skip(line, bracket_open + 1);
|
line = string_skip(line, bracket_open + 1);
|
||||||
|
|
||||||
umem equal_sign = string_find_first(tag, '=');
|
u64 equal_sign = string_find_first(tag, '=');
|
||||||
String_Const_u8 tag_name = string_prefix(tag, equal_sign);
|
String_Const_u8 tag_name = string_prefix(tag, equal_sign);
|
||||||
String_Const_u8 tag_contents = string_skip(tag, equal_sign + 1);
|
String_Const_u8 tag_contents = string_skip(tag, equal_sign + 1);
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
internal void*
|
internal void*
|
||||||
base_reserve__malloc(void *user_data, umem size, umem *size_out, String_Const_u8 location){
|
base_reserve__malloc(void *user_data, u64 size, u64 *size_out, String_Const_u8 location){
|
||||||
*size_out = size;
|
*size_out = size;
|
||||||
return(malloc(size));
|
return(malloc((size_t)size));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
|
@ -35,13 +35,13 @@ get_allocator_malloc(void){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Arena
|
internal Arena
|
||||||
make_arena_malloc(umem chunk_size, umem align){
|
make_arena_malloc(u64 chunk_size, u64 align){
|
||||||
Base_Allocator *allocator = get_allocator_malloc();
|
Base_Allocator *allocator = get_allocator_malloc();
|
||||||
return(make_arena(allocator, chunk_size, align));
|
return(make_arena(allocator, chunk_size, align));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Arena
|
internal Arena
|
||||||
make_arena_malloc(umem chunk_size){
|
make_arena_malloc(u64 chunk_size){
|
||||||
return(make_arena_malloc(chunk_size, 8));
|
return(make_arena_malloc(chunk_size, 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -150,7 +150,7 @@ get_timestamp_at_cursor(Application_Links *app, Buffer_ID buffer, i64 pos, Miblo
|
||||||
String_Const_u8 string = push_buffer_range(app, scratch, buffer, time_stamp_range);
|
String_Const_u8 string = push_buffer_range(app, scratch, buffer, time_stamp_range);
|
||||||
if (string.size > 0){
|
if (string.size > 0){
|
||||||
i32 count_colons = 0;
|
i32 count_colons = 0;
|
||||||
for (umem i = 0; i < string.size; ++i){
|
for (u64 i = 0; i < string.size; ++i){
|
||||||
if (string.str[i] == ':'){
|
if (string.str[i] == ':'){
|
||||||
count_colons += 1;
|
count_colons += 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,7 @@ struct Memory_Bucket{
|
||||||
Memory_Bucket *next;
|
Memory_Bucket *next;
|
||||||
Memory_Annotation annotation;
|
Memory_Annotation annotation;
|
||||||
String_Const_u8 location;
|
String_Const_u8 location;
|
||||||
umem total_memory;
|
u64 total_memory;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -948,7 +948,7 @@ project_key_strings_query_user(Application_Links *app,
|
||||||
|
|
||||||
if (get_script_file){
|
if (get_script_file){
|
||||||
script_file_bar.prompt = string_u8_litexpr("Script Name: ");
|
script_file_bar.prompt = string_u8_litexpr("Script Name: ");
|
||||||
script_file_bar.string = SCu8(script_file_space, (umem)0);
|
script_file_bar.string = SCu8(script_file_space, (u64)0);
|
||||||
script_file_bar.string_capacity = script_file_cap;
|
script_file_bar.string_capacity = script_file_cap;
|
||||||
if (!query_user_string(app, &script_file_bar)) return(keys);
|
if (!query_user_string(app, &script_file_bar)) return(keys);
|
||||||
if (script_file_bar.string.size == 0) return(keys);
|
if (script_file_bar.string.size == 0) return(keys);
|
||||||
|
@ -956,14 +956,14 @@ project_key_strings_query_user(Application_Links *app,
|
||||||
|
|
||||||
if (get_code_file){
|
if (get_code_file){
|
||||||
code_file_bar.prompt = string_u8_litexpr("Build Target: ");
|
code_file_bar.prompt = string_u8_litexpr("Build Target: ");
|
||||||
code_file_bar.string = SCu8(code_file_space, (umem)0);
|
code_file_bar.string = SCu8(code_file_space, (u64)0);
|
||||||
code_file_bar.string_capacity = code_file_cap;
|
code_file_bar.string_capacity = code_file_cap;
|
||||||
if (!query_user_string(app, &code_file_bar)) return(keys);
|
if (!query_user_string(app, &code_file_bar)) return(keys);
|
||||||
if (code_file_bar.string.size == 0) return(keys);
|
if (code_file_bar.string.size == 0) return(keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
output_dir_bar.prompt = string_u8_litexpr("Output Directory: ");
|
output_dir_bar.prompt = string_u8_litexpr("Output Directory: ");
|
||||||
output_dir_bar.string = SCu8(output_dir_space, (umem)0);
|
output_dir_bar.string = SCu8(output_dir_space, (u64)0);
|
||||||
output_dir_bar.string_capacity = output_dir_cap;
|
output_dir_bar.string_capacity = output_dir_cap;
|
||||||
if (!query_user_string(app, &output_dir_bar)) return(keys);
|
if (!query_user_string(app, &output_dir_bar)) return(keys);
|
||||||
if (output_dir_bar.string.size == 0 && output_dir_cap > 0){
|
if (output_dir_bar.string.size == 0 && output_dir_cap > 0){
|
||||||
|
@ -972,7 +972,7 @@ project_key_strings_query_user(Application_Links *app,
|
||||||
}
|
}
|
||||||
|
|
||||||
binary_file_bar.prompt = string_u8_litexpr("Binary Output: ");
|
binary_file_bar.prompt = string_u8_litexpr("Binary Output: ");
|
||||||
binary_file_bar.string = SCu8(binary_file_space, (umem)0);
|
binary_file_bar.string = SCu8(binary_file_space, (u64)0);
|
||||||
binary_file_bar.string_capacity = binary_file_cap;
|
binary_file_bar.string_capacity = binary_file_cap;
|
||||||
if (!query_user_string(app, &binary_file_bar)) return(keys);
|
if (!query_user_string(app, &binary_file_bar)) return(keys);
|
||||||
if (binary_file_bar.string.size == 0) return(keys);
|
if (binary_file_bar.string.size == 0) return(keys);
|
||||||
|
|
|
@ -16,7 +16,7 @@ push_stringfv(Arena *arena, char *format, va_list args){
|
||||||
va_copy(args2, args);
|
va_copy(args2, args);
|
||||||
i32 size = vsnprintf(0, 0, format, args);
|
i32 size = vsnprintf(0, 0, format, args);
|
||||||
String_Const_char result = string_const_char_push(arena, size + 1);
|
String_Const_char result = string_const_char_push(arena, size + 1);
|
||||||
vsnprintf(result.str, result.size, format, args2);
|
vsnprintf(result.str, (size_t)result.size, format, args2);
|
||||||
result.size -= 1;
|
result.size -= 1;
|
||||||
result.str[result.size] = 0;
|
result.str[result.size] = 0;
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -45,8 +45,8 @@ push_u8_stringf(Arena *arena, char *format, ...){
|
||||||
static void
|
static void
|
||||||
string_list_pushfv(Arena *arena, List_String_Const_char *list, char *format, va_list args){
|
string_list_pushfv(Arena *arena, List_String_Const_char *list, char *format, va_list args){
|
||||||
String_Const_char string = push_stringfv(arena, format, args);
|
String_Const_char string = push_stringfv(arena, format, args);
|
||||||
if (arena->alignment < sizeof(umem)){
|
if (arena->alignment < sizeof(u64)){
|
||||||
push_align(arena, sizeof(umem));
|
push_align(arena, sizeof(u64));
|
||||||
}
|
}
|
||||||
string_list_push(arena, list, string);
|
string_list_push(arena, list, string);
|
||||||
}
|
}
|
||||||
|
@ -60,8 +60,8 @@ string_list_pushf(Arena *arena, List_String_Const_char *list, char *format, ...)
|
||||||
static void
|
static void
|
||||||
string_list_pushfv(Arena *arena, List_String_Const_u8 *list, char *format, va_list args){
|
string_list_pushfv(Arena *arena, List_String_Const_u8 *list, char *format, va_list args){
|
||||||
String_Const_u8 string = push_u8_stringfv(arena, format, args);
|
String_Const_u8 string = push_u8_stringfv(arena, format, args);
|
||||||
if (arena->alignment < sizeof(umem)){
|
if (arena->alignment < sizeof(u64)){
|
||||||
push_align(arena, sizeof(umem));
|
push_align(arena, sizeof(u64));
|
||||||
}
|
}
|
||||||
string_list_push(arena, list, string);
|
string_list_push(arena, list, string);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,29 +5,28 @@
|
||||||
// TOP
|
// TOP
|
||||||
|
|
||||||
internal void*
|
internal void*
|
||||||
base_reserve__system(void *user_data, umem size, umem *size_out, String_Const_u8 location){
|
base_reserve__system(void *user_data, u64 size, u64 *size_out, String_Const_u8 location){
|
||||||
umem extra_size = 128;
|
u64 extra_size = 128;
|
||||||
umem increased_size = size + extra_size;
|
u64 increased_size = size + extra_size;
|
||||||
size = round_up_umem(increased_size, KB(4));
|
size = round_up_u64(increased_size, KB(4));
|
||||||
*size_out = size - extra_size;
|
*size_out = size - extra_size;
|
||||||
void *ptr = system_memory_allocate(size, location);
|
void *ptr = system_memory_allocate(size, location);
|
||||||
*(umem*)ptr = size;
|
*(u64*)ptr = size;
|
||||||
ptr = (u8*)ptr + extra_size;
|
ptr = (u8*)ptr + extra_size;
|
||||||
return(ptr);
|
return(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
base_free__system(void *user_data, void *ptr){
|
base_free__system(void *user_data, void *ptr){
|
||||||
umem extra_size = 128;
|
u64 extra_size = 128;
|
||||||
ptr = (u8*)ptr - extra_size;
|
ptr = (u8*)ptr - extra_size;
|
||||||
umem size = *(umem*)ptr;
|
u64 size = *(u64*)ptr;
|
||||||
system_memory_free(ptr, size);
|
system_memory_free(ptr, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Base_Allocator
|
internal Base_Allocator
|
||||||
make_base_allocator_system(void){
|
make_base_allocator_system(void){
|
||||||
return(make_base_allocator(base_reserve__system, 0, 0,
|
return(make_base_allocator(base_reserve__system, 0, 0, base_free__system, 0, 0));
|
||||||
base_free__system, 0, 0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
global Base_Allocator base_allocator_system = {};
|
global Base_Allocator base_allocator_system = {};
|
||||||
|
@ -41,12 +40,12 @@ get_base_allocator_system(void){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Arena
|
internal Arena
|
||||||
make_arena_system(umem chunk_size, umem align){
|
make_arena_system(u64 chunk_size, u64 align){
|
||||||
return(make_arena(get_base_allocator_system(), chunk_size, align));
|
return(make_arena(get_base_allocator_system(), chunk_size, align));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Arena
|
internal Arena
|
||||||
make_arena_system(umem chunk_size){
|
make_arena_system(u64 chunk_size){
|
||||||
return(make_arena_system(chunk_size, 8));
|
return(make_arena_system(chunk_size, 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ struct Memory_Annotation_Node{
|
||||||
Memory_Annotation_Node *next;
|
Memory_Annotation_Node *next;
|
||||||
String_Const_u8 location;
|
String_Const_u8 location;
|
||||||
void *address;
|
void *address;
|
||||||
umem size;
|
u64 size;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Memory_Annotation{
|
struct Memory_Annotation{
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
// TOP
|
// TOP
|
||||||
|
|
||||||
function Interval_i64
|
function Range_i64
|
||||||
Ii64(Token *token){
|
Ii64(Token *token){
|
||||||
return(Ii64_size(token->pos, token->size));
|
return(Ii64_size(token->pos, token->size));
|
||||||
}
|
}
|
||||||
|
|
|
@ -475,7 +475,7 @@ api(custom)
|
||||||
struct Query_Bar{
|
struct Query_Bar{
|
||||||
String_Const_u8 prompt;
|
String_Const_u8 prompt;
|
||||||
String_Const_u8 string;
|
String_Const_u8 string;
|
||||||
umem string_capacity;
|
u64 string_capacity;
|
||||||
};
|
};
|
||||||
|
|
||||||
api(custom)
|
api(custom)
|
||||||
|
@ -554,7 +554,7 @@ struct Face_Advance_Map{
|
||||||
api(custom)
|
api(custom)
|
||||||
struct Edit{
|
struct Edit{
|
||||||
String_Const_u8 text;
|
String_Const_u8 text;
|
||||||
Interval_i64 range;
|
Range_i64 range;
|
||||||
};
|
};
|
||||||
|
|
||||||
api(custom)
|
api(custom)
|
||||||
|
@ -660,8 +660,8 @@ struct Buffer_Name_Conflict_Entry{
|
||||||
String_Const_u8 file_name;
|
String_Const_u8 file_name;
|
||||||
String_Const_u8 base_name;
|
String_Const_u8 base_name;
|
||||||
u8 *unique_name_in_out;
|
u8 *unique_name_in_out;
|
||||||
umem unique_name_len_in_out;
|
u64 unique_name_len_in_out;
|
||||||
umem unique_name_capacity;
|
u64 unique_name_capacity;
|
||||||
};
|
};
|
||||||
|
|
||||||
api(custom)
|
api(custom)
|
||||||
|
@ -674,8 +674,8 @@ typedef i32 Buffer_Hook_Function(Application_Links *app, Buffer_ID buffer_id);
|
||||||
|
|
||||||
api(custom)
|
api(custom)
|
||||||
typedef i32 Buffer_Edit_Range_Function(Application_Links *app, Buffer_ID buffer_id,
|
typedef i32 Buffer_Edit_Range_Function(Application_Links *app, Buffer_ID buffer_id,
|
||||||
Range_i64 new_range, umem original_size);
|
Range_i64 new_range, u64 original_size);
|
||||||
#define BUFFER_EDIT_RANGE_SIG(name) i32 name(Application_Links *app, Buffer_ID buffer_id, Interval_i64 new_range, umem original_size)
|
#define BUFFER_EDIT_RANGE_SIG(name) i32 name(Application_Links *app, Buffer_ID buffer_id, Range_i64 new_range, u64 original_size)
|
||||||
|
|
||||||
api(custom)
|
api(custom)
|
||||||
typedef Vec2_f32 Delta_Rule_Function(Vec2_f32 pending, b32 is_new_target, f32 dt, void *data);
|
typedef Vec2_f32 Delta_Rule_Function(Vec2_f32 pending, b32 is_new_target, f32 dt, void *data);
|
||||||
|
@ -738,7 +738,7 @@ api(custom)
|
||||||
struct View_Context{
|
struct View_Context{
|
||||||
Render_Caller_Function *render_caller;
|
Render_Caller_Function *render_caller;
|
||||||
Delta_Rule_Function *delta_rule;
|
Delta_Rule_Function *delta_rule;
|
||||||
umem delta_rule_memory_size;
|
u64 delta_rule_memory_size;
|
||||||
b32 hides_buffer;
|
b32 hides_buffer;
|
||||||
struct Mapping *mapping;
|
struct Mapping *mapping;
|
||||||
i64 map_id;
|
i64 map_id;
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
REM (allen): quit early if we already have cl
|
|
||||||
where /q cl
|
|
||||||
IF %ERRORLEVEL% == 0 (EXIT /b)
|
|
||||||
|
|
||||||
SET "LIB="
|
SET "LIB="
|
||||||
|
|
||||||
SET VC_PATH=C:\Program Files (x86)\Microsoft Visual Studio 12.0
|
SET VC_PATH=C:\Program Files (x86)\Microsoft Visual Studio 12.0
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
REM (allen): quit early if we already have cl
|
||||||
|
where /q cl
|
||||||
|
IF %ERRORLEVEL% == 0 (EXIT /b)
|
||||||
|
|
||||||
SET SCRIPTS_PATH=%~dp0
|
SET SCRIPTS_PATH=%~dp0
|
||||||
%SCRIPTS_PATH%\setup_cl_generic.bat amd64
|
%SCRIPTS_PATH%\setup_cl_generic.bat amd64
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,7 @@
|
||||||
#define custom_managed_id_group_highest_id_sig() u64 custom_managed_id_group_highest_id(Application_Links* app, String_Const_u8 group)
|
#define custom_managed_id_group_highest_id_sig() u64 custom_managed_id_group_highest_id(Application_Links* app, String_Const_u8 group)
|
||||||
#define custom_managed_id_declare_sig() Managed_ID custom_managed_id_declare(Application_Links* app, String_Const_u8 group, String_Const_u8 name)
|
#define custom_managed_id_declare_sig() Managed_ID custom_managed_id_declare(Application_Links* app, String_Const_u8 group, String_Const_u8 name)
|
||||||
#define custom_managed_id_get_sig() Managed_ID custom_managed_id_get(Application_Links* app, String_Const_u8 group, String_Const_u8 name)
|
#define custom_managed_id_get_sig() Managed_ID custom_managed_id_get(Application_Links* app, String_Const_u8 group, String_Const_u8 name)
|
||||||
#define custom_managed_scope_get_attachment_sig() void* custom_managed_scope_get_attachment(Application_Links* app, Managed_Scope scope, Managed_ID id, umem size)
|
#define custom_managed_scope_get_attachment_sig() void* custom_managed_scope_get_attachment(Application_Links* app, Managed_Scope scope, Managed_ID id, u64 size)
|
||||||
#define custom_managed_scope_attachment_erase_sig() b32 custom_managed_scope_attachment_erase(Application_Links* app, Managed_Scope scope, Managed_ID id)
|
#define custom_managed_scope_attachment_erase_sig() b32 custom_managed_scope_attachment_erase(Application_Links* app, Managed_Scope scope, Managed_ID id)
|
||||||
#define custom_alloc_managed_memory_in_scope_sig() Managed_Object custom_alloc_managed_memory_in_scope(Application_Links* app, Managed_Scope scope, i32 item_size, i32 count)
|
#define custom_alloc_managed_memory_in_scope_sig() Managed_Object custom_alloc_managed_memory_in_scope(Application_Links* app, Managed_Scope scope, i32 item_size, i32 count)
|
||||||
#define custom_alloc_buffer_markers_on_buffer_sig() Managed_Object custom_alloc_buffer_markers_on_buffer(Application_Links* app, Buffer_ID buffer_id, i32 count, Managed_Scope* optional_extra_scope)
|
#define custom_alloc_buffer_markers_on_buffer_sig() Managed_Object custom_alloc_buffer_markers_on_buffer(Application_Links* app, Buffer_ID buffer_id, i32 count, Managed_Scope* optional_extra_scope)
|
||||||
|
@ -122,7 +122,7 @@
|
||||||
#define custom_set_current_input_sig() void custom_set_current_input(Application_Links* app, User_Input* input)
|
#define custom_set_current_input_sig() void custom_set_current_input(Application_Links* app, User_Input* input)
|
||||||
#define custom_leave_current_input_unhandled_sig() void custom_leave_current_input_unhandled(Application_Links* app)
|
#define custom_leave_current_input_unhandled_sig() void custom_leave_current_input_unhandled(Application_Links* app)
|
||||||
#define custom_set_custom_hook_sig() void custom_set_custom_hook(Application_Links* app, Hook_ID hook_id, Void_Func* func_ptr)
|
#define custom_set_custom_hook_sig() void custom_set_custom_hook(Application_Links* app, Hook_ID hook_id, Void_Func* func_ptr)
|
||||||
#define custom_set_custom_hook_memory_size_sig() b32 custom_set_custom_hook_memory_size(Application_Links* app, Hook_ID hook_id, umem size)
|
#define custom_set_custom_hook_memory_size_sig() b32 custom_set_custom_hook_memory_size(Application_Links* app, Hook_ID hook_id, u64 size)
|
||||||
#define custom_get_mouse_state_sig() Mouse_State custom_get_mouse_state(Application_Links* app)
|
#define custom_get_mouse_state_sig() Mouse_State custom_get_mouse_state(Application_Links* app)
|
||||||
#define custom_get_active_query_bars_sig() b32 custom_get_active_query_bars(Application_Links* app, View_ID view_id, i32 max_result_count, Query_Bar_Ptr_Array* array_out)
|
#define custom_get_active_query_bars_sig() b32 custom_get_active_query_bars(Application_Links* app, View_ID view_id, i32 max_result_count, Query_Bar_Ptr_Array* array_out)
|
||||||
#define custom_start_query_bar_sig() b32 custom_start_query_bar(Application_Links* app, Query_Bar* bar, u32 flags)
|
#define custom_start_query_bar_sig() b32 custom_start_query_bar(Application_Links* app, Query_Bar* bar, u32 flags)
|
||||||
|
@ -164,7 +164,7 @@
|
||||||
#define custom_text_layout_get_visible_range_sig() Range_i64 custom_text_layout_get_visible_range(Application_Links* app, Text_Layout_ID text_layout_id)
|
#define custom_text_layout_get_visible_range_sig() Range_i64 custom_text_layout_get_visible_range(Application_Links* app, Text_Layout_ID text_layout_id)
|
||||||
#define custom_text_layout_line_on_screen_sig() Range_f32 custom_text_layout_line_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 line_number)
|
#define custom_text_layout_line_on_screen_sig() Range_f32 custom_text_layout_line_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 line_number)
|
||||||
#define custom_text_layout_character_on_screen_sig() Rect_f32 custom_text_layout_character_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 pos)
|
#define custom_text_layout_character_on_screen_sig() Rect_f32 custom_text_layout_character_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 pos)
|
||||||
#define custom_paint_text_color_sig() void custom_paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, ARGB_Color color)
|
#define custom_paint_text_color_sig() void custom_paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Range_i64 range, ARGB_Color color)
|
||||||
#define custom_text_layout_free_sig() b32 custom_text_layout_free(Application_Links* app, Text_Layout_ID text_layout_id)
|
#define custom_text_layout_free_sig() b32 custom_text_layout_free(Application_Links* app, Text_Layout_ID text_layout_id)
|
||||||
#define custom_draw_text_layout_sig() void custom_draw_text_layout(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color)
|
#define custom_draw_text_layout_sig() void custom_draw_text_layout(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color)
|
||||||
#define custom_open_color_picker_sig() void custom_open_color_picker(Application_Links* app, Color_Picker* picker)
|
#define custom_open_color_picker_sig() void custom_open_color_picker(Application_Links* app, Color_Picker* picker)
|
||||||
|
@ -278,7 +278,7 @@ typedef Base_Allocator* custom_managed_scope_allocator_type(Application_Links* a
|
||||||
typedef u64 custom_managed_id_group_highest_id_type(Application_Links* app, String_Const_u8 group);
|
typedef u64 custom_managed_id_group_highest_id_type(Application_Links* app, String_Const_u8 group);
|
||||||
typedef Managed_ID custom_managed_id_declare_type(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
typedef Managed_ID custom_managed_id_declare_type(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
||||||
typedef Managed_ID custom_managed_id_get_type(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
typedef Managed_ID custom_managed_id_get_type(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
||||||
typedef void* custom_managed_scope_get_attachment_type(Application_Links* app, Managed_Scope scope, Managed_ID id, umem size);
|
typedef void* custom_managed_scope_get_attachment_type(Application_Links* app, Managed_Scope scope, Managed_ID id, u64 size);
|
||||||
typedef b32 custom_managed_scope_attachment_erase_type(Application_Links* app, Managed_Scope scope, Managed_ID id);
|
typedef b32 custom_managed_scope_attachment_erase_type(Application_Links* app, Managed_Scope scope, Managed_ID id);
|
||||||
typedef Managed_Object custom_alloc_managed_memory_in_scope_type(Application_Links* app, Managed_Scope scope, i32 item_size, i32 count);
|
typedef Managed_Object custom_alloc_managed_memory_in_scope_type(Application_Links* app, Managed_Scope scope, i32 item_size, i32 count);
|
||||||
typedef Managed_Object custom_alloc_buffer_markers_on_buffer_type(Application_Links* app, Buffer_ID buffer_id, i32 count, Managed_Scope* optional_extra_scope);
|
typedef Managed_Object custom_alloc_buffer_markers_on_buffer_type(Application_Links* app, Buffer_ID buffer_id, i32 count, Managed_Scope* optional_extra_scope);
|
||||||
|
@ -296,7 +296,7 @@ typedef User_Input custom_get_current_input_type(Application_Links* app);
|
||||||
typedef void custom_set_current_input_type(Application_Links* app, User_Input* input);
|
typedef void custom_set_current_input_type(Application_Links* app, User_Input* input);
|
||||||
typedef void custom_leave_current_input_unhandled_type(Application_Links* app);
|
typedef void custom_leave_current_input_unhandled_type(Application_Links* app);
|
||||||
typedef void custom_set_custom_hook_type(Application_Links* app, Hook_ID hook_id, Void_Func* func_ptr);
|
typedef void custom_set_custom_hook_type(Application_Links* app, Hook_ID hook_id, Void_Func* func_ptr);
|
||||||
typedef b32 custom_set_custom_hook_memory_size_type(Application_Links* app, Hook_ID hook_id, umem size);
|
typedef b32 custom_set_custom_hook_memory_size_type(Application_Links* app, Hook_ID hook_id, u64 size);
|
||||||
typedef Mouse_State custom_get_mouse_state_type(Application_Links* app);
|
typedef Mouse_State custom_get_mouse_state_type(Application_Links* app);
|
||||||
typedef b32 custom_get_active_query_bars_type(Application_Links* app, View_ID view_id, i32 max_result_count, Query_Bar_Ptr_Array* array_out);
|
typedef b32 custom_get_active_query_bars_type(Application_Links* app, View_ID view_id, i32 max_result_count, Query_Bar_Ptr_Array* array_out);
|
||||||
typedef b32 custom_start_query_bar_type(Application_Links* app, Query_Bar* bar, u32 flags);
|
typedef b32 custom_start_query_bar_type(Application_Links* app, Query_Bar* bar, u32 flags);
|
||||||
|
@ -338,7 +338,7 @@ typedef Buffer_ID custom_text_layout_get_buffer_type(Application_Links* app, Tex
|
||||||
typedef Range_i64 custom_text_layout_get_visible_range_type(Application_Links* app, Text_Layout_ID text_layout_id);
|
typedef Range_i64 custom_text_layout_get_visible_range_type(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||||
typedef Range_f32 custom_text_layout_line_on_screen_type(Application_Links* app, Text_Layout_ID layout_id, i64 line_number);
|
typedef Range_f32 custom_text_layout_line_on_screen_type(Application_Links* app, Text_Layout_ID layout_id, i64 line_number);
|
||||||
typedef Rect_f32 custom_text_layout_character_on_screen_type(Application_Links* app, Text_Layout_ID layout_id, i64 pos);
|
typedef Rect_f32 custom_text_layout_character_on_screen_type(Application_Links* app, Text_Layout_ID layout_id, i64 pos);
|
||||||
typedef void custom_paint_text_color_type(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, ARGB_Color color);
|
typedef void custom_paint_text_color_type(Application_Links* app, Text_Layout_ID layout_id, Range_i64 range, ARGB_Color color);
|
||||||
typedef b32 custom_text_layout_free_type(Application_Links* app, Text_Layout_ID text_layout_id);
|
typedef b32 custom_text_layout_free_type(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||||
typedef void custom_draw_text_layout_type(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color);
|
typedef void custom_draw_text_layout_type(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color);
|
||||||
typedef void custom_open_color_picker_type(Application_Links* app, Color_Picker* picker);
|
typedef void custom_open_color_picker_type(Application_Links* app, Color_Picker* picker);
|
||||||
|
@ -629,7 +629,7 @@ internal Base_Allocator* managed_scope_allocator(Application_Links* app, Managed
|
||||||
internal u64 managed_id_group_highest_id(Application_Links* app, String_Const_u8 group);
|
internal u64 managed_id_group_highest_id(Application_Links* app, String_Const_u8 group);
|
||||||
internal Managed_ID managed_id_declare(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
internal Managed_ID managed_id_declare(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
||||||
internal Managed_ID managed_id_get(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
internal Managed_ID managed_id_get(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
||||||
internal void* managed_scope_get_attachment(Application_Links* app, Managed_Scope scope, Managed_ID id, umem size);
|
internal void* managed_scope_get_attachment(Application_Links* app, Managed_Scope scope, Managed_ID id, u64 size);
|
||||||
internal b32 managed_scope_attachment_erase(Application_Links* app, Managed_Scope scope, Managed_ID id);
|
internal b32 managed_scope_attachment_erase(Application_Links* app, Managed_Scope scope, Managed_ID id);
|
||||||
internal Managed_Object alloc_managed_memory_in_scope(Application_Links* app, Managed_Scope scope, i32 item_size, i32 count);
|
internal Managed_Object alloc_managed_memory_in_scope(Application_Links* app, Managed_Scope scope, i32 item_size, i32 count);
|
||||||
internal Managed_Object alloc_buffer_markers_on_buffer(Application_Links* app, Buffer_ID buffer_id, i32 count, Managed_Scope* optional_extra_scope);
|
internal Managed_Object alloc_buffer_markers_on_buffer(Application_Links* app, Buffer_ID buffer_id, i32 count, Managed_Scope* optional_extra_scope);
|
||||||
|
@ -647,7 +647,7 @@ internal User_Input get_current_input(Application_Links* app);
|
||||||
internal void set_current_input(Application_Links* app, User_Input* input);
|
internal void set_current_input(Application_Links* app, User_Input* input);
|
||||||
internal void leave_current_input_unhandled(Application_Links* app);
|
internal void leave_current_input_unhandled(Application_Links* app);
|
||||||
internal void set_custom_hook(Application_Links* app, Hook_ID hook_id, Void_Func* func_ptr);
|
internal void set_custom_hook(Application_Links* app, Hook_ID hook_id, Void_Func* func_ptr);
|
||||||
internal b32 set_custom_hook_memory_size(Application_Links* app, Hook_ID hook_id, umem size);
|
internal b32 set_custom_hook_memory_size(Application_Links* app, Hook_ID hook_id, u64 size);
|
||||||
internal Mouse_State get_mouse_state(Application_Links* app);
|
internal Mouse_State get_mouse_state(Application_Links* app);
|
||||||
internal b32 get_active_query_bars(Application_Links* app, View_ID view_id, i32 max_result_count, Query_Bar_Ptr_Array* array_out);
|
internal b32 get_active_query_bars(Application_Links* app, View_ID view_id, i32 max_result_count, Query_Bar_Ptr_Array* array_out);
|
||||||
internal b32 start_query_bar(Application_Links* app, Query_Bar* bar, u32 flags);
|
internal b32 start_query_bar(Application_Links* app, Query_Bar* bar, u32 flags);
|
||||||
|
@ -689,7 +689,7 @@ internal Buffer_ID text_layout_get_buffer(Application_Links* app, Text_Layout_ID
|
||||||
internal Range_i64 text_layout_get_visible_range(Application_Links* app, Text_Layout_ID text_layout_id);
|
internal Range_i64 text_layout_get_visible_range(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||||
internal Range_f32 text_layout_line_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 line_number);
|
internal Range_f32 text_layout_line_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 line_number);
|
||||||
internal Rect_f32 text_layout_character_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 pos);
|
internal Rect_f32 text_layout_character_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 pos);
|
||||||
internal void paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, ARGB_Color color);
|
internal void paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Range_i64 range, ARGB_Color color);
|
||||||
internal b32 text_layout_free(Application_Links* app, Text_Layout_ID text_layout_id);
|
internal b32 text_layout_free(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||||
internal void draw_text_layout(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color);
|
internal void draw_text_layout(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color);
|
||||||
internal void open_color_picker(Application_Links* app, Color_Picker* picker);
|
internal void open_color_picker(Application_Links* app, Color_Picker* picker);
|
||||||
|
|
|
@ -632,7 +632,7 @@ API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("manage
|
||||||
api_param(arena, call, "Application_Links*", "app");
|
api_param(arena, call, "Application_Links*", "app");
|
||||||
api_param(arena, call, "Managed_Scope", "scope");
|
api_param(arena, call, "Managed_Scope", "scope");
|
||||||
api_param(arena, call, "Managed_ID", "id");
|
api_param(arena, call, "Managed_ID", "id");
|
||||||
api_param(arena, call, "umem", "size");
|
api_param(arena, call, "u64", "size");
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("managed_scope_attachment_erase"), string_u8_litexpr("b32"), string_u8_litexpr(""));
|
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("managed_scope_attachment_erase"), string_u8_litexpr("b32"), string_u8_litexpr(""));
|
||||||
|
@ -733,7 +733,7 @@ api_param(arena, call, "Void_Func*", "func_ptr");
|
||||||
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("set_custom_hook_memory_size"), string_u8_litexpr("b32"), string_u8_litexpr(""));
|
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("set_custom_hook_memory_size"), string_u8_litexpr("b32"), string_u8_litexpr(""));
|
||||||
api_param(arena, call, "Application_Links*", "app");
|
api_param(arena, call, "Application_Links*", "app");
|
||||||
api_param(arena, call, "Hook_ID", "hook_id");
|
api_param(arena, call, "Hook_ID", "hook_id");
|
||||||
api_param(arena, call, "umem", "size");
|
api_param(arena, call, "u64", "size");
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("get_mouse_state"), string_u8_litexpr("Mouse_State"), string_u8_litexpr(""));
|
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("get_mouse_state"), string_u8_litexpr("Mouse_State"), string_u8_litexpr(""));
|
||||||
|
|
|
@ -104,7 +104,7 @@ api(custom) function Base_Allocator* managed_scope_allocator(Application_Links*
|
||||||
api(custom) function u64 managed_id_group_highest_id(Application_Links* app, String_Const_u8 group);
|
api(custom) function u64 managed_id_group_highest_id(Application_Links* app, String_Const_u8 group);
|
||||||
api(custom) function Managed_ID managed_id_declare(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
api(custom) function Managed_ID managed_id_declare(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
||||||
api(custom) function Managed_ID managed_id_get(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
api(custom) function Managed_ID managed_id_get(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
||||||
api(custom) function void* managed_scope_get_attachment(Application_Links* app, Managed_Scope scope, Managed_ID id, umem size);
|
api(custom) function void* managed_scope_get_attachment(Application_Links* app, Managed_Scope scope, Managed_ID id, u64 size);
|
||||||
api(custom) function b32 managed_scope_attachment_erase(Application_Links* app, Managed_Scope scope, Managed_ID id);
|
api(custom) function b32 managed_scope_attachment_erase(Application_Links* app, Managed_Scope scope, Managed_ID id);
|
||||||
api(custom) function Managed_Object alloc_managed_memory_in_scope(Application_Links* app, Managed_Scope scope, i32 item_size, i32 count);
|
api(custom) function Managed_Object alloc_managed_memory_in_scope(Application_Links* app, Managed_Scope scope, i32 item_size, i32 count);
|
||||||
api(custom) function Managed_Object alloc_buffer_markers_on_buffer(Application_Links* app, Buffer_ID buffer_id, i32 count, Managed_Scope* optional_extra_scope);
|
api(custom) function Managed_Object alloc_buffer_markers_on_buffer(Application_Links* app, Buffer_ID buffer_id, i32 count, Managed_Scope* optional_extra_scope);
|
||||||
|
@ -122,7 +122,7 @@ api(custom) function User_Input get_current_input(Application_Links* app);
|
||||||
api(custom) function void set_current_input(Application_Links* app, User_Input* input);
|
api(custom) function void set_current_input(Application_Links* app, User_Input* input);
|
||||||
api(custom) function void leave_current_input_unhandled(Application_Links* app);
|
api(custom) function void leave_current_input_unhandled(Application_Links* app);
|
||||||
api(custom) function void set_custom_hook(Application_Links* app, Hook_ID hook_id, Void_Func* func_ptr);
|
api(custom) function void set_custom_hook(Application_Links* app, Hook_ID hook_id, Void_Func* func_ptr);
|
||||||
api(custom) function b32 set_custom_hook_memory_size(Application_Links* app, Hook_ID hook_id, umem size);
|
api(custom) function b32 set_custom_hook_memory_size(Application_Links* app, Hook_ID hook_id, u64 size);
|
||||||
api(custom) function Mouse_State get_mouse_state(Application_Links* app);
|
api(custom) function Mouse_State get_mouse_state(Application_Links* app);
|
||||||
api(custom) function b32 get_active_query_bars(Application_Links* app, View_ID view_id, i32 max_result_count, Query_Bar_Ptr_Array* array_out);
|
api(custom) function b32 get_active_query_bars(Application_Links* app, View_ID view_id, i32 max_result_count, Query_Bar_Ptr_Array* array_out);
|
||||||
api(custom) function b32 start_query_bar(Application_Links* app, Query_Bar* bar, u32 flags);
|
api(custom) function b32 start_query_bar(Application_Links* app, Query_Bar* bar, u32 flags);
|
||||||
|
@ -164,7 +164,7 @@ api(custom) function Buffer_ID text_layout_get_buffer(Application_Links* app, Te
|
||||||
api(custom) function Range_i64 text_layout_get_visible_range(Application_Links* app, Text_Layout_ID text_layout_id);
|
api(custom) function Range_i64 text_layout_get_visible_range(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||||
api(custom) function Range_f32 text_layout_line_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 line_number);
|
api(custom) function Range_f32 text_layout_line_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 line_number);
|
||||||
api(custom) function Rect_f32 text_layout_character_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 pos);
|
api(custom) function Rect_f32 text_layout_character_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 pos);
|
||||||
api(custom) function void paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, ARGB_Color color);
|
api(custom) function void paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Range_i64 range, ARGB_Color color);
|
||||||
api(custom) function b32 text_layout_free(Application_Links* app, Text_Layout_ID text_layout_id);
|
api(custom) function b32 text_layout_free(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||||
api(custom) function void draw_text_layout(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color);
|
api(custom) function void draw_text_layout(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color);
|
||||||
api(custom) function void open_color_picker(Application_Links* app, Color_Picker* picker);
|
api(custom) function void open_color_picker(Application_Links* app, Color_Picker* picker);
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
#define FCODER_LEX_GEN_HAND_WRITTEN
|
#define FCODER_LEX_GEN_HAND_WRITTEN
|
||||||
|
|
||||||
internal u64
|
internal u64
|
||||||
lexeme_hash(u64 seed, u8 *ptr, umem size){
|
lexeme_hash(u64 seed, u8 *ptr, u64 size){
|
||||||
u64 result = 0;
|
u64 result = 0;
|
||||||
for (umem i = 0; i < size; i += 1, ptr += 1){
|
for (u64 i = 0; i < size; i += 1, ptr += 1){
|
||||||
result ^= ((*ptr) ^ result*59) + seed;
|
result ^= ((*ptr) ^ result*59) + seed;
|
||||||
}
|
}
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -13,7 +13,7 @@ lexeme_hash(u64 seed, u8 *ptr, umem size){
|
||||||
internal Lexeme_Table_Lookup
|
internal Lexeme_Table_Lookup
|
||||||
lexeme_table_lookup(u64 *hash_array, String_Const_u8 *key_array,
|
lexeme_table_lookup(u64 *hash_array, String_Const_u8 *key_array,
|
||||||
Lexeme_Table_Value *value_array, i32 slot_count, u64 seed,
|
Lexeme_Table_Value *value_array, i32 slot_count, u64 seed,
|
||||||
u8 *ptr, umem size){
|
u8 *ptr, u64 size){
|
||||||
Lexeme_Table_Lookup result = {};
|
Lexeme_Table_Lookup result = {};
|
||||||
u64 hash = lexeme_hash(seed, ptr, size);
|
u64 hash = lexeme_hash(seed, ptr, size);
|
||||||
u64 comparison_hash = hash | 1;
|
u64 comparison_hash = hash | 1;
|
||||||
|
@ -3698,8 +3698,8 @@ goto state_label_47; // raw_string_try_delim
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
state_label_47: // raw_string_try_delim
|
state_label_47: // raw_string_try_delim
|
||||||
umem delim_length = state.delim_one_past_last - state.delim_first;
|
u64 delim_length = state.delim_one_past_last - state.delim_first;
|
||||||
umem parse_length = 0;
|
u64 parse_length = 0;
|
||||||
for (;;){
|
for (;;){
|
||||||
if (parse_length == delim_length){
|
if (parse_length == delim_length){
|
||||||
goto state_label_48; // raw_string_try_quote
|
goto state_label_48; // raw_string_try_quote
|
||||||
|
|
|
@ -37,9 +37,9 @@
|
||||||
#define system_condition_variable_wait_sig() void system_condition_variable_wait(System_Condition_Variable cv, System_Mutex mutex)
|
#define system_condition_variable_wait_sig() void system_condition_variable_wait(System_Condition_Variable cv, System_Mutex mutex)
|
||||||
#define system_condition_variable_signal_sig() void system_condition_variable_signal(System_Condition_Variable cv)
|
#define system_condition_variable_signal_sig() void system_condition_variable_signal(System_Condition_Variable cv)
|
||||||
#define system_condition_variable_free_sig() void system_condition_variable_free(System_Condition_Variable cv)
|
#define system_condition_variable_free_sig() void system_condition_variable_free(System_Condition_Variable cv)
|
||||||
#define system_memory_allocate_sig() void* system_memory_allocate(umem size, String_Const_u8 location)
|
#define system_memory_allocate_sig() void* system_memory_allocate(u64 size, String_Const_u8 location)
|
||||||
#define system_memory_set_protection_sig() b32 system_memory_set_protection(void* ptr, umem size, u32 flags)
|
#define system_memory_set_protection_sig() b32 system_memory_set_protection(void* ptr, u64 size, u32 flags)
|
||||||
#define system_memory_free_sig() void system_memory_free(void* ptr, umem size)
|
#define system_memory_free_sig() void system_memory_free(void* ptr, u64 size)
|
||||||
#define system_memory_annotation_sig() Memory_Annotation system_memory_annotation(Arena* arena)
|
#define system_memory_annotation_sig() Memory_Annotation system_memory_annotation(Arena* arena)
|
||||||
#define system_show_mouse_cursor_sig() void system_show_mouse_cursor(i32 show)
|
#define system_show_mouse_cursor_sig() void system_show_mouse_cursor(i32 show)
|
||||||
#define system_set_fullscreen_sig() b32 system_set_fullscreen(b32 full_screen)
|
#define system_set_fullscreen_sig() b32 system_set_fullscreen(b32 full_screen)
|
||||||
|
@ -84,9 +84,9 @@ typedef System_Condition_Variable system_condition_variable_make_type(void);
|
||||||
typedef void system_condition_variable_wait_type(System_Condition_Variable cv, System_Mutex mutex);
|
typedef void system_condition_variable_wait_type(System_Condition_Variable cv, System_Mutex mutex);
|
||||||
typedef void system_condition_variable_signal_type(System_Condition_Variable cv);
|
typedef void system_condition_variable_signal_type(System_Condition_Variable cv);
|
||||||
typedef void system_condition_variable_free_type(System_Condition_Variable cv);
|
typedef void system_condition_variable_free_type(System_Condition_Variable cv);
|
||||||
typedef void* system_memory_allocate_type(umem size, String_Const_u8 location);
|
typedef void* system_memory_allocate_type(u64 size, String_Const_u8 location);
|
||||||
typedef b32 system_memory_set_protection_type(void* ptr, umem size, u32 flags);
|
typedef b32 system_memory_set_protection_type(void* ptr, u64 size, u32 flags);
|
||||||
typedef void system_memory_free_type(void* ptr, umem size);
|
typedef void system_memory_free_type(void* ptr, u64 size);
|
||||||
typedef Memory_Annotation system_memory_annotation_type(Arena* arena);
|
typedef Memory_Annotation system_memory_annotation_type(Arena* arena);
|
||||||
typedef void system_show_mouse_cursor_type(i32 show);
|
typedef void system_show_mouse_cursor_type(i32 show);
|
||||||
typedef b32 system_set_fullscreen_type(b32 full_screen);
|
typedef b32 system_set_fullscreen_type(b32 full_screen);
|
||||||
|
@ -181,9 +181,9 @@ internal System_Condition_Variable system_condition_variable_make(void);
|
||||||
internal void system_condition_variable_wait(System_Condition_Variable cv, System_Mutex mutex);
|
internal void system_condition_variable_wait(System_Condition_Variable cv, System_Mutex mutex);
|
||||||
internal void system_condition_variable_signal(System_Condition_Variable cv);
|
internal void system_condition_variable_signal(System_Condition_Variable cv);
|
||||||
internal void system_condition_variable_free(System_Condition_Variable cv);
|
internal void system_condition_variable_free(System_Condition_Variable cv);
|
||||||
internal void* system_memory_allocate(umem size, String_Const_u8 location);
|
internal void* system_memory_allocate(u64 size, String_Const_u8 location);
|
||||||
internal b32 system_memory_set_protection(void* ptr, umem size, u32 flags);
|
internal b32 system_memory_set_protection(void* ptr, u64 size, u32 flags);
|
||||||
internal void system_memory_free(void* ptr, umem size);
|
internal void system_memory_free(void* ptr, u64 size);
|
||||||
internal Memory_Annotation system_memory_annotation(Arena* arena);
|
internal Memory_Annotation system_memory_annotation(Arena* arena);
|
||||||
internal void system_show_mouse_cursor(i32 show);
|
internal void system_show_mouse_cursor(i32 show);
|
||||||
internal b32 system_set_fullscreen(b32 full_screen);
|
internal b32 system_set_fullscreen(b32 full_screen);
|
||||||
|
|
|
@ -181,19 +181,19 @@ api_param(arena, call, "System_Condition_Variable", "cv");
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("memory_allocate"), string_u8_litexpr("void*"), string_u8_litexpr(""));
|
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("memory_allocate"), string_u8_litexpr("void*"), string_u8_litexpr(""));
|
||||||
api_param(arena, call, "umem", "size");
|
api_param(arena, call, "u64", "size");
|
||||||
api_param(arena, call, "String_Const_u8", "location");
|
api_param(arena, call, "String_Const_u8", "location");
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("memory_set_protection"), string_u8_litexpr("b32"), string_u8_litexpr(""));
|
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("memory_set_protection"), string_u8_litexpr("b32"), string_u8_litexpr(""));
|
||||||
api_param(arena, call, "void*", "ptr");
|
api_param(arena, call, "void*", "ptr");
|
||||||
api_param(arena, call, "umem", "size");
|
api_param(arena, call, "u64", "size");
|
||||||
api_param(arena, call, "u32", "flags");
|
api_param(arena, call, "u32", "flags");
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("memory_free"), string_u8_litexpr("void"), string_u8_litexpr(""));
|
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("memory_free"), string_u8_litexpr("void"), string_u8_litexpr(""));
|
||||||
api_param(arena, call, "void*", "ptr");
|
api_param(arena, call, "void*", "ptr");
|
||||||
api_param(arena, call, "umem", "size");
|
api_param(arena, call, "u64", "size");
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("memory_annotation"), string_u8_litexpr("Memory_Annotation"), string_u8_litexpr(""));
|
API_Call *call = api_call_with_location(arena, result, string_u8_litexpr("memory_annotation"), string_u8_litexpr("Memory_Annotation"), string_u8_litexpr(""));
|
||||||
|
|
|
@ -37,9 +37,9 @@ api(system) function System_Condition_Variable condition_variable_make(void);
|
||||||
api(system) function void condition_variable_wait(System_Condition_Variable cv, System_Mutex mutex);
|
api(system) function void condition_variable_wait(System_Condition_Variable cv, System_Mutex mutex);
|
||||||
api(system) function void condition_variable_signal(System_Condition_Variable cv);
|
api(system) function void condition_variable_signal(System_Condition_Variable cv);
|
||||||
api(system) function void condition_variable_free(System_Condition_Variable cv);
|
api(system) function void condition_variable_free(System_Condition_Variable cv);
|
||||||
api(system) function void* memory_allocate(umem size, String_Const_u8 location);
|
api(system) function void* memory_allocate(u64 size, String_Const_u8 location);
|
||||||
api(system) function b32 memory_set_protection(void* ptr, umem size, u32 flags);
|
api(system) function b32 memory_set_protection(void* ptr, u64 size, u32 flags);
|
||||||
api(system) function void memory_free(void* ptr, umem size);
|
api(system) function void memory_free(void* ptr, u64 size);
|
||||||
api(system) function Memory_Annotation memory_annotation(Arena* arena);
|
api(system) function Memory_Annotation memory_annotation(Arena* arena);
|
||||||
api(system) function void show_mouse_cursor(i32 show);
|
api(system) function void show_mouse_cursor(i32 show);
|
||||||
api(system) function b32 set_fullscreen(b32 full_screen);
|
api(system) function b32 set_fullscreen(b32 full_screen);
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
#define FCODER_LEX_GEN_HAND_WRITTEN
|
#define FCODER_LEX_GEN_HAND_WRITTEN
|
||||||
|
|
||||||
internal u64
|
internal u64
|
||||||
lexeme_hash(u64 seed, u8 *ptr, umem size){
|
lexeme_hash(u64 seed, u8 *ptr, u64 size){
|
||||||
u64 result = 0;
|
u64 result = 0;
|
||||||
for (umem i = 0; i < size; i += 1, ptr += 1){
|
for (u64 i = 0; i < size; i += 1, ptr += 1){
|
||||||
result ^= ((*ptr) ^ result*59) + seed;
|
result ^= ((*ptr) ^ result*59) + seed;
|
||||||
}
|
}
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -13,7 +13,7 @@ lexeme_hash(u64 seed, u8 *ptr, umem size){
|
||||||
internal Lexeme_Table_Lookup
|
internal Lexeme_Table_Lookup
|
||||||
lexeme_table_lookup(u64 *hash_array, String_Const_u8 *key_array,
|
lexeme_table_lookup(u64 *hash_array, String_Const_u8 *key_array,
|
||||||
Lexeme_Table_Value *value_array, i32 slot_count, u64 seed,
|
Lexeme_Table_Value *value_array, i32 slot_count, u64 seed,
|
||||||
u8 *ptr, umem size){
|
u8 *ptr, u64 size){
|
||||||
Lexeme_Table_Lookup result = {};
|
Lexeme_Table_Lookup result = {};
|
||||||
u64 hash = lexeme_hash(seed, ptr, size);
|
u64 hash = lexeme_hash(seed, ptr, size);
|
||||||
u64 comparison_hash = hash | 1;
|
u64 comparison_hash = hash | 1;
|
||||||
|
|
|
@ -921,7 +921,7 @@ smi_input_set_construct(Arena *arena, String_Const_u8 characters){
|
||||||
Input_Set result = {};
|
Input_Set result = {};
|
||||||
result.count = (i32)characters.size;
|
result.count = (i32)characters.size;
|
||||||
result.inputs = push_array_zero(arena, u16, result.count);
|
result.inputs = push_array_zero(arena, u16, result.count);
|
||||||
for (umem i = 0; i < characters.size; i += 1){
|
for (u64 i = 0; i < characters.size; i += 1){
|
||||||
result.inputs[i] = (u16)characters.str[i];
|
result.inputs[i] = (u16)characters.str[i];
|
||||||
}
|
}
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -1270,7 +1270,7 @@ internal b32
|
||||||
sm_op(char *lexeme){
|
sm_op(char *lexeme){
|
||||||
String_Const_u8 l = SCu8(lexeme);
|
String_Const_u8 l = SCu8(lexeme);
|
||||||
List_String_Const_u8 name_list = {};
|
List_String_Const_u8 name_list = {};
|
||||||
for (umem i = 0; i < l.size; i += 1){
|
for (u64 i = 0; i < l.size; i += 1){
|
||||||
Table_Lookup lookup = table_lookup(&helper_ctx.char_to_name, l.str[i]);
|
Table_Lookup lookup = table_lookup(&helper_ctx.char_to_name, l.str[i]);
|
||||||
// If this fails first check that all the characters in the lexeme are named!
|
// If this fails first check that all the characters in the lexeme are named!
|
||||||
Assert(lookup.found_match);
|
Assert(lookup.found_match);
|
||||||
|
@ -1681,7 +1681,7 @@ smo_remove_ops_without_prefix(Operator_Set *set, char *prefix){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
smo_ops_string_skip(Operator_Set *set, umem size){
|
smo_ops_string_skip(Operator_Set *set, u64 size){
|
||||||
Operator_Set new_set = {};
|
Operator_Set new_set = {};
|
||||||
new_set.lexeme_to_ptr = make_table_Data_u64(helper_ctx.primary_ctx.allocator, set->count*2);
|
new_set.lexeme_to_ptr = make_table_Data_u64(helper_ctx.primary_ctx.allocator, set->count*2);
|
||||||
|
|
||||||
|
@ -1756,7 +1756,7 @@ smo_op_set_lexer_root(Operator_Set *set, State *machine_root, String_Const_u8 fa
|
||||||
node != 0;
|
node != 0;
|
||||||
node = node->next){
|
node = node->next){
|
||||||
String_Const_u8 lexeme = node->op;
|
String_Const_u8 lexeme = node->op;
|
||||||
for (umem i = 1; i < lexeme.size; i += 1){
|
for (u64 i = 1; i < lexeme.size; i += 1){
|
||||||
String_Const_u8 prefix = string_prefix(lexeme, i);
|
String_Const_u8 prefix = string_prefix(lexeme, i);
|
||||||
Table_Lookup lookup = table_lookup(&string_to_state, make_data(prefix.str, prefix.size));
|
Table_Lookup lookup = table_lookup(&string_to_state, make_data(prefix.str, prefix.size));
|
||||||
if (!lookup.found_match){
|
if (!lookup.found_match){
|
||||||
|
@ -1833,7 +1833,7 @@ smo_op_set_lexer_root(Operator_Set *set, State *machine_root, String_Const_u8 fa
|
||||||
node != 0;
|
node != 0;
|
||||||
node = node->next){
|
node = node->next){
|
||||||
String_Const_u8 lexeme = node->op;
|
String_Const_u8 lexeme = node->op;
|
||||||
for (umem i = 1; i < lexeme.size; i += 1){
|
for (u64 i = 1; i < lexeme.size; i += 1){
|
||||||
String_Const_u8 prefix = string_prefix(lexeme, i);
|
String_Const_u8 prefix = string_prefix(lexeme, i);
|
||||||
Table_Lookup lookup = table_lookup(&string_to_state, make_data(prefix.str, prefix.size));
|
Table_Lookup lookup = table_lookup(&string_to_state, make_data(prefix.str, prefix.size));
|
||||||
Assert(lookup.found_match);
|
Assert(lookup.found_match);
|
||||||
|
@ -1924,9 +1924,9 @@ smh_typical_tokens(void){
|
||||||
|
|
||||||
internal String_Const_u8
|
internal String_Const_u8
|
||||||
string_char_subtract(String_Const_u8 a, String_Const_u8 b){
|
string_char_subtract(String_Const_u8 a, String_Const_u8 b){
|
||||||
for (umem i = 0; i < b.size; i += 1){
|
for (u64 i = 0; i < b.size; i += 1){
|
||||||
u8 c = b.str[i];
|
u8 c = b.str[i];
|
||||||
for (umem j = 0; j < a.size;){
|
for (u64 j = 0; j < a.size;){
|
||||||
if (a.str[j] == c){
|
if (a.str[j] == c){
|
||||||
a.str[j] = a.str[a.size - 1];
|
a.str[j] = a.str[a.size - 1];
|
||||||
a.size -= 1;
|
a.size -= 1;
|
||||||
|
@ -3201,7 +3201,7 @@ gen_keyword_table(Arena *scratch, Token_Kind_Set tokens, Keyword_Set keywords, F
|
||||||
fprintf(out, "u8 %.*s_key_array_%d[] = {",
|
fprintf(out, "u8 %.*s_key_array_%d[] = {",
|
||||||
string_expand(keywords.pretty_name), i);
|
string_expand(keywords.pretty_name), i);
|
||||||
String_Const_u8 lexeme = key_layout.slots[i]->lexeme;
|
String_Const_u8 lexeme = key_layout.slots[i]->lexeme;
|
||||||
for (umem j = 0; j < lexeme.size; j += 1){
|
for (u64 j = 0; j < lexeme.size; j += 1){
|
||||||
fprintf(out, "0x%02x,", lexeme.str[j]);
|
fprintf(out, "0x%02x,", lexeme.str[j]);
|
||||||
}
|
}
|
||||||
fprintf(out, "};\n");
|
fprintf(out, "};\n");
|
||||||
|
@ -3744,8 +3744,8 @@ gen_contiguous_control_flow_lexer(Arena *scratch, Token_Kind_Set tokens, Lexer_M
|
||||||
Transition *failure_trans = trans->next;
|
Transition *failure_trans = trans->next;
|
||||||
Assert(failure_trans->condition.kind == TransitionCaseKind_DelimMatchFail);
|
Assert(failure_trans->condition.kind == TransitionCaseKind_DelimMatchFail);
|
||||||
|
|
||||||
fprintf(out, "umem delim_length = state.delim_one_past_last - state.delim_first;\n");
|
fprintf(out, "u64 delim_length = state.delim_one_past_last - state.delim_first;\n");
|
||||||
fprintf(out, "umem parse_length = 0;\n");
|
fprintf(out, "u64 parse_length = 0;\n");
|
||||||
fprintf(out, "for (;;){\n");
|
fprintf(out, "for (;;){\n");
|
||||||
{
|
{
|
||||||
fprintf(out, "if (parse_length == delim_length){\n");
|
fprintf(out, "if (parse_length == delim_length){\n");
|
||||||
|
|
|
@ -22,9 +22,9 @@ make_doc_function(Arena *arena, Doc_Cluster *cluster, API_Call *call){
|
||||||
string_expand(call->return_type),
|
string_expand(call->return_type),
|
||||||
string_expand(call->name));
|
string_expand(call->name));
|
||||||
|
|
||||||
umem indent_size = call->name.size + 1;
|
u64 indent_size = call->name.size + 1;
|
||||||
u8 *buffer = push_array(arena, u8, indent_size);
|
u8 *buffer = push_array(arena, u8, indent_size);
|
||||||
for (umem i = 0; i < indent_size; i += 1){
|
for (u64 i = 0; i < indent_size; i += 1){
|
||||||
buffer[i] = ' ';
|
buffer[i] = ' ';
|
||||||
}
|
}
|
||||||
String_Const_u8 indent = SCu8(buffer, indent_size);
|
String_Const_u8 indent = SCu8(buffer, indent_size);
|
||||||
|
|
|
@ -224,7 +224,7 @@ typedef void GL_Debug_Function(GLenum src,
|
||||||
void *user_data);
|
void *user_data);
|
||||||
typedef GL_Debug_Function *GLDEBUGPROC;
|
typedef GL_Debug_Function *GLDEBUGPROC;
|
||||||
|
|
||||||
#define GL_FUNC(N,R,P) typedef R (N##_Function)P; N##_Function *N = 0;
|
#define GL_FUNC(N,R,P) typedef R (CALL_CONVENTION N##_Function)P; N##_Function *N = 0;
|
||||||
#include "4ed_opengl_funcs.h"
|
#include "4ed_opengl_funcs.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -55,7 +55,7 @@ gl__fill_texture(Texture_Kind texture_kind, u32 texture, Vec3_i32 p, Vec3_i32 di
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void CALL_CONVENTION
|
internal void
|
||||||
gl__error_callback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, char *message, void *userParam){
|
gl__error_callback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, char *message, void *userParam){
|
||||||
switch (id){
|
switch (id){
|
||||||
case 131218:
|
case 131218:
|
||||||
|
@ -189,7 +189,7 @@ gl__make_program(char *header, char *vertex, char *fragment){
|
||||||
glGetShaderInfoLog(fragment_shader, sizeof(fragment_errors), &ignore, fragment_errors);
|
glGetShaderInfoLog(fragment_shader, sizeof(fragment_errors), &ignore, fragment_errors);
|
||||||
glGetProgramInfoLog(program, sizeof(program_errors), &ignore, program_errors);
|
glGetProgramInfoLog(program, sizeof(program_errors), &ignore, program_errors);
|
||||||
#if SHIP_MODE
|
#if SHIP_MODE
|
||||||
os_popup_window(string_u8_litexpr("Error"), string_u8_litexpr("Shader compilation failed."));
|
os_popup_error("Error", "Shader compilation failed.");
|
||||||
#endif
|
#endif
|
||||||
InvalidPath;
|
InvalidPath;
|
||||||
}
|
}
|
||||||
|
|
|
@ -512,13 +512,13 @@ osx_get_loadable_fonts(Partition *part, Font_Setup_List *list){
|
||||||
#include "4ed_shared_init_logic.cpp"
|
#include "4ed_shared_init_logic.cpp"
|
||||||
|
|
||||||
external void*
|
external void*
|
||||||
osx_allocate(umem size){
|
osx_allocate(u64 size){
|
||||||
void *result = system_memory_allocate(size);
|
void *result = system_memory_allocate(size);
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
external void
|
external void
|
||||||
osx_free(void *ptr, umem size){
|
osx_free(void *ptr, u64 size){
|
||||||
system_memory_free(ptr, size);
|
system_memory_free(ptr, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ typedef struct OSX_Objective_C_Vars{
|
||||||
b32 just_posted_to_clipboard;
|
b32 just_posted_to_clipboard;
|
||||||
|
|
||||||
char *clipboard_space;
|
char *clipboard_space;
|
||||||
umem clipboard_space_max;
|
u64 clipboard_space_max;
|
||||||
|
|
||||||
b32 full_screen;
|
b32 full_screen;
|
||||||
b32 do_toggle;
|
b32 do_toggle;
|
||||||
|
@ -73,10 +73,10 @@ typedef struct OSX_Font_Match{
|
||||||
extern OSX_Objective_C_Vars osx_objc;
|
extern OSX_Objective_C_Vars osx_objc;
|
||||||
|
|
||||||
external void*
|
external void*
|
||||||
osx_allocate(umem size);
|
osx_allocate(u64 size);
|
||||||
|
|
||||||
external void
|
external void
|
||||||
osx_free(void *ptr, umem size);
|
osx_free(void *ptr, u64 size);
|
||||||
|
|
||||||
external void
|
external void
|
||||||
osx_resize(int width, int height);
|
osx_resize(int width, int height);
|
||||||
|
|
|
@ -48,7 +48,7 @@ Sys_File_Can_Be_Made_Sig(system_file_can_be_made){
|
||||||
//
|
//
|
||||||
|
|
||||||
internal void*
|
internal void*
|
||||||
system_memory_allocate_extended(void *base, umem size){
|
system_memory_allocate_extended(void *base, u64 size){
|
||||||
// NOTE(allen): This must return the exact base of the vpage.
|
// NOTE(allen): This must return the exact base of the vpage.
|
||||||
// We will count on the user to keep track of size themselves.
|
// We will count on the user to keep track of size themselves.
|
||||||
void *result = mmap(base, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
void *result = mmap(base, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
||||||
|
|
|
@ -595,6 +595,12 @@ system_cli_end_update_sig(){
|
||||||
return(close_me);
|
return(close_me);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function void
|
||||||
|
os_popup_error(char *title, char *message){
|
||||||
|
MessageBoxA(0, title, message, MB_OK);
|
||||||
|
ExitProcess(1);
|
||||||
|
}
|
||||||
|
|
||||||
#include "4ed_font_provider_freetype.h"
|
#include "4ed_font_provider_freetype.h"
|
||||||
#include "4ed_font_provider_freetype.cpp"
|
#include "4ed_font_provider_freetype.cpp"
|
||||||
|
|
||||||
|
@ -815,7 +821,7 @@ system_sleep_sig(){
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
|
||||||
internal DWORD
|
internal DWORD CALL_CONVENTION
|
||||||
win32_thread_wrapper(void *ptr){
|
win32_thread_wrapper(void *ptr){
|
||||||
Win32_Object *object = (Win32_Object*)ptr;
|
Win32_Object *object = (Win32_Object*)ptr;
|
||||||
Thread_Function *proc = object->thread.proc;
|
Thread_Function *proc = object->thread.proc;
|
||||||
|
@ -947,7 +953,7 @@ system_condition_variable_free_sig(){
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
|
||||||
internal LRESULT
|
internal LRESULT CALL_CONVENTION
|
||||||
win32_proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
|
win32_proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
|
||||||
LRESULT result = 0;
|
LRESULT result = 0;
|
||||||
Scratch_Block scratch(win32vars.tctx);
|
Scratch_Block scratch(win32vars.tctx);
|
||||||
|
@ -1320,7 +1326,7 @@ win32_gl_create_window(HWND *wnd_out, HGLRC *context_out, DWORD style, RECT rect
|
||||||
{
|
{
|
||||||
String_Const_u8 s = string_skip_whitespace(extensions);
|
String_Const_u8 s = string_skip_whitespace(extensions);
|
||||||
for (;s.size > 0;){
|
for (;s.size > 0;){
|
||||||
umem end = string_find_first_whitespace(s);
|
u64 end = string_find_first_whitespace(s);
|
||||||
String_Const_u8 m = string_prefix(s, end);
|
String_Const_u8 m = string_prefix(s, end);
|
||||||
if (string_match(m, string_u8_litexpr("WGL_EXT_framebuffer_sRGB")) ||
|
if (string_match(m, string_u8_litexpr("WGL_EXT_framebuffer_sRGB")) ||
|
||||||
string_match(m, string_u8_litexpr("WGL_ARB_framebuffer_sRGB"))){
|
string_match(m, string_u8_litexpr("WGL_ARB_framebuffer_sRGB"))){
|
||||||
|
|
|
@ -28,7 +28,7 @@ struct Memory_Annotation_Tracker_Node{
|
||||||
Memory_Annotation_Tracker_Node *next;
|
Memory_Annotation_Tracker_Node *next;
|
||||||
Memory_Annotation_Tracker_Node *prev;
|
Memory_Annotation_Tracker_Node *prev;
|
||||||
String_Const_u8 location;
|
String_Const_u8 location;
|
||||||
umem size;
|
u64 size;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Memory_Annotation_Tracker{
|
struct Memory_Annotation_Tracker{
|
||||||
|
@ -41,9 +41,9 @@ global Memory_Annotation_Tracker memory_tracker = {};
|
||||||
global CRITICAL_SECTION memory_tracker_mutex;
|
global CRITICAL_SECTION memory_tracker_mutex;
|
||||||
|
|
||||||
internal void*
|
internal void*
|
||||||
win32_memory_allocate_extended(void *base, umem size, String_Const_u8 location){
|
win32_memory_allocate_extended(void *base, u64 size, String_Const_u8 location){
|
||||||
umem adjusted_size = size + 64;
|
u64 adjusted_size = size + 64;
|
||||||
void *result = VirtualAlloc(base, adjusted_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
|
void *result = VirtualAlloc(base, (SIZE_T)adjusted_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
|
||||||
Memory_Annotation_Tracker_Node *node = (Memory_Annotation_Tracker_Node*)result;
|
Memory_Annotation_Tracker_Node *node = (Memory_Annotation_Tracker_Node*)result;
|
||||||
EnterCriticalSection(&memory_tracker_mutex);
|
EnterCriticalSection(&memory_tracker_mutex);
|
||||||
zdll_push_back(memory_tracker.first, memory_tracker.last, node);
|
zdll_push_back(memory_tracker.first, memory_tracker.last, node);
|
||||||
|
@ -89,7 +89,7 @@ system_memory_set_protection_sig(){
|
||||||
node -= 1;
|
node -= 1;
|
||||||
|
|
||||||
DWORD old_protect = 0;
|
DWORD old_protect = 0;
|
||||||
b32 result = VirtualProtect(node, size, protect, &old_protect);
|
b32 result = VirtualProtect(node, (SIZE_T)size, protect, &old_protect);
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,13 +167,13 @@ win32_remove_unc_prefix_characters(String_Const_u8 path){
|
||||||
// ?
|
// ?
|
||||||
#endif
|
#endif
|
||||||
path.size -= 7;
|
path.size -= 7;
|
||||||
memmove(path.str, path.str + 7, path.size);
|
block_copy(path.str, path.str + 7, path.size);
|
||||||
path.str[0] = '\\';
|
path.str[0] = '\\';
|
||||||
}
|
}
|
||||||
else if (string_match(string_prefix(path, 4), string_u8_litexpr("\\\\?\\"))){
|
else if (string_match(string_prefix(path, 4), string_u8_litexpr("\\\\?\\"))){
|
||||||
// TODO(allen): Same questions essentially.
|
// TODO(allen): Same questions essentially.
|
||||||
path.size -= 4;
|
path.size -= 4;
|
||||||
memmove(path.str, path.str + 4, path.size);
|
block_copy(path.str, path.str + 4, path.size);
|
||||||
}
|
}
|
||||||
return(path);
|
return(path);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,9 @@ load_paths = {
|
||||||
};
|
};
|
||||||
|
|
||||||
build_x64_win32 = "echo build: x64 & bin\\build.bat";
|
build_x64_win32 = "echo build: x64 & bin\\build.bat";
|
||||||
|
build_x86_win32 = "echo build: x86 & bin\\build.bat /DDEV_BUILD_X86";
|
||||||
build_x64_unix = "echo build: x64 & bin/build.sh";
|
build_x64_unix = "echo build: x64 & bin/build.sh";
|
||||||
|
build_x86_unix = "echo build: x86 & bin/build.sh -DDEV_BUILD_X86";
|
||||||
|
|
||||||
command_list = {
|
command_list = {
|
||||||
{ .name = "build x64",
|
{ .name = "build x64",
|
||||||
|
@ -33,6 +35,12 @@ command_list = {
|
||||||
{build_x64_unix , .os = "linux"},
|
{build_x64_unix , .os = "linux"},
|
||||||
{build_x64_unix , .os = "mac" }, }, },
|
{build_x64_unix , .os = "mac" }, }, },
|
||||||
|
|
||||||
|
{ .name = "build x86",
|
||||||
|
.out = "*compilation*", .footer_panel = true, .save_dirty_files = true,
|
||||||
|
.cmd = { {build_x86_win32, .os = "win" },
|
||||||
|
{build_x86_unix , .os = "linux"},
|
||||||
|
{build_x86_unix , .os = "mac" }, }, },
|
||||||
|
|
||||||
{ .name = "package",
|
{ .name = "package",
|
||||||
.out = "*compilation*", .footer_panel = false, .save_dirty_files = true,
|
.out = "*compilation*", .footer_panel = false, .save_dirty_files = true,
|
||||||
.cmd = { {"echo package & bin\\package.bat", .os = "win" },
|
.cmd = { {"echo package & bin\\package.bat", .os = "win" },
|
||||||
|
|
|
@ -45,6 +45,7 @@ char html_header[] = R"HTMLFOO(
|
||||||
<html lang="en-US">
|
<html lang="en-US">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
<link rel='shortcut icon' type='image/x-icon' href='https://4coder.net/4coder_icon.ico' />
|
<link rel='shortcut icon' type='image/x-icon' href='https://4coder.net/4coder_icon.ico' />
|
||||||
<link href="https://fonts.googleapis.com/css?family=Inconsolata:700&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Inconsolata:700&display=swap" rel="stylesheet">
|
||||||
<script src="search.js"></script>
|
<script src="search.js"></script>
|
||||||
|
@ -416,7 +417,7 @@ int main(){
|
||||||
Thread_Context *tctx = &tctx_;
|
Thread_Context *tctx = &tctx_;
|
||||||
|
|
||||||
String_Const_u8 self = string_u8_litexpr(__FILE__);
|
String_Const_u8 self = string_u8_litexpr(__FILE__);
|
||||||
umem code_pos = string_find_first(self, string_u8_litexpr("code"));
|
u64 code_pos = string_find_first(self, string_u8_litexpr("code"));
|
||||||
String_Const_u8 root = string_prefix(self, code_pos + 5);
|
String_Const_u8 root = string_prefix(self, code_pos + 5);
|
||||||
String_Const_u8 outside_root = string_prefix(self, code_pos);
|
String_Const_u8 outside_root = string_prefix(self, code_pos);
|
||||||
String_Const_u8 build_root = push_u8_stringf(&arena, "%.*sbuild/",
|
String_Const_u8 build_root = push_u8_stringf(&arena, "%.*sbuild/",
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<html lang="en-US">
|
<html lang="en-US">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
<link rel='shortcut icon' type='image/x-icon' href='4coder_icon.ico' />
|
<link rel='shortcut icon' type='image/x-icon' href='4coder_icon.ico' />
|
||||||
<link href="https://fonts.googleapis.com/css?family=Inconsolata:700&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Inconsolata:700&display=swap" rel="stylesheet">
|
||||||
<title>4coder</title>
|
<title>4coder</title>
|
||||||
|
|
Loading…
Reference in New Issue