9 #define TREE_TAG(ID, NAME, TAGS) ID = (TAGS),
22 #define TREE_EXPECT(SELF, KIND) CTASSERTF(tree_is(SELF, KIND), "expected %s, got %s", tree_kind_to_string(KIND), tree_to_string(SELF))
23 #define TREE_EXPECT_NOT(SELF, KIND) CTASSERTF(!tree_is(SELF, KIND), "expected not %s, got %s", tree_kind_to_string(KIND), tree_to_string(SELF))
CT_LOCAL tree_t * tree_decl(tree_kind_t kind, const node_t *node, const tree_t *type, const char *name, tree_quals_t quals)
CT_CONSTFN CT_LOCAL bool kind_has_tag(tree_kind_t kind, tree_tags_t tags)
CT_LOCAL tree_t * tree_new(tree_kind_t kind, const node_t *node, const tree_t *type)
CT_CONSTFN CT_LOCAL bool tree_has_tag(const tree_t *tree, tree_tags_t tags)
#define CT_CONSTFN
mark a function as const, has no side effects and always returns the same value for the same argument...
tree_quals_t
all type qualifiers
tree_kind_t
all tree node types
a position in a source file