Add macros
diff --git a/src/lisp/lisp.c b/src/lisp/lisp.c
index 30b2861..0d305f2 100644
--- a/src/lisp/lisp.c
+++ b/src/lisp/lisp.c
@@ -34,6 +34,8 @@
c->car = car;
c->cdr = cdr;
+ c->line = 0;
+ c->name = NULL;
item->alloc.type_tag = CONS_TAG;
item->alloc.pool = current_pool;
@@ -344,6 +346,17 @@
return false;
}
+void set_cons_info(value_t cons, int line, char *name)
+{
+ if (!consp(cons))
+ return;
+
+ struct cons *ca = (void *)(cons ^ CONS_TAG);
+
+ ca->line = line;
+ ca->name = name;
+}
+
value_t readn(struct istream *is)
{
value_t first = nil;
@@ -353,7 +366,13 @@
while (read1(is, &read_val))
{
+ int line;
+ char *file;
+
+ is->getpos(is, &line, &file);
*last = cons(read_val, nil);
+ set_cons_info(*last, line, file);
+
last = cdrref(*last);
}