Atoms round-trip with the reader; compounds without a public iterator (VMap) print as opaque placeholders for now.
97 {
101
104 fputs("nil", out);
105 break;
107 fputs("true", out);
108 break;
110 fputs("false", out);
111 break;
112
114 (void)fprintf(out,
"%" PRId64,
AS_I64(v));
115 break;
116
118
119 (void)fprintf(out,
"%.17g",
AS_F64(v));
120 break;
121
124 break;
125
128
129
130 if (sym->
ns !=
nullptr) {
132 fputc('/', out);
133 }
135 break;
136 }
137
140 fputc(':', out);
142 break;
143 }
144
147 fputs("#<ns ", out);
149 fputc('>', out);
150 break;
151 }
152
155 break;
156
159 break;
160
162
164 (void)fprintf(out,
"#<map size=%zu>", m->
inner.
len);
165 break;
166 }
167
169 fputs("#<closure>", out);
170 break;
171
174 (void)fprintf(out,
"#<error tag=%d", (
int)e->
tag);
175 if (e->
msg !=
nullptr) {
176 (void)fprintf(out,
" %s", e->
msg);
177 }
178 fputc('>', out);
179 break;
180 }
181
183 fputs("#<quote>", out);
184 break;
185
186 default:
187 fputs("#<unknown>", out);
188 break;
189 }
190}
#define AS_F64(value_ref)
#define AS_SYMBOL(value_ref)
@ VError
VError should be last.
#define AS_STRING(value_ref)
#define AS_I64(value_ref)
#define AS_MAP(value_ref)
#define AS_ERROR(value_ref)
#define AS_KEYWORD(value_ref)
static void print_list(FILE *out, srn_context_t *ctx, const srn_value_t *v)
static void print_seq(FILE *out, srn_context_t *ctx, const srn_value_t *v)
static void print_string_payload(FILE *out, const srn_string_t *s)
static void write_bytes(FILE *out, const uint8_t *buf, size_t len)
size_t len
Number of key/value pairs in the map.
A runtime error, a tag classifying the failure and a human-readable message.
A persistent, immutable map.
uint8_t buffer[]
The buffer that holds the WTF8 sequence.
size_t len
length of the WTF-8 sequence in bytes
#define PANIC_IF_NULL(ptr)