-#include <assert.h>
+#include "system/stacktrace.h"
#include <ctype.h>
#include <stdarg.h>
#include <stdio.h>
void print_atom_as_sexpr(FILE *stream, struct Atom *atom)
{
- assert(atom);
+ trace_assert(atom);
switch (atom->type) {
case ATOM_SYMBOL:
void print_cons_as_sexpr(FILE *stream, struct Cons *head)
{
- assert(head);
+ trace_assert(head);
struct Cons *cons = head;
static int atom_as_sexpr(struct Atom *atom, char *output, size_t n)
{
- assert(atom);
- assert(output);
+ trace_assert(atom);
+ trace_assert(output);
switch (atom->type) {
case ATOM_SYMBOL:
static int cons_as_sexpr(struct Cons *head, char *output, size_t n)
{
- assert(head);
- assert(output);
+ trace_assert(head);
+ trace_assert(output);
/* TODO(#378): cons_as_sexpr does not handle encoding errors of snprintf */
return 0;
}
+
+const char *expr_type_as_string(enum ExprType expr_type)
+{
+ switch (expr_type) {
+ case EXPR_ATOM: return "EXPR_ATOM";
+ case EXPR_CONS: return "EXPR_CONS";
+ case EXPR_VOID: return "EXPR_VOID";
+ }
+
+ return "";
+}
+
+const char *atom_type_as_string(enum AtomType atom_type)
+{
+ switch (atom_type) {
+ case ATOM_SYMBOL: return "ATOM_SYMBOL";
+ case ATOM_NUMBER: return "ATOM_NUMBER";
+ case ATOM_STRING: return "ATOM_STRING";
+ case ATOM_NATIVE: return "ATOM_NATIVE";
+ }
+
+ return "";
+}