summaryrefslogtreecommitdiff
path: root/prb_string.c
diff options
context:
space:
mode:
Diffstat (limited to 'prb_string.c')
-rw-r--r--prb_string.c146
1 files changed, 92 insertions, 54 deletions
diff --git a/prb_string.c b/prb_string.c
index 061731c..bb235df 100644
--- a/prb_string.c
+++ b/prb_string.c
@@ -1,73 +1,70 @@
Str8 str8(U8 *ptr, U64 length)
{
Assert(ptr);
- Str8 r = { ptr, length };
+
+ Str8 r;
+
+ r.ptr = ptr;
+ r.length = length;
+
return r;
}
-Str8 str8_range(U8 *start, U8 *end)
+Str8 str8range(U8 *start, U8 *end)
{
- Str8 r = { start, end-start };
+ Str8 r;
+
+ r.ptr = start;
+ r.length = end-start;
+
return r;
}
-Str8 str8_from_cstr(char *cstr)
+Str8 str8fromcstr(char *cstr)
{
- U8 *ptr = (U8 *)cstr;
+ U8 *ptr;
+ Str8 r;
+
+ ptr = (U8 *)cstr;
for (; *ptr; ++ptr);
- Str8 r = str8_range((U8 *)cstr, ptr);
+ r = str8range((U8 *)cstr, ptr);
+
return r;
}
-char *str8_to_cstr(Arena *arena, Str8 s)
+char *str8tocstr(Arena *arena, Str8 s)
{
- U64 length = s.length+1;
- char *r = arena_push(arena, length*sizeof(U8));
+ U64 length;
+ char *r;
+
+ length = s.length+1;
+ r = arena_push(arena, length*sizeof(U8));
MemoryCopy(r, s.ptr, length*sizeof(U8));
*(r+s.length) = 0;
- return r;
-}
-Str8 str8_chop_end(Str8 s, U64 count)
-{
- U64 length = s.length-ClampTop(count, s.length);
- Str8 r = str8(s.ptr, length);
return r;
}
-Str8 str8_chop_start(Str8 s, U64 count)
+Str8 str8chopend(Str8 s, U64 count)
{
- U64 clamped = ClampTop(count, s.length);
- U64 length = s.length-ClampTop(count, s.length);
- Str8 r = str8(s.ptr+clamped, length);
- return r;
-}
+ U64 length;
+ Str8 r;
-Str8 str8_pushfv(Arena *arena, char *fmt, va_list args)
-{
- Str8 r = {0};
-
- va_list args2;
- va_copy(args2, args);
-
- U32 buf_size = 1024;
- U8 *buf = arena_push(arena, buf_size);
-
- S32 n = vsnprintf((char *)buf, buf_size, fmt, args);
- va_end(args2);
-
- if (n > 0)
- r = str8(buf, n);
+ length = s.length-ClampTop(count, s.length);
+ r = str8(s.ptr, length);
return r;
}
-Str8 str8_pushf(Arena *arena, char *fmt, ...)
+Str8 str8chopstart(Str8 s, U64 count)
{
- va_list args;
- va_start(args, fmt);
- Str8 r = str8_pushfv(arena, fmt, args);
- va_end(args);
+ U64 clamped, length;
+ Str8 r;
+
+ clamped = ClampTop(count, s.length);
+ length = s.length-ClampTop(count, s.length);
+ r = str8(s.ptr+clamped, length);
+
return r;
}
@@ -77,17 +74,21 @@ void str8print(Str8 s)
printf("%c", (char)(*(s.ptr+i)));
}
-Str8List *str8_list(Arena *arena)
+Str8List *str8list(Arena *arena)
{
- Str8List *list = arena_push(arena, sizeof(Str8List));
+ Str8List *list;
+ list = arena_push(arena, sizeof(Str8List));
MemoryZero(list, sizeof(Str8List));
return list;
}
-void str8_list_push(Arena *arena, Str8List *list, Str8 str, B32 to_front)
+void str8listpush(Arena *arena, Str8List *list, Str8 str, B32 to_front)
{
Assert(arena && list);
- Str8Node *n = arena_push(arena, sizeof(Str8Node));
+
+ Str8Node *n;
+
+ n = arena_push(arena, sizeof(Str8Node));
n->str = str;
if (to_front)
DLLPushFront(list->first, list->last, n);
@@ -97,19 +98,56 @@ void str8_list_push(Arena *arena, Str8List *list, Str8 str, B32 to_front)
list->node_count++;
}
-void str8_list_pushf(Arena *arena, Str8List *list, B32 to_front, char *fmt, ...)
+void str8listprint(Str8List *list)
{
- va_list args;
+ Str8Node *n;
+ for (n = list->first; n; n = n->next)
+ str8print(n->str);
+}
+
+Str8 str8pushfv(Arena *arena, char *fmt, va_list args)
+{
+ va_list args2;
+ Str8 r;
+ S32 buf_size, n;
+ U8 *buf;
+
+ va_copy(args2, args);
+
+ buf_size = 1024;
+ buf = arena_push(arena, buf_size);
+
+ n = vsnprintf((char *)buf, buf_size, fmt, args);
+ va_end(args2);
+
+ MemoryZero(&r, sizeof(Str8));
+
+ if (n > 0)
+ r = str8(buf, n);
+
+ return r;
+}
+
+Str8 str8pushf(Arena *arena, char *fmt, ...)
+{
+ va_list args;
+ Str8 r;
+
va_start(args, fmt);
- Str8 str = str8_pushfv(arena, fmt, args);
+ r = str8pushfv(arena, fmt, args);
va_end(args);
- str8_list_push(arena, list, str, to_front);
+
+ return r;
}
-void str8_list_print(Str8List *list)
+void str8listpushf(Arena *arena, Str8List *list, B32 to_front, char *fmt, ...)
{
- for (Str8Node *n = list->first; n; n = n->next) {
- str8print(n->str);
- printf("%s", (n->next) ? " -> " : "\n");
- }
+ va_list args;
+ Str8 str;
+
+ va_start(args, fmt);
+ str = str8pushfv(arena, fmt, args);
+ va_end(args);
+
+ str8listpush(arena, list, str, to_front);
}