mirror of
https://github.com/Ed94/metadesk.git
synced 2026-06-12 23:51:37 -07:00
adding arena (p5)
This commit is contained in:
@@ -1086,6 +1086,7 @@ main:
|
||||
|
||||
@send(Strings)
|
||||
@func MD_S8FromS16: {
|
||||
arena: *MD_Arena,
|
||||
str: MD_String16,
|
||||
return: MD_String8,
|
||||
};
|
||||
|
||||
+11
-9
@@ -859,7 +859,7 @@ MD_S8Stylize(MD_Arena *arena, MD_String8 string, MD_IdentifierStyle word_style,
|
||||
{
|
||||
result.size += separator.size*(words.node_count-1);
|
||||
}
|
||||
result.str = MD_PushArray(MD_u8, result.size);
|
||||
result.str = MD_PushArrayAr(arena, MD_u8, result.size);
|
||||
|
||||
{
|
||||
MD_u64 write_pos = 0;
|
||||
@@ -1081,11 +1081,13 @@ MD_Utf16FromCodepoint(MD_u16 *out, MD_u32 codepoint)
|
||||
return(advance);
|
||||
}
|
||||
|
||||
// TODO(allen): arena "put back" operation to optimize these a bit more
|
||||
|
||||
MD_FUNCTION MD_String8
|
||||
MD_S8FromS16(MD_String16 in)
|
||||
MD_S8FromS16(MD_Arena *arena, MD_String16 in)
|
||||
{
|
||||
MD_u64 cap = in.size*3;
|
||||
MD_u8 *str = MD_PushArray(MD_u8, cap + 1);
|
||||
MD_u8 *str = MD_PushArrayAr(arena, MD_u8, cap + 1);
|
||||
MD_u16 *ptr = in.str;
|
||||
MD_u16 *opl = ptr + in.size;
|
||||
MD_u64 size = 0;
|
||||
@@ -1101,10 +1103,10 @@ MD_S8FromS16(MD_String16 in)
|
||||
}
|
||||
|
||||
MD_FUNCTION MD_String16
|
||||
MD_S16FromS8(MD_String8 in)
|
||||
MD_S16FromS8(MD_Arena *arena, MD_String8 in)
|
||||
{
|
||||
MD_u64 cap = in.size*2;
|
||||
MD_u16 *str = MD_PushArray(MD_u16, (cap + 1));
|
||||
MD_u16 *str = MD_PushArrayAr(arena, MD_u16, (cap + 1));
|
||||
MD_u8 *ptr = in.str;
|
||||
MD_u8 *opl = ptr + in.size;
|
||||
MD_u64 size = 0;
|
||||
@@ -1121,10 +1123,10 @@ MD_S16FromS8(MD_String8 in)
|
||||
}
|
||||
|
||||
MD_FUNCTION MD_String8
|
||||
MD_S8FromS32(MD_String32 in)
|
||||
MD_S8FromS32(MD_Arena *arena, MD_String32 in)
|
||||
{
|
||||
MD_u64 cap = in.size*4;
|
||||
MD_u8 *str = MD_PushArray(MD_u8, cap + 1);
|
||||
MD_u8 *str = MD_PushArrayAr(arena, MD_u8, cap + 1);
|
||||
MD_u32 *ptr = in.str;
|
||||
MD_u32 *opl = ptr + in.size;
|
||||
MD_u64 size = 0;
|
||||
@@ -1138,10 +1140,10 @@ MD_S8FromS32(MD_String32 in)
|
||||
}
|
||||
|
||||
MD_FUNCTION MD_String32
|
||||
MD_S32FromS8(MD_String8 in)
|
||||
MD_S32FromS8(MD_Arena *arena, MD_String8 in)
|
||||
{
|
||||
MD_u64 cap = in.size;
|
||||
MD_u32 *str = MD_PushArray(MD_u32, (cap + 1));
|
||||
MD_u32 *str = MD_PushArrayAr(arena, MD_u32, (cap + 1));
|
||||
MD_u8 *ptr = in.str;
|
||||
MD_u8 *opl = ptr + in.size;
|
||||
MD_u64 size = 0;
|
||||
|
||||
+4
-4
@@ -778,10 +778,10 @@ MD_FUNCTION MD_DecodedCodepoint MD_DecodeCodepointFromUtf8(MD_u8 *str, MD_u64 ma
|
||||
MD_FUNCTION MD_DecodedCodepoint MD_DecodeCodepointFromUtf16(MD_u16 *str, MD_u64 max);
|
||||
MD_FUNCTION MD_u32 MD_Utf8FromCodepoint(MD_u8 *out, MD_u32 codepoint);
|
||||
MD_FUNCTION MD_u32 MD_Utf16FromCodepoint(MD_u16 *out, MD_u32 codepoint);
|
||||
MD_FUNCTION MD_String8 MD_S8FromS16(MD_String16 str);
|
||||
MD_FUNCTION MD_String16 MD_S16FromS8(MD_String8 str);
|
||||
MD_FUNCTION MD_String8 MD_S8FromS32(MD_String32 str);
|
||||
MD_FUNCTION MD_String32 MD_S32FromS8(MD_String8 str);
|
||||
MD_FUNCTION MD_String8 MD_S8FromS16(MD_Arena *arena, MD_String16 str);
|
||||
MD_FUNCTION MD_String16 MD_S16FromS8(MD_Arena *arena, MD_String8 str);
|
||||
MD_FUNCTION MD_String8 MD_S8FromS32(MD_Arena *arena, MD_String32 str);
|
||||
MD_FUNCTION MD_String32 MD_S32FromS8(MD_Arena *arena, MD_String8 str);
|
||||
|
||||
//~ File Name Strings
|
||||
|
||||
|
||||
@@ -1,19 +1,23 @@
|
||||
#include "md.h"
|
||||
#include "md.c"
|
||||
|
||||
static MD_Arena *arena = 0;
|
||||
|
||||
void run_test_on_string(MD_String8 string)
|
||||
{
|
||||
MD_String16 s16 = MD_S16FromS8(string);
|
||||
MD_String8 s8_ts16 = MD_S8FromS16(s16);
|
||||
MD_String16 s16 = MD_S16FromS8(arena, string);
|
||||
MD_String8 s8_ts16 = MD_S8FromS16(arena, s16);
|
||||
MD_Assert(MD_S8Match(s8_ts16, string, 0));
|
||||
|
||||
MD_String32 s32 = MD_S32FromS8(string);
|
||||
MD_String8 s8_ts32 = MD_S8FromS32(s32);
|
||||
MD_String32 s32 = MD_S32FromS8(arena, string);
|
||||
MD_String8 s8_ts32 = MD_S8FromS32(arena, s32);
|
||||
MD_Assert(MD_S8Match(s8_ts32, string, 0));
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
arena = MD_ArenaNew(1ull << 40);
|
||||
|
||||
// TODO(allen): throw more at this.
|
||||
|
||||
char test_string_c[] = "Foo bar; test the unicode\n\t\0Etc";
|
||||
|
||||
Reference in New Issue
Block a user