X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=parser.h;h=f9f0ab56e74c63f9ef8c994450c523c1ab8827b0;hp=2393fcea7ef1081f0d6d5cb6b9ee32abc9ee8665;hb=e2ba77a5461096cb4f4a337ef3d8c2ef46552f97;hpb=76278e8b97578f210b34784a55925b043098def9 diff --git a/parser.h b/parser.h index 2393fce..f9f0ab5 100644 --- a/parser.h +++ b/parser.h @@ -3,9 +3,9 @@ #include "gmqcc.h" #include "lexer.h" #include "ast.h" +#include "intrin.h" struct parser_t; -struct intrin_t; struct fold_t { parser_t *parser; @@ -16,23 +16,11 @@ struct fold_t { hash_table_t *imm_string_dotranslate; /* map */ }; -struct intrin_func_t { - ast_expression *(*intrin)(intrin_t *); - const char *name; - const char *alias; - size_t args; -}; - -struct intrin_t { - std::vector intrinsics; - std::vector generated; - parser_t *parser; - fold_t *fold; -}; - #define parser_ctx(p) ((p)->lex->tok.ctx) struct parser_t { + parser_t() { } + lex_file *lex; int tok; @@ -89,7 +77,7 @@ struct parser_t { size_t max_param_count; fold_t *fold; - intrin_t *intrin; + intrin m_intrin; }; @@ -111,11 +99,4 @@ ast_expression *fold_binary (lex_ctx_t ctx, int, ast_expression *, ast_e int fold_cond_ifthen (ir_value *, ast_function *, ast_ifthen *); int fold_cond_ternary (ir_value *, ast_function *, ast_ternary *); -/* intrin.c */ -intrin_t *intrin_init (parser_t *parser); -void intrin_cleanup (intrin_t *intrin); -ast_expression *intrin_fold (intrin_t *intrin, ast_value *, ast_expression **); -ast_expression *intrin_func (intrin_t *intrin, const char *name); -ast_expression *intrin_debug_typestring(intrin_t *intrin); - #endif