diff options
| author | 2024-06-12 21:41:35 -0400 | |
|---|---|---|
| committer | 2024-06-12 21:41:35 -0400 | |
| commit | 503b08caadb9be5b54d8542ad57973612d061cfc (patch) | |
| tree | 4d1d5ebef0f2e11dfa2532d6788f186a20c42697 /examples | |
| parent | strings: add more tests (diff) | |
change uns_root_ptr to uns_ctr
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/string/test_inefficient.c | 2 | ||||
| -rw-r--r-- | examples/string/test_large.c | 2 | ||||
| -rw-r--r-- | examples/string/test_small.c | 2 | ||||
| -rw-r--r-- | examples/string/uns_string.c | 27 | ||||
| -rw-r--r-- | examples/string/uns_string.h | 16 |
5 files changed, 26 insertions, 23 deletions
diff --git a/examples/string/test_inefficient.c b/examples/string/test_inefficient.c index fb96684..46533ac 100644 --- a/examples/string/test_inefficient.c +++ b/examples/string/test_inefficient.c @@ -29,7 +29,7 @@ int test(struct uns_gc *gc) { - struct uns_root_list r = {0}; + struct uns_ctr r = {0}; int i; /* MistralAI 8x7B 0.1: diff --git a/examples/string/test_large.c b/examples/string/test_large.c index 68964ef..2ba7a8a 100644 --- a/examples/string/test_large.c +++ b/examples/string/test_large.c @@ -29,7 +29,7 @@ int test(struct uns_gc *gc) { - struct uns_root_list r = {0}; + struct uns_ctr r = {0}; int i; /* MistralAI 8x7B 0.1: diff --git a/examples/string/test_small.c b/examples/string/test_small.c index 08b2ed2..458c318 100644 --- a/examples/string/test_small.c +++ b/examples/string/test_small.c @@ -29,7 +29,7 @@ int test(struct uns_gc *gc) { - struct uns_root_list r = {0}; + struct uns_ctr r = {0}; const char s[] = "hello, world"; uns_string_alloc(gc, &r, 32); diff --git a/examples/string/uns_string.c b/examples/string/uns_string.c index 219df89..fe6f06a 100644 --- a/examples/string/uns_string.c +++ b/examples/string/uns_string.c @@ -34,7 +34,7 @@ enum { NUMBER_OF_IND = 3 }; -static size_t get_size_t(struct uns_gc *gc, struct uns_root_list *root, size_t i) +static size_t get_size_t(struct uns_gc *gc, struct uns_ctr *root, size_t i) { size_t r; @@ -44,7 +44,7 @@ static size_t get_size_t(struct uns_gc *gc, struct uns_root_list *root, size_t i return r; } -static void set_size_t(struct uns_gc *gc, struct uns_root_list *root, size_t i, size_t val) +static void set_size_t(struct uns_gc *gc, struct uns_ctr *root, size_t i, size_t val) { void *p = gc->record_get_ptr(root->p, i); memcpy(p, &val, sizeof(val)); @@ -53,22 +53,22 @@ static void set_size_t(struct uns_gc *gc, struct uns_root_list *root, size_t i, #define set_allen(gc,root,val) set_size_t(gc, root, ALLEN_IND, val) #define set_len(gc,root,val) set_size_t(gc, root, LEN_IND, val) -static size_t uns_string_allen(struct uns_gc *gc, struct uns_root_list *root) +static size_t uns_string_allen(struct uns_gc *gc, struct uns_ctr *root) { return get_size_t(gc, root, ALLEN_IND); } -size_t uns_string_len(struct uns_gc *gc, struct uns_root_list *root) +size_t uns_string_len(struct uns_gc *gc, struct uns_ctr *root) { return get_size_t(gc, root, LEN_IND); } -char *uns_string_ptr(struct uns_gc *gc, struct uns_root_list *root) +char *uns_string_ptr(struct uns_gc *gc, struct uns_ctr *root) { return gc->record_get_ptr(root->p, BYTES_IND); } -void uns_string_alloc(struct uns_gc *gc, struct uns_root_list *root, size_t start_len) +void uns_string_alloc(struct uns_gc *gc, struct uns_ctr *root, size_t start_len) { unsigned char *p; root->p = gc->alloc_record(gc, NUMBER_OF_IND); @@ -91,11 +91,14 @@ void uns_string_alloc(struct uns_gc *gc, struct uns_root_list *root, size_t star gc->record_set_ptr(root->p, BYTES_IND, p); } -void uns_string_resize(struct uns_gc *gc, struct uns_root_list *root, size_t newlen) +void uns_string_resize(struct uns_gc *gc, struct uns_ctr *root, size_t newlen) { - struct uns_root_list tmp_new = {0}; + struct uns_ctr tmp_new = {0}; size_t old_len = uns_string_len(gc, root); + /* The temporary string needs to be added to the roots list because + * there are multiple allocations that happen in the body of the string. + */ uns_root_add(gc, &tmp_new); uns_string_alloc(gc, &tmp_new, newlen); @@ -109,7 +112,7 @@ void uns_string_resize(struct uns_gc *gc, struct uns_root_list *root, size_t new uns_root_remove(gc, &tmp_new); } -void uns_string_ensure(struct uns_gc *gc, struct uns_root_list *root, size_t extent) +void uns_string_ensure(struct uns_gc *gc, struct uns_ctr *root, size_t extent) { size_t used = uns_string_len(gc, root); size_t allen = uns_string_allen(gc, root); @@ -118,7 +121,7 @@ void uns_string_ensure(struct uns_gc *gc, struct uns_root_list *root, size_t ext uns_string_resize(gc, root, used + extent); } -void uns_string_append_bytes(struct uns_gc *gc, struct uns_root_list *to, +void uns_string_append_bytes(struct uns_gc *gc, struct uns_ctr *to, const void *from, size_t bytes) { size_t len = uns_string_len(gc, to); @@ -127,12 +130,12 @@ void uns_string_append_bytes(struct uns_gc *gc, struct uns_root_list *to, set_len(gc, to, len + bytes); } -void uns_string_append_char(struct uns_gc *gc, struct uns_root_list *root, char c) +void uns_string_append_char(struct uns_gc *gc, struct uns_ctr *root, char c) { uns_string_append_bytes(gc, root, &c, 1); } -char *uns_string_cstring(struct uns_gc *gc, struct uns_root_list *root) +char *uns_string_cstring(struct uns_gc *gc, struct uns_ctr *root) { char *p; uns_string_ensure(gc, root, 1); diff --git a/examples/string/uns_string.h b/examples/string/uns_string.h index 14ae812..b583992 100644 --- a/examples/string/uns_string.h +++ b/examples/string/uns_string.h @@ -39,15 +39,15 @@ * (allocated length) (used) (size of used) */ -size_t uns_string_len(struct uns_gc *gc, struct uns_root_list *root); -char *uns_string_ptr(struct uns_gc *gc, struct uns_root_list *root); +size_t uns_string_len(struct uns_gc *gc, struct uns_ctr *root); +char *uns_string_ptr(struct uns_gc *gc, struct uns_ctr *root); /* The following functions may cause a collection. */ -void uns_string_alloc(struct uns_gc *gc, struct uns_root_list *root, size_t start_len); -void uns_string_resize(struct uns_gc *gc, struct uns_root_list *root, size_t newlen); -void uns_string_ensure(struct uns_gc *gc, struct uns_root_list *root, size_t extent); -void uns_string_append_bytes(struct uns_gc *gc, struct uns_root_list *to, +void uns_string_alloc(struct uns_gc *gc, struct uns_ctr *root, size_t start_len); +void uns_string_resize(struct uns_gc *gc, struct uns_ctr *root, size_t newlen); +void uns_string_ensure(struct uns_gc *gc, struct uns_ctr *root, size_t extent); +void uns_string_append_bytes(struct uns_gc *gc, struct uns_ctr *to, const void *from, size_t bytes); -void uns_string_append_char(struct uns_gc *gc, struct uns_root_list *root, char c); -char *uns_string_cstring(struct uns_gc *gc, struct uns_root_list *root); +void uns_string_append_char(struct uns_gc *gc, struct uns_ctr *root, char c); +char *uns_string_cstring(struct uns_gc *gc, struct uns_ctr *root); #endif |
