/* scivi - visualization plugin for XMMS * Copyright (C) 2003 Vitaly V. Bursov * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef MATH_COMPILE_H #define MATH_COMPILE_H #include "dynam.h" struct math_expr { int line; int op; union { float num; char *str; struct math_expr *e1; } p1; struct math_expr *e2; struct math_expr *e3; struct math_expr *next; }; typedef struct math_expr_cont_tag { DynamicsData *dyn_data; struct math_expr_cont_tag *parent; struct math_expr *first; struct math_expr *last; } math_expr_cont; #define MATH(_func_) scivi_math_ ## _func_ void MATH(nop)(int line, void *p); void *MATH(number)(int line, float num); void *MATH(variable)(int line, char *str); void MATH(array_start)(int line, void *p); void *MATH(array)(int line, void *p, char *aname); void *MATH(stmt_if)(int line, void *p, void *expr); void *MATH(stmt_if_else)(int line, void *p); void *MATH(stmt_if_end)(int line, void *p); void MATH(stmt_loop_start)(int line, void *p); void *MATH(stmt_while_end)(int line, void *p, void *expr); void *MATH(stmt_do_end)(int line, void *p, void *expr); void *MATH(stmt_for_end)(int line, void *p, void *expr1, void *expr2, void *expr3); void MATH(sbreak)(int line, void *p); void MATH(scontinue)(int line, void *p); void *MATH(var_assgn)(int line, void *p, char *vname, void *expr); void *MATH(var_assgn_plus)(int line, void *p, char *vname, void *expr); void *MATH(var_assgn_min)(int line, void *p, char *vname, void *expr); void *MATH(var_assgn_div)(int line, void *p, char *vname, void *expr); void *MATH(var_assgn_mul)(int line, void *p, char *vname, void *expr); void *MATH(vararray_assgn)(int line, void *p, void *arr, void *expr); void *MATH(vararray_assgn_plus)(int line, void *p, void *arr, void *expr); void *MATH(vararray_assgn_min)(int line, void *p, void *arr, void *expr); void *MATH(vararray_assgn_div)(int line, void *p, void *arr, void *expr); void *MATH(vararray_assgn_mul)(int line, void *p, void *arr, void *expr); void MATH(funct_start)(int line, void *p); void *MATH(funct)(int line, void *p, char *fname); void *MATH(plus)(int line, void *p, void *expr1, void *expr2); void *MATH(minus)(int line, void *p, void *expr1, void *expr2); void *MATH(negate)(int line, void *p, void *expr); void *MATH(divide)(int line, void *p, void *expr1, void *expr2); void *MATH(multiply)(int line, void *p, void *expr1, void *expr2); void *MATH(or)(int line, void *p, void *expr1, void *expr2); void *MATH(not)(int line, void *p, void *expr); void *MATH(lnot)(int line, void *p, void *expr); void *MATH(and)(int line, void *p, void *expr1, void *expr2); void *MATH(xor)(int line, void *p, void *expr1, void *expr2); void *MATH(mod)(int line, void *p, void *expr1, void *expr2); void *MATH(oror)(int line, void *p, void *expr1, void *expr2); void *MATH(andand)(int line, void *p, void *expr1, void *expr2); void *MATH(gr)(int line, void *p, void *expr1, void *expr2); void *MATH(ls)(int line, void *p, void *expr1, void *expr2); void *MATH(ge)(int line, void *p, void *expr1, void *expr2); void *MATH(le)(int line, void *p, void *expr1, void *expr2); void *MATH(eq)(int line, void *p, void *expr1, void *expr2); void *MATH(neq)(int line, void *p, void *expr1, void *expr2); void MATH(end_of_statement)(int line, void *p, void *expr); int MATH(is_func_name)(math_expr_cont *p, const char *str); void MATH(expr_free)(struct math_expr *p); void MATH(expr_cont_free)(math_expr_cont *p); int MATH(expr_to_opcodes)(DynamicsData *d, Code **code, int *codesize, int codepos, struct math_expr *e, const char *var_prefix); #endif /* ! MATH_COMPILE_H */