X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fscheme%2Fao_scheme_vector.c;h=afdc89a86e880087f98fd2842d3c29bf7d307019;hb=b7c34a2e5ecff19d61d337b8c84976cc46005ec4;hp=a4127f64d8b43635c86b423d5291cc1429e128c1;hpb=32f6877288ea6b7eb1cae9a42fbe8e2c5dbb2f08;p=fw%2Faltos diff --git a/src/scheme/ao_scheme_vector.c b/src/scheme/ao_scheme_vector.c index a4127f64..afdc89a8 100644 --- a/src/scheme/ao_scheme_vector.c +++ b/src/scheme/ao_scheme_vector.c @@ -73,35 +73,27 @@ ao_scheme_vector_alloc(uint16_t length, ao_poly fill) } void -ao_scheme_vector_write(ao_poly v) +ao_scheme_vector_write(ao_poly v, bool write) { struct ao_scheme_vector *vector = ao_scheme_poly_vector(v); unsigned int i; - - printf("#("); - for (i = 0; i < vector->length; i++) { - if (i != 0) - printf(" "); - if (vector->vals[i] == v) - printf ("..."); - else - ao_scheme_poly_write(vector->vals[i]); - } - printf(")"); -} - -void -ao_scheme_vector_display(ao_poly v) -{ - struct ao_scheme_vector *vector = ao_scheme_poly_vector(v); - unsigned int i; - - for (i = 0; i < vector->length; i++) { - if (vector->vals[i] == v) - printf("..."); - else - ao_scheme_poly_display(vector->vals[i]); + int was_marked = 0; + + ao_scheme_print_start(); + was_marked = ao_scheme_print_mark_addr(vector); + if (was_marked) { + printf ("..."); + } else { + printf("#("); + for (i = 0; i < vector->length; i++) { + if (i != 0) + printf(" "); + ao_scheme_poly_write(vector->vals[i], write); + } + printf(")"); } + if (ao_scheme_print_stop() && !was_marked) + ao_scheme_print_clear_addr(vector); } static int32_t @@ -153,9 +145,9 @@ ao_scheme_list_to_vector(struct ao_scheme_cons *cons) if (ao_scheme_exception) return NULL; - ao_scheme_cons_stash(0, cons); + ao_scheme_cons_stash(cons); vector = ao_scheme_vector_alloc(length, AO_SCHEME_NIL); - cons = ao_scheme_cons_fetch(0); + cons = ao_scheme_cons_fetch(); if (!vector) return NULL; i = 0; @@ -174,9 +166,9 @@ ao_scheme_vector_to_list(struct ao_scheme_vector *vector) struct ao_scheme_cons *cons = NULL; for (i = length; i-- > 0;) { - ao_scheme_poly_stash(2, ao_scheme_vector_poly(vector)); + ao_scheme_vector_stash(vector); cons = ao_scheme_cons_cons(vector->vals[i], ao_scheme_cons_poly(cons)); - vector = ao_scheme_poly_vector(ao_scheme_poly_fetch(2)); + vector = ao_scheme_vector_fetch(); if (!cons) return NULL; }