summaryrefslogtreecommitdiffstats
path: root/lib.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib.h')
-rw-r--r--lib.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib.h b/lib.h
index ea644448..24db79f1 100644
--- a/lib.h
+++ b/lib.h
@@ -345,6 +345,18 @@ typedef val *loc;
#define mpush(val, lo) (push(val, lo))
#endif
+typedef enum seq_kind {
+ SEQ_NIL, SEQ_LISTLIKE, SEQ_VECLIKE, SEQ_HASHLIKE, SEQ_NOTSEQ
+} seq_kind_t;
+
+typedef struct seq_info {
+ val obj;
+ type_t type;
+ seq_kind_t kind;
+} seq_info_t;
+
+extern const seq_kind_t seq_kind_tab[MAXTYPE+1];
+
INLINE cnum tag(val obj) { return coerce(cnum, obj) & TAG_MASK; }
INLINE int is_ptr(val obj) { return obj && tag(obj) == TAG_PTR; }
INLINE int is_num(val obj) { return tag(obj) == TAG_NUM; }
@@ -486,6 +498,7 @@ val identity(val obj);
val typeof(val obj);
val subtypep(val sub, val sup);
val typep(val obj, val type);
+seq_info_t seq_info(val cobj);
val throw_mismatch(val obj, type_t);
INLINE val type_check(val obj, type_t typecode)
{