From a2524640ad2b3fda2452816cdb7b74de9dd754c1 Mon Sep 17 00:00:00 2001 From: Allen Webster Date: Tue, 20 Jul 2021 22:00:56 -0700 Subject: [PATCH] adding arena (p4) --- samples/output_parse/output_parse.c | 2 +- .../static_site_generator/static_site_generator.c | 9 +++++++-- source/md.c | 13 ++++++------- source/md.h | 3 ++- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/samples/output_parse/output_parse.c b/samples/output_parse/output_parse.c index fe9fb8f..e49ba62 100644 --- a/samples/output_parse/output_parse.c +++ b/samples/output_parse/output_parse.c @@ -38,7 +38,7 @@ static void PrintNode(MD_Node* node, FILE* file, int indent_count) { MD_StringJoin join = MD_ZERO_STRUCT; join.mid = MD_S8CString(", "); - MD_String8 flag_names = MD_S8ListJoin(flags_list, &join); + MD_String8 flag_names = MD_S8ListJoin(arena, flags_list, &join); fprintf(file, "%.*s,\n", MD_S8VArg(flag_names)); if(node->string.size > 0) Print(file, indent_count+1, "String: %.*s,\n", MD_S8VArg(node->string)); diff --git a/samples/static_site_generator/static_site_generator.c b/samples/static_site_generator/static_site_generator.c index f94113a..56c10b7 100644 --- a/samples/static_site_generator/static_site_generator.c +++ b/samples/static_site_generator/static_site_generator.c @@ -39,8 +39,13 @@ int main(int argument_count, char **arguments) //~ NOTE(rjf): Parse command line arguments. MD_String8List arg_list = MD_StringListFromArgCV(arena, argument_count, arguments); MD_CmdLine cmdln = MD_MakeCmdLineFromOptions(arena, arg_list); - MD_String8 site_info_path = MD_S8ListJoin(MD_CmdLineValuesFromString(cmdln, MD_S8Lit("siteinfo")), 0); - MD_String8 page_dir_path = MD_S8ListJoin(MD_CmdLineValuesFromString(cmdln, MD_S8Lit("pagedir")), 0); + + MD_String8List siteinfo_values = MD_CmdLineValuesFromString(cmdln, MD_S8Lit("siteinfo")); + MD_String8 site_info_path = MD_S8ListJoin(arena, siteinfo_values, 0); + + MD_String8List pagedir_values = MD_CmdLineValuesFromString(cmdln, MD_S8Lit("pagedir")); + MD_String8 page_dir_path = MD_S8ListJoin(arena, pagedir_values, 0); + if(!MD_CmdLineB32FromString(cmdln, MD_S8Lit("siteinfo")) || !MD_CmdLineB32FromString(cmdln, MD_S8Lit("pagedir"))) { diff --git a/source/md.c b/source/md.c index c1cc6ce..8848c54 100644 --- a/source/md.c +++ b/source/md.c @@ -760,7 +760,7 @@ MD_S8Split(MD_Arena *arena, MD_String8 string, int split_count, MD_String8 *spli } MD_FUNCTION_IMPL MD_String8 -MD_S8ListJoin(MD_String8List list, MD_StringJoin *join_ptr) +MD_S8ListJoin(MD_Arena *arena, MD_String8List list, MD_StringJoin *join_ptr) { // setup join parameters MD_StringJoin join = MD_ZERO_STRUCT; @@ -776,7 +776,7 @@ MD_S8ListJoin(MD_String8List list, MD_StringJoin *join_ptr) MD_String8 result = MD_ZERO_STRUCT; result.size = (list.total_size + join.pre.size + sep_count*join.mid.size + join.post.size); - result.str = MD_PushArray(MD_u8, result.size); + result.str = MD_PushArrayAr(arena, MD_u8, result.size); // fill MD_u8 *ptr = result.str; @@ -2311,7 +2311,7 @@ MD_ParseOneNode(MD_Arena *arena, MD_String8 string, MD_u64 offset) MD_StringJoin join = MD_ZERO_STRUCT; join.mid = MD_S8Lit(" "); - MD_String8 byte_string = MD_S8ListJoin(bytes, &join); + MD_String8 byte_string = MD_S8ListJoin(arena, bytes, &join); // NOTE(rjf): @error Bad character MD_String8 error_str = MD_S8Fmt(arena, "Non-ASCII character \"%.*s\"", @@ -2990,11 +2990,10 @@ MD_CmdLineB32FromString(MD_CmdLine cmdln, MD_String8 name) MD_FUNCTION MD_i64 MD_CmdLineI64FromString(MD_CmdLine cmdln, MD_String8 name) { - MD_i64 v = 0; MD_String8List values = MD_CmdLineValuesFromString(cmdln, name); - MD_String8 value_str = MD_S8ListJoin(values, 0); - v = MD_CStyleIntFromString(value_str); - return v; + MD_String8 value_str = MD_S8ListJoin(MD_Scratch(), values, 0); + MD_i64 result = MD_CStyleIntFromString(value_str); + return(result); } //~ File System diff --git a/source/md.h b/source/md.h index 50ef13b..df190f5 100644 --- a/source/md.h +++ b/source/md.h @@ -766,7 +766,8 @@ MD_FUNCTION void MD_S8ListPush(MD_Arena *arena, MD_String8List *list, MD_FUNCTION void MD_S8ListConcat(MD_String8List *list, MD_String8List *to_push); MD_FUNCTION MD_String8List MD_S8Split(MD_Arena *arena, MD_String8 string, int split_count, MD_String8 *splits); -MD_FUNCTION MD_String8 MD_S8ListJoin(MD_String8List list, MD_StringJoin *join); +MD_FUNCTION MD_String8 MD_S8ListJoin(MD_Arena *arena, MD_String8List list, + MD_StringJoin *join); MD_FUNCTION MD_String8 MD_S8Stylize(MD_Arena *arena, MD_String8 string, MD_IdentifierStyle style, MD_String8 separator);