mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-02-22 03:11:27 +00:00
ast_binary_new to initialize codegen function ptr, codegen proto for store and binary ast nodes
This commit is contained in:
parent
c692794eb5
commit
41a39125be
2 changed files with 45 additions and 8 deletions
41
ast.c
41
ast.c
|
@ -111,7 +111,36 @@ ast_binary* ast_binary_new(lex_ctx_t ctx, int op,
|
||||||
ast_value* left, ast_value* right)
|
ast_value* left, ast_value* right)
|
||||||
{
|
{
|
||||||
ast_instantiate(ast_binary, ctx, ast_binary_delete);
|
ast_instantiate(ast_binary, ctx, ast_binary_delete);
|
||||||
ast_expression_init((ast_expression*)self, NULL); /* FIXME */
|
switch (op) {
|
||||||
|
case INSTR_STORE_F:
|
||||||
|
case INSTR_STORE_V:
|
||||||
|
case INSTR_STORE_S:
|
||||||
|
case INSTR_STORE_ENT:
|
||||||
|
case INSTR_STORE_FLD:
|
||||||
|
case INSTR_STORE_FNC:
|
||||||
|
case INSTR_STOREP_F:
|
||||||
|
case INSTR_STOREP_V:
|
||||||
|
case INSTR_STOREP_S:
|
||||||
|
case INSTR_STOREP_ENT:
|
||||||
|
case INSTR_STOREP_FLD:
|
||||||
|
case INSTR_STOREP_FNC:
|
||||||
|
#if 0
|
||||||
|
case INSTR_STORE_I:
|
||||||
|
case INSTR_STORE_IF:
|
||||||
|
case INSTR_STORE_FI:
|
||||||
|
case INSTR_STOREP_I:
|
||||||
|
case INSTR_STOREP_IF:
|
||||||
|
case INSTR_STOREP_FI:
|
||||||
|
case INSTR_STORE_P:
|
||||||
|
case INSTR_STOREP_P:
|
||||||
|
case INSTR_STOREP_C:
|
||||||
|
#endif
|
||||||
|
ast_expression_init((ast_expression*)self, (ast_expression_codegen*)&ast_bin_store_codegen);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ast_expression_init((ast_expression*)self, (ast_expression_codegen*)&ast_binary_codegen);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
self->op = op;
|
self->op = op;
|
||||||
self->left = left;
|
self->left = left;
|
||||||
|
@ -191,3 +220,13 @@ bool ast_block_codegen(ast_block *self, ast_function *func, ir_value **out)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ast_bin_store_codegen(ast_binary *self, ast_function *func, ir_value **out)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ast_binary_codegen(ast_binary *self, ast_function *func, ir_value **out)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
12
ast.h
12
ast.h
|
@ -122,15 +122,13 @@ ast_binary* ast_binary_new(lex_ctx_t ctx,
|
||||||
ast_value *right);
|
ast_value *right);
|
||||||
void ast_binary_delete(ast_binary*);
|
void ast_binary_delete(ast_binary*);
|
||||||
|
|
||||||
/* hmm, seperate functions? */
|
/* hmm, seperate functions?
|
||||||
bool ast_bin_add_codegen(ast_binary*, ir_function*, ir_value**);
|
bool ast_block_codegen(ast_block*, ast_function*, ir_value**);
|
||||||
/* ... */
|
*/
|
||||||
|
|
||||||
/* maybe for this one */
|
/* maybe for this one */
|
||||||
bool ast_bin_store_codegen(ast_binary*, ir_function*, ir_value**);
|
bool ast_bin_store_codegen(ast_binary*, ast_function*, ir_value**);
|
||||||
|
|
||||||
/* could decide what to use */
|
bool ast_binary_codegen(ast_binary*, ast_function*, ir_value**);
|
||||||
bool ast_binary_codegen(ast_binary*, ir_function*, ir_value**);
|
|
||||||
|
|
||||||
/* Blocks
|
/* Blocks
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue