Cthulhu  0.2.10
Cthulhu compiler collection
context.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-only
2 
3 #pragma once
4 
5 #include "cthulhu/tree/ops.h"
6 
7 #include "core/analyze.h"
8 
9 #include <stddef.h>
10 #include <stdbool.h>
11 
13 
14 typedef struct arena_t arena_t;
15 typedef struct node_t node_t;
16 typedef struct vector_t vector_t;
17 
18 typedef struct tree_context_t tree_context_t;
19 typedef struct tree_t tree_t;
20 
22 typedef struct tree_storage_t
23 {
25  const tree_t *storage;
26 
28  size_t length;
29 
33 
37 
38 CT_TREE_API void tree_set_qualifiers(IN_NOTNULL tree_t *tree, tree_quals_t qualifiers);
39 CT_TREE_API tree_quals_t tree_get_qualifiers(IN_NOTNULL const tree_t *tree);
40 
41 CT_TREE_API void tree_set_storage(IN_NOTNULL tree_t *tree, tree_storage_t storage);
42 CT_TREE_API tree_storage_t tree_get_storage(IN_NOTNULL const tree_t *tree);
43 
44 CT_TREE_API void tree_set_eval(IN_NOTNULL tree_t *tree, eval_model_t model);
45 CT_TREE_API eval_model_t tree_get_eval(IN_NOTNULL const tree_t *tree);
46 
48 CT_TREE_API const node_t *tree_get_node(IN_NOTNULL const tree_t *tree);
49 
51 CT_TREE_API const char *tree_get_name(IN_NOTNULL const tree_t *tree);
52 
54 CT_TREE_API const char *tree_get_user_name(IN_NOTNULL const tree_t *tree);
55 
57 CT_TREE_API bool tree_is_symbol_anonymous(IN_NOTNULL const tree_t *tree);
58 
60 CT_TREE_API const tree_t *tree_get_type(IN_NOTNULL const tree_t *tree);
61 
63 CT_TREE_API tree_kind_t tree_get_kind(IN_NOTNULL const tree_t *tree);
64 
66 CT_TREE_API bool tree_is(const tree_t *self, tree_kind_t kind);
67 
71 
CT_PUREFN CT_TREE_API const node_t * tree_get_node(const tree_t *tree)
Definition: context.c:94
CT_PUREFN CT_TREE_API tree_kind_t tree_get_kind(const tree_t *tree)
Definition: context.c:143
CT_PUREFN CT_TREE_API const char * tree_get_name(const tree_t *tree)
Definition: context.c:102
CT_PUREFN CT_TREE_API const char * tree_get_user_name(const tree_t *tree)
Definition: context.c:112
CT_PUREFN CT_TREE_API const tree_t * tree_get_type(const tree_t *tree)
Definition: context.c:132
CT_TREE_API eval_model_t tree_get_eval(const tree_t *tree)
Definition: context.c:86
CT_PUREFN CT_TREE_API bool tree_is(const tree_t *self, tree_kind_t kind)
Definition: query.c:91
struct tree_context_t tree_context_t
Definition: context.h:18
CT_TREE_API void tree_set_eval(tree_t *tree, eval_model_t model)
Definition: context.c:78
CT_TREE_API void tree_set_storage(tree_t *tree, tree_storage_t storage)
Definition: context.c:58
CT_TREE_API tree_quals_t tree_get_qualifiers(const tree_t *tree)
Definition: context.c:50
CT_TREE_API void tree_set_qualifiers(tree_t *tree, tree_quals_t qualifiers)
Definition: context.c:42
CT_TREE_API tree_storage_t tree_get_storage(const tree_t *tree)
Definition: context.c:70
CT_PUREFN CT_TREE_API bool tree_is_symbol_anonymous(const tree_t *tree)
Definition: context.c:122
#define CT_PUREFN
mark a function as pure, always returns the same value for the same arguments
Definition: analyze.h:228
#define IN_NOTNULL
annotate a parameter as not being null
#define CT_BEGIN_API
Definition: compiler.h:129
#define CT_END_API
Definition: compiler.h:130
tree_quals_t
all type qualifiers
Definition: ops.h:25
eval_model_t
tree evaluation model
Definition: ops.h:112
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
storage for a value
Definition: context.h:23
tree_quals_t quals
the qualifiers for the storage
Definition: context.h:31
size_t length
the count of elements
Definition: context.h:28
const tree_t * storage
the underlying storage type
Definition: context.h:25
Definition: tree.h:67
a generic vector of pointers
Definition: vector.c:16