X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fscheme%2Fao_scheme_poly.c;h=8a92c9f2c9b625bd98b3df032c8a9b67b3d2de8e;hb=16061947d4376b41e596d87f97ec53ec29d17644;hp=25ac6d67d1eea6371e9f5cb7e9ad3828c4ee784e;hpb=431165e5fa72ba6dffd477de32960745cdec332c;p=fw%2Faltos diff --git a/src/scheme/ao_scheme_poly.c b/src/scheme/ao_scheme_poly.c index 25ac6d67..8a92c9f2 100644 --- a/src/scheme/ao_scheme_poly.c +++ b/src/scheme/ao_scheme_poly.c @@ -14,13 +14,13 @@ #include "ao_scheme.h" -static void ao_scheme_invalid_write(ao_poly p, bool write) { - printf("??? type %d poly 0x%04x ???", ao_scheme_poly_type (p), p); +static void ao_scheme_invalid_write(FILE *out, ao_poly p, bool write) { + fprintf(out, "??? type %d poly 0x%04x ???", ao_scheme_poly_type (p), p); (void) write; ao_scheme_abort(); } -static void (*const ao_scheme_write_funcs[AO_SCHEME_NUM_TYPE]) (ao_poly p, bool write) = { +static void (*const ao_scheme_write_funcs[AO_SCHEME_NUM_TYPE]) (FILE *out, ao_poly p, bool write) = { [AO_SCHEME_CONS] = ao_scheme_cons_write, #ifdef AO_SCHEME_FEATURE_BIGINT [AO_SCHEME_BIGINT] = ao_scheme_bigint_write, @@ -40,9 +40,12 @@ static void (*const ao_scheme_write_funcs[AO_SCHEME_NUM_TYPE]) (ao_poly p, bool #ifdef AO_SCHEME_FEATURE_VECTOR [AO_SCHEME_VECTOR] = ao_scheme_vector_write, #endif +#ifdef AO_SCHEME_FEATURE_PORT + [AO_SCHEME_PORT] = ao_scheme_port_write, +#endif }; -void (*ao_scheme_poly_write_func(ao_poly p))(ao_poly p, bool write) +void (*ao_scheme_poly_write_func(ao_poly p))(FILE *out, ao_poly p, bool write) { uint8_t type = ao_scheme_poly_type(p); @@ -65,7 +68,7 @@ ao_scheme_poly(const void *addr, ao_poly type) { const uint8_t *a = addr; if (a == NULL) return AO_SCHEME_NIL; - if (AO_SCHEME_IS_CONST(a)) + if (ao_scheme_is_const_addr(a)) return AO_SCHEME_CONST | (a - ao_scheme_const + 4) | type; return (a - ao_scheme_pool + 4) | type; }