23#define FIELD_TYPE_INT 0
24#define FIELD_TYPE_LONG 1
25#define FIELD_TYPE_FLOAT 2
26#define FIELD_TYPE_DOUBLE 3
27#define FIELD_TYPE_SSTR 4
28#define FIELD_TYPE_ENUM 5
29#define FIELD_TYPE_STRUCT 6
30#define FIELD_TYPE_BOOL 7
31#define FIELD_TYPE_MAP 8
32#define FIELD_TYPE_INT8 9
33#define FIELD_TYPE_INT16 10
34#define FIELD_TYPE_INT32 11
35#define FIELD_TYPE_INT64 12
36#define FIELD_TYPE_UINT8 13
37#define FIELD_TYPE_UINT16 14
38#define FIELD_TYPE_UINT32 15
39#define FIELD_TYPE_UINT64 16
40#define FIELD_TYPE_ONEOF 17
42#define TYPE_NAME_INT "int"
43#define TYPE_NAME_BOOL "bool"
44#define TYPE_NAME_SSTR "sstr_t"
45#define TYPE_NAME_LONG "long"
46#define TYPE_NAME_FLOAT "float"
47#define TYPE_NAME_DOUBLE "double"
48#define TYPE_NAME_INT8 "int8_t"
49#define TYPE_NAME_INT16 "int16_t"
50#define TYPE_NAME_INT32 "int32_t"
51#define TYPE_NAME_INT64 "int64_t"
52#define TYPE_NAME_UINT8 "uint8_t"
53#define TYPE_NAME_UINT16 "uint16_t"
54#define TYPE_NAME_UINT32 "uint32_t"
55#define TYPE_NAME_UINT64 "uint64_t"
61#define STRUCT_MAP_BUCKET_SIZE 4096
114 const char *filename;
136 sstr_t map_value_type_name;
169 const char *filename;
210#define TOKEN_LEFT_BRACE '{'
211#define TOKEN_RIGHT_BRACE '}'
212#define TOKEN_LEFT_BRACKET '['
213#define TOKEN_RIGHT_BRACKET ']'
214#define TOKEN_SEMICOLON ';'
215#define TOKEN_COMMA ','
216#define TOKEN_SHARPE '#'
218#define TOKEN_EQUAL '='
219#define TOKEN_STRING 4
220#define TOKEN_IDENTIFY 1
221#define TOKEN_INTEGER 2
224#define TOKEN_ERROR -1
Diagnostic engine for clang-style error reporting.
A simple hash_map implementation.
sstr_t are objects that represent sequences of characters.
void * sstr_t
sstr_t are objects that represent sequences of characters.
Definition sstr.h:75
int struct_parser_parse(struct struct_parser *parser, sstr_t content)
parse a struct definition file, and store the parsed structs in struct_parser.
Definition struct_parse.c:1488
int struct_parser_validate(struct struct_parser *parser)
Validate parsed schema for semantic errors.
Definition struct_parse.c:1740
struct struct_parser * struct_parser_new()
create and init a struct_parser instance.
Definition struct_parse.c:166
void struct_parser_free(struct struct_parser *parser)
free a struct_parser instance.
Definition struct_parse.c:206
int struct_parser_validate_to(struct struct_parser *parser, FILE *out)
Validate parsed schema and optionally print diagnostics.
Definition struct_parse.c:1712
structure to store a parsed enum definition.
Definition struct_parse.h:78
structure to store a single enum value (name-index pair). Enum values are stored as a linked list.
Definition struct_parse.h:67
Definition struct_parse.h:182
structure to store a parsed oneof (tagged union) definition.
Definition struct_parse.h:105
structure to store a single variant of a oneof (tagged union). Variants are stored as a linked list.
Definition struct_parse.h:93
position of string
Definition struct_parse.h:175
structure to store parsed structs. A struct may have multiple fields, we put fields in a linked list.
Definition struct_parse.h:160
structure to store field list of parsed structs. A struct may have multiple field,...
Definition struct_parse.h:122
parser context
Definition struct_parse.h:191
token
Definition struct_parse.h:230