summaryrefslogtreecommitdiff
path: root/lisp.h
diff options
context:
space:
mode:
Diffstat (limited to 'lisp.h')
-rw-r--r--lisp.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/lisp.h b/lisp.h
index c857b02..631cee4 100644
--- a/lisp.h
+++ b/lisp.h
@@ -8,10 +8,11 @@ typedef struct reg reg;
// environments, TODO: make this use hashtable
// symbol->val
typedef struct env {
- const char *symbol;
+ char *symbol;
value *value;
env *next;
env *parent;
+ int marked;
} env;
env *env_create(env *parent);
@@ -31,10 +32,14 @@ typedef struct reg {
} reg;
reg *reg_add(value *val);
-void free_value(reg *r);
extern reg *global_reg;
-int mark_env(env *e);
-int mark_val(value *v);
+void mark_env(env *e);
+void mark_val(value *v);
int sweep();
+void free_env(env *e);
+void free_value(value *v);
+void reset_env_marks(env *e);
+void reset_marks();
+void print_register();
#endif