2 * Copyright © 2016 Keith Packard <keithp@keithp.com>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 2 of the License.
8 * This program is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * General Public License for more details.
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
20 static void string_mark(void *addr)
25 static int string_size(void *addr)
29 return strlen(addr) + 1;
32 static void string_move(void *addr)
38 ao_lisp_string_new(int len) {
39 char *a = ao_lisp_alloc(len + 1);
47 ao_lisp_string_copy(char *a)
51 char *r = ao_lisp_alloc(alen + 1);
59 ao_lisp_string_cat(char *a, char *b)
63 char *r = ao_lisp_alloc(alen + blen + 1);
71 const struct ao_lisp_type ao_lisp_string_type = {
78 ao_lisp_string_print(ao_poly p)
80 char *s = ao_lisp_poly_string(p);