Cthulhu  0.2.10
Cthulhu compiler collection
util.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-only
2 
3 #pragma once
4 
5 #include <ctu_util_api.h>
6 
7 #include "core/compiler.h"
8 
9 #include <stdbool.h>
10 
11 #include <gmp.h>
12 
13 typedef struct tree_t tree_t;
14 typedef struct vector_t vector_t;
15 typedef struct node_t node_t;
16 
18 
23 
27 
28 typedef struct search_t {
29  const size_t *tags;
30  size_t count;
31 } search_t;
32 
40 CT_UTIL_API void *util_select_decl(tree_t *sema, search_t search, const char *name);
41 
42 typedef struct decl_search_t {
43  const size_t *module_tags;
44  size_t module_count;
45 
46  const size_t *decl_tags;
47  size_t decl_count;
49 
59 CT_UTIL_API tree_t *util_search_namespace(tree_t *sema, search_t search, const node_t *node, const vector_t *path, bool *is_imported);
60 
69 CT_UTIL_API tree_t *util_search_path(tree_t *sema, const decl_search_t *search, const node_t *node, vector_t *path);
70 
80 CT_UTIL_API tree_t *util_search_qualified(tree_t *sema, const decl_search_t *search, const node_t *node, const char *mod, const char *name);
81 
88 CT_UTIL_API bool util_eval_digit(mpz_t value, const tree_t *expr);
89 
91 
#define CT_BEGIN_API
Definition: compiler.h:129
#define CT_END_API
Definition: compiler.h:130
CT_UTIL_API tree_t * util_search_qualified(tree_t *sema, const decl_search_t *search, const node_t *node, const char *mod, const char *name)
search for a decl inside a module
Definition: query.c:125
CT_UTIL_API void * util_select_decl(tree_t *sema, search_t search, const char *name)
search for a declaration by name in a set of tags
Definition: util.c:16
CT_UTIL_API bool util_eval_digit(mpz_t value, const tree_t *expr)
evaluate a digit expression
Definition: util.c:293
CT_UTIL_API tree_t * util_search_namespace(tree_t *sema, search_t search, const node_t *node, const vector_t *path, bool *is_imported)
search for a namespace given a path, ignoring the last element in the path
Definition: query.c:66
CT_UTIL_API tree_t * util_search_path(tree_t *sema, const decl_search_t *search, const node_t *node, vector_t *path)
search for a decl given a path
Definition: query.c:92
const size_t * decl_tags
Definition: util.h:46
size_t module_count
Definition: util.h:44
const size_t * module_tags
Definition: util.h:43
size_t decl_count
Definition: util.h:47
a position in a source file
Definition: node.h:23
Definition: util.h:28
size_t count
Definition: util.h:30
const size_t * tags
Definition: util.h:29
Definition: tree.h:67
a generic vector of pointers
Definition: vector.c:16