altos/lisp: Change lisp objects to use ao_poly everywhere. Add const
[fw/altos] / src / lisp / ao_lisp_string.c
index 87024271d2553080178d2eedfd86b8296bcbf2ee..39c3dc816ddd45dae08a6d6a83d3e876ec6bdd76 100644 (file)
@@ -43,6 +43,18 @@ ao_lisp_string_new(int len) {
        return a;
 }
 
+char *
+ao_lisp_string_copy(char *a)
+{
+       int     alen = strlen(a);
+
+       char    *r = ao_lisp_alloc(alen + 1);
+       if (!r)
+               return NULL;
+       strcpy(r, a);
+       return r;
+}
+
 char *
 ao_lisp_string_cat(char *a, char *b)
 {
@@ -56,16 +68,18 @@ ao_lisp_string_cat(char *a, char *b)
        return r;
 }
 
-const struct ao_lisp_mem_type ao_lisp_string_type = {
+const struct ao_lisp_type ao_lisp_string_type = {
        .mark = string_mark,
        .size = string_size,
        .move = string_move,
 };
 
 void
-ao_lisp_string_print(char *s)
+ao_lisp_string_print(ao_poly p)
 {
+       char    *s = ao_lisp_poly_string(p);
        char    c;
+
        putchar('"');
        while ((c = *s++)) {
                switch (c) {