dont serialize meta flag, wasm work
This commit is contained in:
@@ -1,19 +1,20 @@
|
||||
typedef enum {
|
||||
|
||||
#define AST_FLAG_XLIST\
|
||||
X(null)\
|
||||
X(string)\
|
||||
X(integer)\
|
||||
X(real)\
|
||||
X(binary)\
|
||||
X(enum)\
|
||||
X(enum_member)\
|
||||
X(struct)\
|
||||
X(struct_member)\
|
||||
X(var)\
|
||||
X(type_name)\
|
||||
X(type_pointer)\
|
||||
X(type_array)\
|
||||
#define AST_FLAG_XLIST \
|
||||
X(null) \
|
||||
X(string) \
|
||||
X(integer) \
|
||||
X(real) \
|
||||
X(binary) \
|
||||
X(enum) \
|
||||
X(enum_member) \
|
||||
X(struct) \
|
||||
X(struct_member) \
|
||||
X(var) \
|
||||
X(type_name) \
|
||||
X(type_pointer) \
|
||||
X(type_array) \
|
||||
X(dont_serialize)
|
||||
|
||||
#define X(NAME) ast_flag_##NAME,
|
||||
AST_FLAG_XLIST
|
||||
@@ -259,6 +260,11 @@ ast_t *parse_decls(ma_arena_t *arena, char *file, s8_t code) {
|
||||
ast_append(mem, type);
|
||||
|
||||
parser_expect(par, lex_kind_semicolon);
|
||||
if (parser_match(par, lex_kind_tag)) {
|
||||
if (parser_expecti(par, s8_lit("dont_serialize"))) {
|
||||
mem->flags |= set_bit(ast_flag_dont_serialize);
|
||||
}
|
||||
}
|
||||
}
|
||||
parser_expect(par, lex_kind_close_brace);
|
||||
parser_expect(par, lex_kind_semicolon);
|
||||
|
||||
@@ -124,7 +124,8 @@ void sb8_serial_ast_to_type_info(sb8_t *sb, ast_t *n) {
|
||||
for (ast_t *it = n->first; it; it = it->next) {
|
||||
s8_t name = it->string;
|
||||
s8_t type_info = s8_serial_ast_type_to_type_info(sb->arena, it->first);
|
||||
sb8_stmtf(sb, "{.name = s8_const_lit(\"%S\"), .type = &%S, .offset = offsetof(%S, %S)},", name, type_info, n->string, name);
|
||||
b32 dont_serialize = (it->flags & set_bit(ast_flag_dont_serialize)) ? true : false;
|
||||
sb8_stmtf(sb, "{.name = s8_const_lit(\"%S\"), .type = &%S, .offset = offsetof(%S, %S), .dont_serialize = %d},", name, type_info, n->string, name, dont_serialize);
|
||||
}
|
||||
sb->indent -= 1;
|
||||
sb8_stmtf(sb, "},");
|
||||
|
||||
Reference in New Issue
Block a user