adding arena (p5)

This commit is contained in:
Allen Webster
2021-07-20 22:04:37 -07:00
parent a2524640ad
commit 2953d97c53
4 changed files with 24 additions and 17 deletions
+1
View File
@@ -1086,6 +1086,7 @@ main:
@send(Strings)
@func MD_S8FromS16: {
arena: *MD_Arena,
str: MD_String16,
return: MD_String8,
};
+11 -9
View File
@@ -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
View File
@@ -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
+8 -4
View File
@@ -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";