jrk

my own c stdlib to keep myself sane
git clone git://git.jakekoroman.com/jrk
Log | Files | Refs

commit 18dda591c68f570e900a60a37c18575eadebd222
parent 641b9a04eac3b067542843fca0f657b93256fa43
Author: Jake Koroman <jake@jakekoroman.com>
Date:   Mon, 23 Feb 2026 14:12:17 -0500

rename jrk_StringView to jrk_String.

Diffstat:
Mjrk.h | 94+++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 46 insertions(+), 48 deletions(-)

diff --git a/jrk.h b/jrk.h @@ -10,8 +10,6 @@ * * - add real random api. and remove the rand() wrappers. * - * - look at at the jrk_sv_chop_delim_loop stuff. there must - * must be a better way of handling things. */ #include <stdbool.h> @@ -47,16 +45,16 @@ typedef double f64; #define JRK_TMPSTRINGS_STR_CAPACITY JRK_KILOBYTES(1) typedef struct { - u8 *data; - u64 offset; - u64 prev_offset; - u64 capacity; + u8 *data; + u64 offset; + u64 prev_offset; + u64 capacity; } jrk_Arena; typedef struct { - char *data; - u64 size; -} jrk_StringView; + char *data; + u64 size; +} jrk_String; void *jrk_ecalloc(u64, u64); void *jrk_erealloc(void*, u64); @@ -79,21 +77,21 @@ i32 jrk_fd_open_write_append(char*); bool jrk_fd_size(i32, u64*); void jrk_fd_close(i32); -jrk_StringView jrk_sv_from_parts(char*, u64); -jrk_StringView jrk_sv_trim_right(jrk_StringView); -jrk_StringView jrk_sv_trim_left(jrk_StringView); -jrk_StringView jrk_sv_trim(jrk_StringView); -jrk_StringView jrk_sv_from_cstr(char*); -jrk_StringView jrk_sv_chop_delim(jrk_StringView*, char delim); -bool jrk_sv_equals(jrk_StringView*, jrk_StringView*); // takes the lowest size and matches up to that size -bool jrk_sv_equals_exact(jrk_StringView*, jrk_StringView*); // must be same size to be equals +jrk_String jrk_string_from_parts(char*, u64); +jrk_String jrk_string_trim_right(jrk_String); +jrk_String jrk_string_trim_left(jrk_String); +jrk_String jrk_string_trim(jrk_String); +jrk_String jrk_string_from_cstr(char*); +jrk_String jrk_string_chop_delim(jrk_String*, char delim); +bool jrk_string_equals(jrk_String*, jrk_String*); // takes the lowest size and matches up to that size +bool jrk_string_equals_exact(jrk_String*, jrk_String*); // must be same size to be equals char *jrk_tmpstrings_push(char*); char *jrk_tmpstrings_pushf(char*, ...); /* XXX: im not thrilled with this api, the memory can get messy real fast */ -#define jrk_sv_chop_delim_loop(sv, it, delim) \ - for (jrk_StringView it = jrk_sv_chop_delim(sv, delim); it.size != 0; it = jrk_sv_chop_delim(sv, delim)) +#define jrk_string_chop_delim_loop(str, it, delim) \ + for (jrk_String it = jrk_string_chop_delim(str, delim); it.size != 0; it = jrk_string_chop_delim(str, delim)) #ifndef jrk_die #define jrk_die(x) \ @@ -275,7 +273,7 @@ typedef jrk_Array_char jrk_StringBuilder; #define jrk_sb_init_ex(sb, size, allocfn, reallocfn, userarg) jrk_array_char_init_ex((sb), (size), (allocfn), (reallocfn), (userarg)) #define jrk_sb_init_arena(sb, size, arena) jrk_sb_init_ex((sb), (size), jrk_array_alloc_function_arena, jrk_array_realloc_function_arena, (void *)(arena)) #define jrk_sb_deinit(sb) jrk_array_char_deinit((sb)) -#define jrk_sb_to_sv(sb) jrk_sv_from_parts((sb).items, (sb).size) +#define jrk_sb_to_string(sb) jrk_string_from_parts((sb).items, (sb).size) bool jrk_sb_appendf(jrk_StringBuilder*, char*, ...); bool jrk_sb_append_buf_at(jrk_StringBuilder*, char*, u64, u64); @@ -740,68 +738,68 @@ jrk_fd_open_write_append(char *path) return result; } -jrk_StringView -jrk_sv_from_parts(char *data, u64 size) +jrk_String +jrk_string_from_parts(char *data, u64 size) { - jrk_StringView result = {0}; + jrk_String result = {0}; result.data = data; result.size = size; return result; } -jrk_StringView -jrk_sv_from_cstr(char *data) +jrk_String +jrk_string_from_cstr(char *data) { - jrk_StringView result = {0}; + jrk_String result = {0}; result.data = data; result.size = strlen(data); return result; } -jrk_StringView -jrk_sv_trim_right(jrk_StringView sv) +jrk_String +jrk_string_trim_right(jrk_String str) { u64 i = 0; - for (; i < sv.size && isspace(sv.data[sv.size - 1 - i]); ++i); - return jrk_sv_from_parts(sv.data, sv.size - i); + for (; i < str.size && isspace(str.data[str.size - 1 - i]); ++i); + return jrk_string_from_parts(str.data, str.size - i); } -jrk_StringView -jrk_sv_trim_left(jrk_StringView sv) +jrk_String +jrk_string_trim_left(jrk_String str) { u64 i = 0; - for (; i < sv.size && isspace(sv.data[i]); ++i); - return jrk_sv_from_parts(sv.data + i, sv.size - i); + for (; i < str.size && isspace(str.data[i]); ++i); + return jrk_string_from_parts(str.data + i, str.size - i); } -jrk_StringView -jrk_sv_trim(jrk_StringView sv) +jrk_String +jrk_string_trim(jrk_String str) { - return jrk_sv_trim_right(jrk_sv_trim_left(sv)); + return jrk_string_trim_right(jrk_string_trim_left(str)); } -jrk_StringView -jrk_sv_chop_delim(jrk_StringView *sv, char delim) +jrk_String +jrk_string_chop_delim(jrk_String *str, char delim) { u64 i = 0; - while (i < sv->size && sv->data[i] != delim) + while (i < str->size && str->data[i] != delim) ++i; - jrk_StringView result = jrk_sv_from_parts(sv->data, i); + jrk_String result = jrk_string_from_parts(str->data, i); - if (i < sv->size) { - sv->data += i + 1; - sv->size -= i + 1; + if (i < str->size) { + str->data += i + 1; + str->size -= i + 1; } else { - sv->data += i; - sv->size -= i; + str->data += i; + str->size -= i; } return result; } bool -jrk_sv_equals(jrk_StringView *a, jrk_StringView *b) +jrk_string_equals(jrk_String *a, jrk_String *b) { for (u64 i = 0; i < JRK_MIN(a->size, b->size); ++i) if (a->data[i] != b->data[i]) return false; @@ -810,7 +808,7 @@ jrk_sv_equals(jrk_StringView *a, jrk_StringView *b) } bool -jrk_sv_equals_exact(jrk_StringView *a, jrk_StringView *b) +jrk_string_equals_exact(jrk_String *a, jrk_String *b) { if (a->size != b->size) return false;