aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2024-06-12 21:41:35 -0400
committerGravatar Peter McGoron 2024-06-12 21:41:35 -0400
commit503b08caadb9be5b54d8542ad57973612d061cfc (patch)
tree4d1d5ebef0f2e11dfa2532d6788f186a20c42697 /examples
parentstrings: add more tests (diff)
change uns_root_ptr to uns_ctr
Diffstat (limited to 'examples')
-rw-r--r--examples/string/test_inefficient.c2
-rw-r--r--examples/string/test_large.c2
-rw-r--r--examples/string/test_small.c2
-rw-r--r--examples/string/uns_string.c27
-rw-r--r--examples/string/uns_string.h16
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