summaryrefslogtreecommitdiffhomepage
path: root/ast.h
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2020-10-05 12:32:42 +0200
committerJo-Philipp Wich <jo@mein.io>2020-10-05 13:03:08 +0200
commitb1391241a116d794a091c97bbb63b485f6514fb7 (patch)
tree8a95edba3ea58aacbb0db0a76f8131b387660544 /ast.h
parent03b9ad307bd4313adc974982fc008f4c58337c11 (diff)
ast: add helpers to set error token bits
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'ast.h')
-rw-r--r--ast.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/ast.h b/ast.h
index 67330fb..365d4c0 100644
--- a/ast.h
+++ b/ast.h
@@ -140,6 +140,19 @@ static inline bool ut_is_type(struct json_object *val, int type) {
return (tag && tag->type == type);
};
+
+#define UT_ET_DIV (sizeof(s->error.info.tokens[0]) * 8)
+#define UT_ET_TYPE typeof(s->error.info.tokens[0])
+
+static inline void ut_set_error_token(struct ut_state *s, int tokennr) {
+ s->error.info.tokens[tokennr / UT_ET_DIV] |= ((UT_ET_TYPE)1 << (tokennr % UT_ET_DIV));
+}
+
+static inline bool ut_is_error_token(struct ut_state *s, int tokennr) {
+ return (s->error.info.tokens[tokennr / UT_ET_DIV] & ((UT_ET_TYPE)1 << (tokennr % UT_ET_DIV)));
+}
+
+
uint32_t ut_new_op(struct ut_state *s, int type, struct json_object *val, ...);
uint32_t ut_wrap_op(struct ut_state *s, uint32_t parent, ...);
uint32_t ut_append_op(struct ut_state *s, uint32_t a, uint32_t b);