X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fscript%2Fexpr.h;h=d3607579e382b6995a9a07c87aeb63b47eb945fd;hb=0f7df4bfd40f00df03d9333c74b9cfc3ce6e2f64;hp=62db4d83922f1a86ae754b23d0b4a82f8f14a576;hpb=33ebc498e2cddd7c8a19a60138f99f7beba66822;p=nothing.git diff --git a/src/script/expr.h b/src/script/expr.h index 62db4d83..d3607579 100644 --- a/src/script/expr.h +++ b/src/script/expr.h @@ -9,6 +9,7 @@ typedef struct Gc Gc; struct Cons; struct Atom; +// TODO(#321): get rid of gc argument from expr macros (just assume that it's `gc` in the current scope) #define NUMBER(G, X) atom_as_expr(create_number_atom(G, X)) #define STRING(G, S) atom_as_expr(create_string_atom(G, S, NULL)) #define SYMBOL(G, S) atom_as_expr(create_symbol_atom(G, S, NULL)) @@ -35,9 +36,7 @@ struct Expr struct Expr atom_as_expr(struct Atom *atom); struct Expr cons_as_expr(struct Cons *cons); struct Expr void_expr(void); -struct Expr clone_expr(Gc *gc, struct Expr expr); -void destroy_expr_rec(struct Expr expr); void destroy_expr(struct Expr expr); void print_expr_as_sexpr(struct Expr expr); @@ -53,13 +52,14 @@ struct Atom enum AtomType type; union { - float num; // ATOM_NUMBER + // TODO(#330): Atom doesn't support floats + long int num; // ATOM_NUMBER char *sym; // ATOM_SYMBOL char *str; // ATOM_STRING }; }; -struct Atom *create_number_atom(Gc *gc, float num); +struct Atom *create_number_atom(Gc *gc, long int num); struct Atom *create_string_atom(Gc *gc, const char *str, const char *str_end); struct Atom *create_symbol_atom(Gc *gc, const char *sym, const char *sym_end); void destroy_atom(struct Atom *atom); @@ -73,7 +73,6 @@ struct Cons struct Cons *create_cons(Gc *gc, struct Expr car, struct Expr cdr); void destroy_cons(struct Cons *cons); -void destroy_cons_rec(struct Cons *cons); void print_cons_as_sexpr(struct Cons *cons); #endif // ATOM_H_