struct fold_t {
parser_t *parser;
- ast_value **imm_float; /* vector<ast_value*> */
- ast_value **imm_vector; /* vector<ast_value*> */
- ast_value **imm_string; /* vector<ast_value*> */
+ std::vector<ast_value*> imm_float;
+ std::vector<ast_value*> imm_vector;
+ std::vector<ast_value*> imm_string;
hash_table_t *imm_string_untranslate; /* map<string, ast_value*> */
hash_table_t *imm_string_dotranslate; /* map<string, ast_value*> */
};
};
struct intrin_t {
- intrin_func_t *intrinsics; /* vector<intrin_func_t> */
- ast_expression **generated; /* vector<ast_expression*> */
- parser_t *parser;
- fold_t *fold;
+ std::vector<intrin_func_t> intrinsics;
+ std::vector<ast_expression*> generated;
+ parser_t *parser;
+ fold_t *fold;
};
#define parser_ctx(p) ((p)->lex->tok.ctx)
struct parser_t {
lex_file *lex;
- int tok;
+ int tok;
- bool ast_cleaned;
+ bool ast_cleaned;
- ast_expression **globals;
- ast_expression **fields;
- ast_function **functions;
- size_t translated;
+ std::vector<ast_expression *> globals;
+ std::vector<ast_expression *> fields;
+ std::vector<ast_function *> functions;
+ size_t translated;
/* must be deleted first, they reference immediates and values */
- ast_value **accessors;
+ std::vector<ast_value *> accessors;
ast_value *nil;
ast_value *reserved_version;
size_t crc_fields;
ast_function *function;
- ht aliases;
+ ht aliases;
/* All the labels the function defined...
* Should they be in ast_function instead?
/* not to be used directly, we use the hash table */
ast_expression **_locals;
- size_t *_blocklocals;
- ast_value **_typedefs;
- size_t *_blocktypedefs;
- lex_ctx_t *_block_ctx;
+ size_t *_blocklocals;
+ ast_value **_typedefs;
+ size_t *_blocktypedefs;
+ lex_ctx_t *_block_ctx;
/* we store the '=' operator info */
const oper_info *assign_op;
bool noref;
/* collected information */
- size_t max_param_count;
+ size_t max_param_count;
- fold_t *fold;
+ fold_t *fold;
intrin_t *intrin;
};