Cthulhu  0.2.10
Cthulhu compiler collection
meta.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-only
2 #pragma once
3 
4 #include "core/compiler.h"
5 #include "core/text.h"
6 
7 typedef struct typevec_t typevec_t;
8 typedef struct json_t json_t;
9 typedef struct arena_t arena_t;
10 typedef struct scan_t scan_t;
11 typedef struct logger_t logger_t;
12 
13 typedef struct meta_info_t meta_info_t;
14 typedef struct meta_ast_t meta_ast_t;
15 typedef struct meta_field_t meta_field_t;
16 
17 typedef enum meta_type_t
18 {
24 
27 
28 typedef struct meta_info_t
29 {
31 
32  typevec_t *diagnostics; // typevec_t<diagnostic_t>
33  typevec_t *nodes; // typevec_t<meta_ast_t>
34 } meta_info_t;
35 
36 typedef struct meta_field_t
37 {
40 } meta_field_t;
41 
42 typedef struct meta_ast_t
43 {
45 
46  typevec_t *fields; // typevec_t<meta_field_t>
47 } meta_ast_t;
48 
49 CT_LOCAL meta_info_t *meta_info_parse(json_t *json, scan_t *scan, logger_t *logger, arena_t *arena);
#define CT_LOCAL
Definition: compiler.h:166
meta_type_t
Definition: meta.h:18
@ eMetaMpz
Definition: meta.h:19
@ eMetaString
Definition: meta.h:21
@ eMetaVec
Definition: meta.h:22
@ eMetaUnknown
Definition: meta.h:25
@ eMetaEnum
Definition: meta.h:23
@ eMetaAst
Definition: meta.h:20
CT_LOCAL meta_info_t * meta_info_parse(json_t *json, scan_t *scan, logger_t *logger, arena_t *arena)
Definition: meta.c:99
an allocator object
Definition: arena.h:86
a json value
Definition: json.h:43
a logging sink
Definition: notify.c:14
text_view_t name
Definition: meta.h:44
typevec_t * fields
Definition: meta.h:46
meta_type_t type
Definition: meta.h:39
text_view_t name
Definition: meta.h:38
text_view_t prefix
Definition: meta.h:30
typevec_t * diagnostics
Definition: meta.h:32
typevec_t * nodes
Definition: meta.h:33
a source file scanner
Definition: scan.h:24
a non-owning view of text
Definition: text.h:24
A vector with a fixed type size.
Definition: vector.h:24