Cthulhu  0.2.10
Cthulhu compiler collection
query.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-only
2 
3 #pragma once
4 
5 #include "core/compiler.h"
6 #include "cthulhu/tree/tree.h"
7 
8 typedef struct node_t node_t;
9 typedef struct tree_t tree_t;
10 
12 
13 CT_TREE_API const char *tree_kind_to_string(tree_kind_t kind);
14 CT_TREE_API const char *tree_to_string(const tree_t *self);
15 CT_TREE_API char *tree_to_string_arena(const tree_t *self, arena_t *arena);
16 
17 CT_TREE_API const tree_attribs_t *tree_get_attrib(const tree_t *self);
18 
19 CT_TREE_API bool tree_has_vis(const tree_t *self, tree_visibility_t visibility);
20 
21 CT_TREE_API bool tree_has_storage(const tree_t *self);
22 
26 
27 CT_TREE_API tree_quals_t tree_get_storage_quals(const tree_t *self);
28 CT_TREE_API const tree_t *tree_get_storage_type(const tree_t *self);
29 CT_TREE_API size_t tree_get_storage_size(const tree_t *self);
30 
34 
36 CT_TREE_API vector_t *tree_enum_get_cases(const tree_t *self);
37 
41 
43 CT_TREE_API const tree_t *tree_fn_get_return(const tree_t *self);
44 
46 CT_TREE_API const vector_t *tree_fn_get_params(const tree_t *self);
47 
49 CT_TREE_API tree_arity_t tree_fn_get_arity(const tree_t *self);
50 
54 
56 CT_TREE_API tree_t *tree_ty_get_field(const tree_t *self, const char *name);
57 
59 CT_TREE_API tree_t *tree_ty_get_case(const tree_t *self, const char *name);
60 
62 CT_TREE_API bool tree_ty_is_address(const tree_t *type);
63 
65 CT_TREE_API tree_quals_t tree_ty_get_quals(const tree_t *self);
66 
75 CT_TREE_API const tree_t *tree_ty_load_type(const tree_t *self);
76 
CT_TREE_API tree_quals_t tree_get_storage_quals(const tree_t *self)
Definition: query.c:126
CT_PUREFN CT_TREE_API bool tree_ty_is_address(const tree_t *type)
Definition: query.c:238
CT_PUREFN CT_TREE_API tree_arity_t tree_fn_get_arity(const tree_t *self)
Definition: query.c:191
CT_TREE_API const char * tree_to_string(const tree_t *self)
Definition: query.c:40
CT_PUREFN CT_TREE_API tree_t * tree_ty_get_case(const tree_t *self, const char *name)
Definition: query.c:231
CT_TREE_API char * tree_to_string_arena(const tree_t *self, arena_t *arena)
Definition: query.c:46
CT_PUREFN CT_TREE_API const tree_t * tree_fn_get_return(const tree_t *self)
Definition: query.c:167
CT_TREE_API const tree_t * tree_get_storage_type(const tree_t *self)
Definition: query.c:136
CT_TREE_API bool tree_has_storage(const tree_t *self)
Definition: query.c:114
CT_PUREFN CT_TREE_API tree_quals_t tree_ty_get_quals(const tree_t *self)
Definition: query.c:257
CT_PUREFN CT_TREE_API vector_t * tree_enum_get_cases(const tree_t *self)
Definition: query.c:156
CT_PUREFN CT_TREE_API tree_t * tree_ty_get_field(const tree_t *self, const char *name)
Definition: query.c:224
CT_TREE_API const tree_attribs_t * tree_get_attrib(const tree_t *self)
Definition: query.c:83
CT_TREE_API bool tree_has_vis(const tree_t *self, tree_visibility_t visibility)
Definition: query.c:98
CT_BEGIN_API CT_TREE_API const char * tree_kind_to_string(tree_kind_t kind)
Definition: query.c:23
CT_PUREFN CT_TREE_API const vector_t * tree_fn_get_params(const tree_t *self)
Definition: query.c:179
CT_PUREFN CT_TREE_API const tree_t * tree_ty_load_type(const tree_t *self)
get the type of a type after it has been loaded
Definition: query.c:267
CT_TREE_API size_t tree_get_storage_size(const tree_t *self)
Definition: query.c:144
#define CT_PUREFN
mark a function as pure, always returns the same value for the same arguments
Definition: analyze.h:228
#define CT_BEGIN_API
Definition: compiler.h:129
#define CT_END_API
Definition: compiler.h:130
tree_arity_t
all arities
Definition: ops.h:64
tree_quals_t
all type qualifiers
Definition: ops.h:25
tree_visibility_t
symbol visibility
Definition: ops.h:88
tree_kind_t
all tree node types
Definition: ops.h:17
an allocator object
Definition: arena.h:86
a position in a source file
Definition: node.h:23
Definition: tree.h:67
tree_kind_t kind
Definition: tree.h:68
const char * name
the name of the declaration
Definition: tree.h:163
const tree_t * type
Definition: tree.h:70
arena_t * arena
Definition: tree.h:223
a generic vector of pointers
Definition: vector.c:16