projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos/scheme: Use memory manager mark code to note recursive print
[fw/altos]
/
src
/
scheme
/
ao_scheme_vector.c
diff --git
a/src/scheme/ao_scheme_vector.c
b/src/scheme/ao_scheme_vector.c
index a4127f64d8b43635c86b423d5291cc1429e128c1..ff2067e25ba440fcbda5735421107f65817969a6 100644
(file)
--- a/
src/scheme/ao_scheme_vector.c
+++ b/
src/scheme/ao_scheme_vector.c
@@
-78,16
+78,19
@@
ao_scheme_vector_write(ao_poly v)
struct ao_scheme_vector *vector = ao_scheme_poly_vector(v);
unsigned int i;
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_print_start();
+ if (ao_scheme_print_mark_addr(vector))
+ printf ("...");
+ else {
+ printf("#(");
+ for (i = 0; i < vector->length; i++) {
+ if (i != 0)
+ printf(" ");
ao_scheme_poly_write(vector->vals[i]);
ao_scheme_poly_write(vector->vals[i]);
+ }
+ printf(")");
}
}
-
printf(")"
);
+
ao_scheme_print_stop(
);
}
void
}
void
@@
-96,10
+99,11
@@
ao_scheme_vector_display(ao_poly v)
struct ao_scheme_vector *vector = ao_scheme_poly_vector(v);
unsigned int i;
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_print_start();
+ if (ao_scheme_print_mark_addr(vector))
+ printf ("...");
+ else {
+ for (i = 0; i < vector->length; i++)
ao_scheme_poly_display(vector->vals[i]);
}
}
ao_scheme_poly_display(vector->vals[i]);
}
}