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
{
19
eMetaMpz
,
20
eMetaAst
,
21
eMetaString
,
22
eMetaVec
,
23
eMetaEnum
,
24
25
eMetaUnknown
26
}
meta_type_t
;
27
28
typedef
struct
meta_info_t
29
{
30
text_view_t
prefix
;
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
{
38
text_view_t
name
;
39
meta_type_t
type
;
40
}
meta_field_t
;
41
42
typedef
struct
meta_ast_t
43
{
44
text_view_t
name
;
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);
text.h
compiler.h
CT_LOCAL
#define CT_LOCAL
Definition:
compiler.h:166
meta_type_t
meta_type_t
Definition:
meta.h:18
eMetaMpz
@ eMetaMpz
Definition:
meta.h:19
eMetaString
@ eMetaString
Definition:
meta.h:21
eMetaVec
@ eMetaVec
Definition:
meta.h:22
eMetaUnknown
@ eMetaUnknown
Definition:
meta.h:25
eMetaEnum
@ eMetaEnum
Definition:
meta.h:23
eMetaAst
@ eMetaAst
Definition:
meta.h:20
meta_info_parse
CT_LOCAL meta_info_t * meta_info_parse(json_t *json, scan_t *scan, logger_t *logger, arena_t *arena)
Definition:
meta.c:99
arena_t
an allocator object
Definition:
arena.h:86
json_t
a json value
Definition:
json.h:43
logger_t
a logging sink
Definition:
notify.c:14
meta_ast_t
Definition:
meta.h:43
meta_ast_t::name
text_view_t name
Definition:
meta.h:44
meta_ast_t::fields
typevec_t * fields
Definition:
meta.h:46
meta_field_t
Definition:
meta.h:37
meta_field_t::type
meta_type_t type
Definition:
meta.h:39
meta_field_t::name
text_view_t name
Definition:
meta.h:38
meta_info_t
Definition:
meta.h:29
meta_info_t::prefix
text_view_t prefix
Definition:
meta.h:30
meta_info_t::diagnostics
typevec_t * diagnostics
Definition:
meta.h:32
meta_info_t::nodes
typevec_t * nodes
Definition:
meta.h:33
scan_t
a source file scanner
Definition:
scan.h:24
text_view_t
a non-owning view of text
Definition:
text.h:24
typevec_t
A vector with a fixed type size.
Definition:
vector.h:24
support
meta
src
meta.h
Generated by
1.9.1