mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-05 13:28:40 +00:00
renormalize line endings
This commit is contained in:
@@ -191,7 +191,7 @@ async_thread_entry_point(void *params)
|
|||||||
{
|
{
|
||||||
MutexScope(async_tick_start_mutex) cond_var_wait(async_tick_start_cond_var, async_tick_start_mutex, os_now_microseconds()+100000);
|
MutexScope(async_tick_start_mutex) cond_var_wait(async_tick_start_cond_var, async_tick_start_mutex, os_now_microseconds()+100000);
|
||||||
#if defined(FILE_STREAM_H)
|
#if defined(FILE_STREAM_H)
|
||||||
fs_async_tick();
|
fs_tick();
|
||||||
#endif
|
#endif
|
||||||
cond_var_broadcast(async_tick_stop_cond_var);
|
cond_var_broadcast(async_tick_stop_cond_var);
|
||||||
}
|
}
|
||||||
|
|||||||
+111
-111
@@ -397,7 +397,7 @@ str8_is_before(String8 a, String8 b)
|
|||||||
//~ rjf: String Slicing
|
//~ rjf: String Slicing
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
str8_substr(String8 str, Rng1U64 range)
|
str8_substr(String8 str, Rng1U64 range)
|
||||||
{
|
{
|
||||||
range.min = ClampTop(range.min, str.size);
|
range.min = ClampTop(range.min, str.size);
|
||||||
range.max = ClampTop(range.max, str.size);
|
range.max = ClampTop(range.max, str.size);
|
||||||
@@ -407,14 +407,14 @@ str8_substr(String8 str, Rng1U64 range)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
str8_prefix(String8 str, U64 size)
|
str8_prefix(String8 str, U64 size)
|
||||||
{
|
{
|
||||||
str.size = ClampTop(size, str.size);
|
str.size = ClampTop(size, str.size);
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
str8_skip(String8 str, U64 amt)
|
str8_skip(String8 str, U64 amt)
|
||||||
{
|
{
|
||||||
amt = ClampTop(amt, str.size);
|
amt = ClampTop(amt, str.size);
|
||||||
str.str += amt;
|
str.str += amt;
|
||||||
@@ -423,7 +423,7 @@ str8_skip(String8 str, U64 amt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
str8_postfix(String8 str, U64 size)
|
str8_postfix(String8 str, U64 size)
|
||||||
{
|
{
|
||||||
size = ClampTop(size, str.size);
|
size = ClampTop(size, str.size);
|
||||||
str.str = (str.str + str.size) - size;
|
str.str = (str.str + str.size) - size;
|
||||||
@@ -432,7 +432,7 @@ str8_postfix(String8 str, U64 size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
str8_chop(String8 str, U64 amt)
|
str8_chop(String8 str, U64 amt)
|
||||||
{
|
{
|
||||||
amt = ClampTop(amt, str.size);
|
amt = ClampTop(amt, str.size);
|
||||||
str.size -= amt;
|
str.size -= amt;
|
||||||
@@ -555,12 +555,12 @@ push_cstr(Arena *arena, String8 str)
|
|||||||
//- rjf: string -> integer
|
//- rjf: string -> integer
|
||||||
|
|
||||||
internal S64
|
internal S64
|
||||||
sign_from_str8(String8 string, String8 *string_tail)
|
sign_from_str8(String8 string, String8 *string_tail)
|
||||||
{
|
{
|
||||||
// count negative signs
|
// count negative signs
|
||||||
U64 neg_count = 0;
|
U64 neg_count = 0;
|
||||||
U64 i = 0;
|
U64 i = 0;
|
||||||
for(; i < string.size; i += 1)
|
for(; i < string.size; i += 1)
|
||||||
{
|
{
|
||||||
if (string.str[i] == '-'){
|
if (string.str[i] == '-'){
|
||||||
neg_count += 1;
|
neg_count += 1;
|
||||||
@@ -579,18 +579,18 @@ sign_from_str8(String8 string, String8 *string_tail)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal B32
|
internal B32
|
||||||
str8_is_integer(String8 string, U32 radix)
|
str8_is_integer(String8 string, U32 radix)
|
||||||
{
|
{
|
||||||
B32 result = 0;
|
B32 result = 0;
|
||||||
if(string.size > 0)
|
if(string.size > 0)
|
||||||
{
|
{
|
||||||
if(1 < radix && radix <= 16)
|
if(1 < radix && radix <= 16)
|
||||||
{
|
{
|
||||||
result = 1;
|
result = 1;
|
||||||
for(U64 i = 0; i < string.size; i += 1)
|
for(U64 i = 0; i < string.size; i += 1)
|
||||||
{
|
{
|
||||||
U8 c = string.str[i];
|
U8 c = string.str[i];
|
||||||
if(!(c < 0x80) || integer_symbol_reverse[c] >= radix)
|
if(!(c < 0x80) || integer_symbol_reverse[c] >= radix)
|
||||||
{
|
{
|
||||||
result = 0;
|
result = 0;
|
||||||
break;
|
break;
|
||||||
@@ -602,12 +602,12 @@ str8_is_integer(String8 string, U32 radix)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal U64
|
internal U64
|
||||||
u64_from_str8(String8 string, U32 radix)
|
u64_from_str8(String8 string, U32 radix)
|
||||||
{
|
{
|
||||||
U64 x = 0;
|
U64 x = 0;
|
||||||
if(1 < radix && radix <= 16)
|
if(1 < radix && radix <= 16)
|
||||||
{
|
{
|
||||||
for(U64 i = 0; i < string.size; i += 1)
|
for(U64 i = 0; i < string.size; i += 1)
|
||||||
{
|
{
|
||||||
x *= radix;
|
x *= radix;
|
||||||
x += integer_symbol_reverse[string.str[i]&0x7F];
|
x += integer_symbol_reverse[string.str[i]&0x7F];
|
||||||
@@ -617,7 +617,7 @@ u64_from_str8(String8 string, U32 radix)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal S64
|
internal S64
|
||||||
s64_from_str8(String8 string, U32 radix)
|
s64_from_str8(String8 string, U32 radix)
|
||||||
{
|
{
|
||||||
S64 sign = sign_from_str8(string, &string);
|
S64 sign = sign_from_str8(string, &string);
|
||||||
S64 x = (S64)u64_from_str8(string, radix) * sign;
|
S64 x = (S64)u64_from_str8(string, radix) * sign;
|
||||||
@@ -642,11 +642,11 @@ s32_from_str8(String8 string, U32 radix)
|
|||||||
|
|
||||||
internal B32
|
internal B32
|
||||||
try_u64_from_str8_c_rules(String8 string, U64 *x)
|
try_u64_from_str8_c_rules(String8 string, U64 *x)
|
||||||
{
|
{
|
||||||
// rjf: unpack radix / prefix size based on string prefix
|
// rjf: unpack radix / prefix size based on string prefix
|
||||||
U64 radix = 0;
|
U64 radix = 0;
|
||||||
U64 prefix_size = 0;
|
U64 prefix_size = 0;
|
||||||
{
|
{
|
||||||
// hex
|
// hex
|
||||||
if(str8_match(str8_prefix(string, 2), str8_lit("0x"), StringMatchFlag_CaseInsensitive))
|
if(str8_match(str8_prefix(string, 2), str8_lit("0x"), StringMatchFlag_CaseInsensitive))
|
||||||
{
|
{
|
||||||
@@ -667,16 +667,16 @@ try_u64_from_str8_c_rules(String8 string, U64 *x)
|
|||||||
{
|
{
|
||||||
radix = 10, prefix_size = 0;
|
radix = 10, prefix_size = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: convert if we can
|
// rjf: convert if we can
|
||||||
String8 integer = str8_skip(string, prefix_size);
|
String8 integer = str8_skip(string, prefix_size);
|
||||||
B32 is_integer = str8_is_integer(integer, radix);
|
B32 is_integer = str8_is_integer(integer, radix);
|
||||||
if(is_integer)
|
if(is_integer)
|
||||||
{
|
{
|
||||||
*x = u64_from_str8(integer, radix);
|
*x = u64_from_str8(integer, radix);
|
||||||
}
|
}
|
||||||
|
|
||||||
return is_integer;
|
return is_integer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -696,8 +696,8 @@ try_s64_from_str8_c_rules(String8 string, S64 *x)
|
|||||||
internal String8
|
internal String8
|
||||||
str8_from_memory_size(Arena *arena, U64 size)
|
str8_from_memory_size(Arena *arena, U64 size)
|
||||||
{
|
{
|
||||||
String8 result = {0};
|
String8 result = {0};
|
||||||
{
|
{
|
||||||
if(size < KB(1))
|
if(size < KB(1))
|
||||||
{
|
{
|
||||||
result = push_str8f(arena, "%llu Bytes", size);
|
result = push_str8f(arena, "%llu Bytes", size);
|
||||||
@@ -717,8 +717,8 @@ str8_from_memory_size(Arena *arena, U64 size)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = push_str8f(arena, "%llu.%02llu TiB", size / TB(1), ((size * 100) / TB(1)) % 100);
|
result = push_str8f(arena, "%llu.%02llu TiB", size / TB(1), ((size * 100) / TB(1)) % 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -973,7 +973,7 @@ f64_from_str8(String8 string)
|
|||||||
//~ rjf: String List Construction Functions
|
//~ rjf: String List Construction Functions
|
||||||
|
|
||||||
internal String8Node *
|
internal String8Node *
|
||||||
str8_list_push_node(String8List *list, String8Node *node)
|
str8_list_push_node(String8List *list, String8Node *node)
|
||||||
{
|
{
|
||||||
SLLQueuePush(list->first, list->last, node);
|
SLLQueuePush(list->first, list->last, node);
|
||||||
list->node_count += 1;
|
list->node_count += 1;
|
||||||
@@ -982,7 +982,7 @@ str8_list_push_node(String8List *list, String8Node *node)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8Node *
|
internal String8Node *
|
||||||
str8_list_push_node_set_string(String8List *list, String8Node *node, String8 string)
|
str8_list_push_node_set_string(String8List *list, String8Node *node, String8 string)
|
||||||
{
|
{
|
||||||
SLLQueuePush(list->first, list->last, node);
|
SLLQueuePush(list->first, list->last, node);
|
||||||
list->node_count += 1;
|
list->node_count += 1;
|
||||||
@@ -992,7 +992,7 @@ str8_list_push_node_set_string(String8List *list, String8Node *node, String8 str
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8Node *
|
internal String8Node *
|
||||||
str8_list_push_node_front(String8List *list, String8Node *node)
|
str8_list_push_node_front(String8List *list, String8Node *node)
|
||||||
{
|
{
|
||||||
SLLQueuePushFront(list->first, list->last, node);
|
SLLQueuePushFront(list->first, list->last, node);
|
||||||
list->node_count += 1;
|
list->node_count += 1;
|
||||||
@@ -1001,7 +1001,7 @@ str8_list_push_node_front(String8List *list, String8Node *node)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8Node *
|
internal String8Node *
|
||||||
str8_list_push_node_front_set_string(String8List *list, String8Node *node, String8 string)
|
str8_list_push_node_front_set_string(String8List *list, String8Node *node, String8 string)
|
||||||
{
|
{
|
||||||
SLLQueuePushFront(list->first, list->last, node);
|
SLLQueuePushFront(list->first, list->last, node);
|
||||||
list->node_count += 1;
|
list->node_count += 1;
|
||||||
@@ -1011,7 +1011,7 @@ str8_list_push_node_front_set_string(String8List *list, String8Node *node, Strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8Node *
|
internal String8Node *
|
||||||
str8_list_push(Arena *arena, String8List *list, String8 string)
|
str8_list_push(Arena *arena, String8List *list, String8 string)
|
||||||
{
|
{
|
||||||
String8Node *node = push_array_no_zero(arena, String8Node, 1);
|
String8Node *node = push_array_no_zero(arena, String8Node, 1);
|
||||||
str8_list_push_node_set_string(list, node, string);
|
str8_list_push_node_set_string(list, node, string);
|
||||||
@@ -1019,7 +1019,7 @@ str8_list_push(Arena *arena, String8List *list, String8 string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8Node *
|
internal String8Node *
|
||||||
str8_list_push_front(Arena *arena, String8List *list, String8 string)
|
str8_list_push_front(Arena *arena, String8List *list, String8 string)
|
||||||
{
|
{
|
||||||
String8Node *node = push_array_no_zero(arena, String8Node, 1);
|
String8Node *node = push_array_no_zero(arena, String8Node, 1);
|
||||||
str8_list_push_node_front_set_string(list, node, string);
|
str8_list_push_node_front_set_string(list, node, string);
|
||||||
@@ -1027,18 +1027,18 @@ str8_list_push_front(Arena *arena, String8List *list, String8 string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
str8_list_concat_in_place(String8List *list, String8List *to_push)
|
str8_list_concat_in_place(String8List *list, String8List *to_push)
|
||||||
{
|
{
|
||||||
if(to_push->node_count != 0)
|
if(to_push->node_count != 0)
|
||||||
{
|
{
|
||||||
if(list->last)
|
if(list->last)
|
||||||
{
|
{
|
||||||
list->node_count += to_push->node_count;
|
list->node_count += to_push->node_count;
|
||||||
list->total_size += to_push->total_size;
|
list->total_size += to_push->total_size;
|
||||||
list->last->next = to_push->first;
|
list->last->next = to_push->first;
|
||||||
list->last = to_push->last;
|
list->last = to_push->last;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*list = *to_push;
|
*list = *to_push;
|
||||||
}
|
}
|
||||||
@@ -1070,7 +1070,7 @@ str8_list_push_aligner(Arena *arena, String8List *list, U64 min, U64 align){
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8Node*
|
internal String8Node*
|
||||||
str8_list_pushf(Arena *arena, String8List *list, char *fmt, ...)
|
str8_list_pushf(Arena *arena, String8List *list, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
@@ -1081,7 +1081,7 @@ str8_list_pushf(Arena *arena, String8List *list, char *fmt, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8Node*
|
internal String8Node*
|
||||||
str8_list_push_frontf(Arena *arena, String8List *list, char *fmt, ...)
|
str8_list_push_frontf(Arena *arena, String8List *list, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
@@ -1092,10 +1092,10 @@ str8_list_push_frontf(Arena *arena, String8List *list, char *fmt, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8List
|
internal String8List
|
||||||
str8_list_copy(Arena *arena, String8List *list)
|
str8_list_copy(Arena *arena, String8List *list)
|
||||||
{
|
{
|
||||||
String8List result = {0};
|
String8List result = {0};
|
||||||
for(String8Node *node = list->first; node != 0; node = node->next)
|
for(String8Node *node = list->first; node != 0; node = node->next)
|
||||||
{
|
{
|
||||||
String8Node *new_node = push_array_no_zero(arena, String8Node, 1);
|
String8Node *new_node = push_array_no_zero(arena, String8Node, 1);
|
||||||
String8 new_string = push_str8_copy(arena, node->string);
|
String8 new_string = push_str8_copy(arena, node->string);
|
||||||
@@ -1108,34 +1108,34 @@ str8_list_copy(Arena *arena, String8List *list)
|
|||||||
//~ rjf: String Splitting & Joining
|
//~ rjf: String Splitting & Joining
|
||||||
|
|
||||||
internal String8List
|
internal String8List
|
||||||
str8_split(Arena *arena, String8 string, U8 *split_chars, U64 split_char_count, StringSplitFlags flags)
|
str8_split(Arena *arena, String8 string, U8 *split_chars, U64 split_char_count, StringSplitFlags flags)
|
||||||
{
|
{
|
||||||
String8List list = {0};
|
String8List list = {0};
|
||||||
B32 keep_empties = (flags & StringSplitFlag_KeepEmpties);
|
B32 keep_empties = (flags & StringSplitFlag_KeepEmpties);
|
||||||
U8 *ptr = string.str;
|
U8 *ptr = string.str;
|
||||||
U8 *opl = string.str + string.size;
|
U8 *opl = string.str + string.size;
|
||||||
for(;ptr < opl;)
|
for(;ptr < opl;)
|
||||||
{
|
{
|
||||||
U8 *first = ptr;
|
U8 *first = ptr;
|
||||||
for(;ptr < opl; ptr += 1)
|
for(;ptr < opl; ptr += 1)
|
||||||
{
|
{
|
||||||
U8 c = *ptr;
|
U8 c = *ptr;
|
||||||
B32 is_split = 0;
|
B32 is_split = 0;
|
||||||
for(U64 i = 0; i < split_char_count; i += 1)
|
for(U64 i = 0; i < split_char_count; i += 1)
|
||||||
{
|
{
|
||||||
if(split_chars[i] == c)
|
if(split_chars[i] == c)
|
||||||
{
|
{
|
||||||
is_split = 1;
|
is_split = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(is_split)
|
if(is_split)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String8 string = str8_range(first, ptr);
|
String8 string = str8_range(first, ptr);
|
||||||
if(keep_empties || string.size > 0)
|
if(keep_empties || string.size > 0)
|
||||||
{
|
{
|
||||||
str8_list_push(arena, &list, string);
|
str8_list_push(arena, &list, string);
|
||||||
}
|
}
|
||||||
@@ -1145,22 +1145,22 @@ str8_split(Arena *arena, String8 string, U8 *split_chars, U64 split_char_count,
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8List
|
internal String8List
|
||||||
str8_split_by_string_chars(Arena *arena, String8 string, String8 split_chars, StringSplitFlags flags)
|
str8_split_by_string_chars(Arena *arena, String8 string, String8 split_chars, StringSplitFlags flags)
|
||||||
{
|
{
|
||||||
String8List list = str8_split(arena, string, split_chars.str, split_chars.size, flags);
|
String8List list = str8_split(arena, string, split_chars.str, split_chars.size, flags);
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
str8_list_join(Arena *arena, String8List *list, StringJoin *optional_params)
|
str8_list_join(Arena *arena, String8List *list, StringJoin *optional_params)
|
||||||
{
|
{
|
||||||
StringJoin join = {0};
|
StringJoin join = {0};
|
||||||
if(optional_params != 0)
|
if(optional_params != 0)
|
||||||
{
|
{
|
||||||
MemoryCopyStruct(&join, optional_params);
|
MemoryCopyStruct(&join, optional_params);
|
||||||
}
|
}
|
||||||
U64 sep_count = 0;
|
U64 sep_count = 0;
|
||||||
if(list->node_count > 0)
|
if(list->node_count > 0)
|
||||||
{
|
{
|
||||||
sep_count = list->node_count - 1;
|
sep_count = list->node_count - 1;
|
||||||
}
|
}
|
||||||
@@ -1171,11 +1171,11 @@ str8_list_join(Arena *arena, String8List *list, StringJoin *optional_params)
|
|||||||
ptr += join.pre.size;
|
ptr += join.pre.size;
|
||||||
for(String8Node *node = list->first;
|
for(String8Node *node = list->first;
|
||||||
node != 0;
|
node != 0;
|
||||||
node = node->next)
|
node = node->next)
|
||||||
{
|
{
|
||||||
MemoryCopy(ptr, node->string.str, node->string.size);
|
MemoryCopy(ptr, node->string.str, node->string.size);
|
||||||
ptr += node->string.size;
|
ptr += node->string.size;
|
||||||
if(node->next != 0)
|
if(node->next != 0)
|
||||||
{
|
{
|
||||||
MemoryCopy(ptr, join.sep.str, join.sep.size);
|
MemoryCopy(ptr, join.sep.str, join.sep.size);
|
||||||
ptr += join.sep.size;
|
ptr += join.sep.size;
|
||||||
@@ -1218,7 +1218,7 @@ internal String8Array
|
|||||||
str8_array_from_list(Arena *arena, String8List *list)
|
str8_array_from_list(Arena *arena, String8List *list)
|
||||||
{
|
{
|
||||||
String8Array array;
|
String8Array array;
|
||||||
array.count = list->node_count;
|
array.count = list->node_count;
|
||||||
array.v = push_array_no_zero(arena, String8, array.count);
|
array.v = push_array_no_zero(arena, String8, array.count);
|
||||||
U64 idx = 0;
|
U64 idx = 0;
|
||||||
for(String8Node *n = list->first; n != 0; n = n->next, idx += 1)
|
for(String8Node *n = list->first; n != 0; n = n->next, idx += 1)
|
||||||
@@ -1410,13 +1410,13 @@ str8_split_path(Arena *arena, String8 string)
|
|||||||
internal void
|
internal void
|
||||||
str8_path_list_resolve_dots_in_place(String8List *path, PathStyle style)
|
str8_path_list_resolve_dots_in_place(String8List *path, PathStyle style)
|
||||||
{
|
{
|
||||||
Temp scratch = scratch_begin(0, 0);
|
Temp scratch = scratch_begin(0, 0);
|
||||||
typedef struct String8MetaNode String8MetaNode;
|
typedef struct String8MetaNode String8MetaNode;
|
||||||
struct String8MetaNode
|
struct String8MetaNode
|
||||||
{
|
{
|
||||||
String8MetaNode *next;
|
String8MetaNode *next;
|
||||||
String8Node *node;
|
String8Node *node;
|
||||||
};
|
};
|
||||||
String8MetaNode *stack = 0;
|
String8MetaNode *stack = 0;
|
||||||
String8MetaNode *free_meta_node = 0;
|
String8MetaNode *free_meta_node = 0;
|
||||||
String8Node *first = path->first;
|
String8Node *first = path->first;
|
||||||
@@ -1796,13 +1796,13 @@ path_replace_file_extension(Arena *arena, String8 file_name, String8 ext)
|
|||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: UTF-8 & UTF-16 Decoding/Encoding
|
//~ rjf: UTF-8 & UTF-16 Decoding/Encoding
|
||||||
|
|
||||||
read_only global U8 utf8_class[32] =
|
read_only global U8 utf8_class[32] =
|
||||||
{
|
{
|
||||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,2,2,2,2,3,3,4,5,
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,2,2,2,2,3,3,4,5,
|
||||||
};
|
};
|
||||||
|
|
||||||
internal UnicodeDecode
|
internal UnicodeDecode
|
||||||
utf8_decode(U8 *str, U64 max)
|
utf8_decode(U8 *str, U64 max)
|
||||||
{
|
{
|
||||||
UnicodeDecode result = {1, max_U32};
|
UnicodeDecode result = {1, max_U32};
|
||||||
U8 byte = str[0];
|
U8 byte = str[0];
|
||||||
@@ -1863,12 +1863,12 @@ utf8_decode(U8 *str, U64 max)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal UnicodeDecode
|
internal UnicodeDecode
|
||||||
utf16_decode(U16 *str, U64 max)
|
utf16_decode(U16 *str, U64 max)
|
||||||
{
|
{
|
||||||
UnicodeDecode result = {1, max_U32};
|
UnicodeDecode result = {1, max_U32};
|
||||||
result.codepoint = str[0];
|
result.codepoint = str[0];
|
||||||
result.inc = 1;
|
result.inc = 1;
|
||||||
if(max > 1 && 0xD800 <= str[0] && str[0] < 0xDC00 && 0xDC00 <= str[1] && str[1] < 0xE000)
|
if(max > 1 && 0xD800 <= str[0] && str[0] < 0xDC00 && 0xDC00 <= str[1] && str[1] < 0xE000)
|
||||||
{
|
{
|
||||||
result.codepoint = ((str[0] - 0xD800) << 10) | ((str[1] - 0xDC00) + 0x10000);
|
result.codepoint = ((str[0] - 0xD800) << 10) | ((str[1] - 0xDC00) + 0x10000);
|
||||||
result.inc = 2;
|
result.inc = 2;
|
||||||
@@ -1877,28 +1877,28 @@ utf16_decode(U16 *str, U64 max)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal U32
|
internal U32
|
||||||
utf8_encode(U8 *str, U32 codepoint)
|
utf8_encode(U8 *str, U32 codepoint)
|
||||||
{
|
{
|
||||||
U32 inc = 0;
|
U32 inc = 0;
|
||||||
if(codepoint <= 0x7F)
|
if(codepoint <= 0x7F)
|
||||||
{
|
{
|
||||||
str[0] = (U8)codepoint;
|
str[0] = (U8)codepoint;
|
||||||
inc = 1;
|
inc = 1;
|
||||||
}
|
}
|
||||||
else if(codepoint <= 0x7FF)
|
else if(codepoint <= 0x7FF)
|
||||||
{
|
{
|
||||||
str[0] = (bitmask2 << 6) | ((codepoint >> 6) & bitmask5);
|
str[0] = (bitmask2 << 6) | ((codepoint >> 6) & bitmask5);
|
||||||
str[1] = bit8 | (codepoint & bitmask6);
|
str[1] = bit8 | (codepoint & bitmask6);
|
||||||
inc = 2;
|
inc = 2;
|
||||||
}
|
}
|
||||||
else if(codepoint <= 0xFFFF)
|
else if(codepoint <= 0xFFFF)
|
||||||
{
|
{
|
||||||
str[0] = (bitmask3 << 5) | ((codepoint >> 12) & bitmask4);
|
str[0] = (bitmask3 << 5) | ((codepoint >> 12) & bitmask4);
|
||||||
str[1] = bit8 | ((codepoint >> 6) & bitmask6);
|
str[1] = bit8 | ((codepoint >> 6) & bitmask6);
|
||||||
str[2] = bit8 | ( codepoint & bitmask6);
|
str[2] = bit8 | ( codepoint & bitmask6);
|
||||||
inc = 3;
|
inc = 3;
|
||||||
}
|
}
|
||||||
else if(codepoint <= 0x10FFFF)
|
else if(codepoint <= 0x10FFFF)
|
||||||
{
|
{
|
||||||
str[0] = (bitmask4 << 4) | ((codepoint >> 18) & bitmask3);
|
str[0] = (bitmask4 << 4) | ((codepoint >> 18) & bitmask3);
|
||||||
str[1] = bit8 | ((codepoint >> 12) & bitmask6);
|
str[1] = bit8 | ((codepoint >> 12) & bitmask6);
|
||||||
@@ -1906,7 +1906,7 @@ utf8_encode(U8 *str, U32 codepoint)
|
|||||||
str[3] = bit8 | ( codepoint & bitmask6);
|
str[3] = bit8 | ( codepoint & bitmask6);
|
||||||
inc = 4;
|
inc = 4;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
str[0] = '?';
|
str[0] = '?';
|
||||||
inc = 1;
|
inc = 1;
|
||||||
@@ -1915,18 +1915,18 @@ utf8_encode(U8 *str, U32 codepoint)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal U32
|
internal U32
|
||||||
utf16_encode(U16 *str, U32 codepoint)
|
utf16_encode(U16 *str, U32 codepoint)
|
||||||
{
|
{
|
||||||
U32 inc = 1;
|
U32 inc = 1;
|
||||||
if(codepoint == max_U32)
|
if(codepoint == max_U32)
|
||||||
{
|
{
|
||||||
str[0] = (U16)'?';
|
str[0] = (U16)'?';
|
||||||
}
|
}
|
||||||
else if(codepoint < 0x10000)
|
else if(codepoint < 0x10000)
|
||||||
{
|
{
|
||||||
str[0] = (U16)codepoint;
|
str[0] = (U16)codepoint;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
U32 v = codepoint - 0x10000;
|
U32 v = codepoint - 0x10000;
|
||||||
str[0] = safe_cast_u16(0xD800 + (v >> 10));
|
str[0] = safe_cast_u16(0xD800 + (v >> 10));
|
||||||
@@ -2053,7 +2053,7 @@ StaticAssert(ArrayCount(g_os_enum_map) == OperatingSystem_COUNT, g_os_enum_map_c
|
|||||||
internal OperatingSystem
|
internal OperatingSystem
|
||||||
operating_system_from_string(String8 string)
|
operating_system_from_string(String8 string)
|
||||||
{
|
{
|
||||||
for EachElement(idx, g_os_enum_map)
|
for EachElement(idx, g_os_enum_map)
|
||||||
{
|
{
|
||||||
if(str8_match(g_os_enum_map[idx].string, string, StringMatchFlag_CaseInsensitive))
|
if(str8_match(g_os_enum_map[idx].string, string, StringMatchFlag_CaseInsensitive))
|
||||||
{
|
{
|
||||||
@@ -2064,9 +2064,9 @@ operating_system_from_string(String8 string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
string_from_dimension(Dimension dimension)
|
string_from_dimension(Dimension dimension)
|
||||||
{
|
{
|
||||||
read_only local_persist String8 strings[] =
|
read_only local_persist String8 strings[] =
|
||||||
{
|
{
|
||||||
str8_lit_comp("X"),
|
str8_lit_comp("X"),
|
||||||
str8_lit_comp("Y"),
|
str8_lit_comp("Y"),
|
||||||
@@ -2074,7 +2074,7 @@ string_from_dimension(Dimension dimension)
|
|||||||
str8_lit_comp("W"),
|
str8_lit_comp("W"),
|
||||||
};
|
};
|
||||||
String8 result = str8_lit("error");
|
String8 result = str8_lit("error");
|
||||||
if((U32)dimension < 4)
|
if((U32)dimension < 4)
|
||||||
{
|
{
|
||||||
result = strings[dimension];
|
result = strings[dimension];
|
||||||
}
|
}
|
||||||
@@ -2082,15 +2082,15 @@ string_from_dimension(Dimension dimension)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
string_from_side(Side side)
|
string_from_side(Side side)
|
||||||
{
|
{
|
||||||
local_persist String8 strings[] =
|
local_persist String8 strings[] =
|
||||||
{
|
{
|
||||||
str8_lit_comp("Min"),
|
str8_lit_comp("Min"),
|
||||||
str8_lit_comp("Max"),
|
str8_lit_comp("Max"),
|
||||||
};
|
};
|
||||||
String8 result = str8_lit("error");
|
String8 result = str8_lit("error");
|
||||||
if((U32)side < 2)
|
if((U32)side < 2)
|
||||||
{
|
{
|
||||||
result = strings[side];
|
result = strings[side];
|
||||||
}
|
}
|
||||||
@@ -2109,26 +2109,26 @@ string_from_operating_system(OperatingSystem os)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
string_from_arch(Arch arch)
|
string_from_arch(Arch arch)
|
||||||
{
|
{
|
||||||
String8 result = {0};
|
String8 result = {0};
|
||||||
switch(arch)
|
switch(arch)
|
||||||
{
|
{
|
||||||
case Arch_Null: {result = str8_lit("Null");}break;
|
case Arch_Null: {result = str8_lit("Null");}break;
|
||||||
case Arch_x64: {result = str8_lit("x64");}break;
|
case Arch_x64: {result = str8_lit("x64");}break;
|
||||||
case Arch_x86: {result = str8_lit("x86");}break;
|
case Arch_x86: {result = str8_lit("x86");}break;
|
||||||
case Arch_arm64: {result = str8_lit("arm64");}break;
|
case Arch_arm64: {result = str8_lit("arm64");}break;
|
||||||
case Arch_arm32: {result = str8_lit("arm32");}break;
|
case Arch_arm32: {result = str8_lit("arm32");}break;
|
||||||
case Arch_COUNT:
|
case Arch_COUNT:
|
||||||
{result = str8_lit("Invalid");}break;
|
{result = str8_lit("Invalid");}break;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
string_from_week_day(WeekDay week_day)
|
string_from_week_day(WeekDay week_day)
|
||||||
{
|
{
|
||||||
read_only local_persist String8 strings[] =
|
read_only local_persist String8 strings[] =
|
||||||
{
|
{
|
||||||
str8_lit_comp("Sun"),
|
str8_lit_comp("Sun"),
|
||||||
str8_lit_comp("Mon"),
|
str8_lit_comp("Mon"),
|
||||||
@@ -2139,7 +2139,7 @@ string_from_week_day(WeekDay week_day)
|
|||||||
str8_lit_comp("Sat"),
|
str8_lit_comp("Sat"),
|
||||||
};
|
};
|
||||||
String8 result = str8_lit("Err");
|
String8 result = str8_lit("Err");
|
||||||
if((U32)week_day < WeekDay_COUNT)
|
if((U32)week_day < WeekDay_COUNT)
|
||||||
{
|
{
|
||||||
result = strings[week_day];
|
result = strings[week_day];
|
||||||
}
|
}
|
||||||
@@ -2147,9 +2147,9 @@ string_from_week_day(WeekDay week_day)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
string_from_month(Month month)
|
string_from_month(Month month)
|
||||||
{
|
{
|
||||||
read_only local_persist String8 strings[] =
|
read_only local_persist String8 strings[] =
|
||||||
{
|
{
|
||||||
str8_lit_comp("Jan"),
|
str8_lit_comp("Jan"),
|
||||||
str8_lit_comp("Feb"),
|
str8_lit_comp("Feb"),
|
||||||
@@ -2165,7 +2165,7 @@ string_from_month(Month month)
|
|||||||
str8_lit_comp("Dec"),
|
str8_lit_comp("Dec"),
|
||||||
};
|
};
|
||||||
String8 result = str8_lit("Err");
|
String8 result = str8_lit("Err");
|
||||||
if((U32)month < Month_COUNT)
|
if((U32)month < Month_COUNT)
|
||||||
{
|
{
|
||||||
result = strings[month];
|
result = strings[month];
|
||||||
}
|
}
|
||||||
@@ -2173,16 +2173,16 @@ string_from_month(Month month)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
string_from_date_time(Arena *arena, DateTime *date_time)
|
string_from_date_time(Arena *arena, DateTime *date_time)
|
||||||
{
|
{
|
||||||
char *mon_str = (char*)string_from_month(date_time->month).str;
|
char *mon_str = (char*)string_from_month(date_time->month).str;
|
||||||
U32 adjusted_hour = date_time->hour%12;
|
U32 adjusted_hour = date_time->hour%12;
|
||||||
if(adjusted_hour == 0)
|
if(adjusted_hour == 0)
|
||||||
{
|
{
|
||||||
adjusted_hour = 12;
|
adjusted_hour = 12;
|
||||||
}
|
}
|
||||||
char *ampm = "am";
|
char *ampm = "am";
|
||||||
if(date_time->hour >= 12)
|
if(date_time->hour >= 12)
|
||||||
{
|
{
|
||||||
ampm = "pm";
|
ampm = "pm";
|
||||||
}
|
}
|
||||||
@@ -2193,7 +2193,7 @@ string_from_date_time(Arena *arena, DateTime *date_time)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
string_from_date_time__file_name(Arena *arena, DateTime *date_time)
|
string_from_date_time__file_name(Arena *arena, DateTime *date_time)
|
||||||
{
|
{
|
||||||
char *mon_str = (char*)string_from_month(date_time->month).str;
|
char *mon_str = (char*)string_from_month(date_time->month).str;
|
||||||
String8 result = str8f(arena, "%d-%s-%0d--%02d-%02d-%02d",
|
String8 result = str8f(arena, "%d-%s-%0d--%02d-%02d-%02d",
|
||||||
@@ -2203,22 +2203,22 @@ string_from_date_time__file_name(Arena *arena, DateTime *date_time)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
string_from_elapsed_time(Arena *arena, DateTime dt)
|
string_from_elapsed_time(Arena *arena, DateTime dt)
|
||||||
{
|
{
|
||||||
Temp scratch = scratch_begin(&arena, 1);
|
Temp scratch = scratch_begin(&arena, 1);
|
||||||
String8List list = {0};
|
String8List list = {0};
|
||||||
if(dt.year)
|
if(dt.year)
|
||||||
{
|
{
|
||||||
str8_list_pushf(scratch.arena, &list, "%dy", dt.year);
|
str8_list_pushf(scratch.arena, &list, "%dy", dt.year);
|
||||||
str8_list_pushf(scratch.arena, &list, "%um", dt.mon);
|
str8_list_pushf(scratch.arena, &list, "%um", dt.mon);
|
||||||
str8_list_pushf(scratch.arena, &list, "%ud", dt.day);
|
str8_list_pushf(scratch.arena, &list, "%ud", dt.day);
|
||||||
}
|
}
|
||||||
else if(dt.mon)
|
else if(dt.mon)
|
||||||
{
|
{
|
||||||
str8_list_pushf(scratch.arena, &list, "%um", dt.mon);
|
str8_list_pushf(scratch.arena, &list, "%um", dt.mon);
|
||||||
str8_list_pushf(scratch.arena, &list, "%ud", dt.day);
|
str8_list_pushf(scratch.arena, &list, "%ud", dt.day);
|
||||||
}
|
}
|
||||||
else if (dt.day)
|
else if (dt.day)
|
||||||
{
|
{
|
||||||
str8_list_pushf(scratch.arena, &list, "%ud", dt.day);
|
str8_list_pushf(scratch.arena, &list, "%ud", dt.day);
|
||||||
}
|
}
|
||||||
@@ -2850,7 +2850,7 @@ str8_compar(String8 a, String8 b, B32 ignore_case)
|
|||||||
return cmp;
|
return cmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal int
|
internal int str8_compar_ignore_case(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
return str8_compar(*(String8*)a, *(String8*)b, 1);
|
return str8_compar(*(String8*)a, *(String8*)b, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -241,10 +241,10 @@ fs_properties_from_path(String8 path)
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Asynchronous Tick
|
//~ rjf: Tick
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
fs_async_tick(void)
|
fs_tick(void)
|
||||||
{
|
{
|
||||||
Temp scratch = scratch_begin(0, 0);
|
Temp scratch = scratch_begin(0, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -122,8 +122,8 @@ internal U128 fs_hash_from_path_range(String8 path, Rng1U64 range, U64 endt_us);
|
|||||||
internal FileProperties fs_properties_from_path(String8 path);
|
internal FileProperties fs_properties_from_path(String8 path);
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Asynchronous Tick
|
//~ rjf: Tick
|
||||||
|
|
||||||
internal void fs_async_tick(void);
|
internal void fs_tick(void);
|
||||||
|
|
||||||
#endif // FILE_STREAM_H
|
#endif // FILE_STREAM_H
|
||||||
|
|||||||
Reference in New Issue
Block a user