aboutsummaryrefslogtreecommitdiff
path: root/tag.c
diff options
context:
space:
mode:
Diffstat (limited to 'tag.c')
-rw-r--r--tag.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/tag.c b/tag.c
index dbc47ba..ebed8cb 100644
--- a/tag.c
+++ b/tag.c
@@ -27,11 +27,27 @@ lisp_t *tag_sym(char *str)
return TAG((u64)str, SYM);
}
+lisp_t *tag_vec(lvec_t *lvec)
+{
+ return TAG((u64)lvec, VEC);
+}
+
lisp_t *tag_cons(cons_t *cons)
{
return TAG((u64)cons, CONS);
}
+tag_t get_tag(lisp_t *lisp)
+{
+ static_assert(NUM_TAGS == 5);
+ if (!lisp)
+ return TAG_NIL;
+ else if (IS_TAG(lisp, INT))
+ return TAG_INT;
+
+ return (u64)lisp & 0xFF;
+}
+
i64 as_int(lisp_t *obj)
{
assert(IS_TAG(obj, INT));