eval.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:1k
源码类别:

midi

开发平台:

Unix_Linux

  1. /* eval.h: evaluation functions of expressions */
  2. #ifndef EVAL_H
  3. #define EVAL_H
  4. #include "func_types.h"
  5. #include "param_types.h"
  6. #define VAL_T 1
  7. #define PREFUN_T 3
  8. #define TREE_T 4
  9. #define NONE_T 0
  10. #define CONSTANT_TERM_T 0
  11. #define PARAM_TERM_T 1
  12. #define INFIX_ADD 0
  13. #define INFIX_MINUS 1
  14. #define INFIX_MOD 2
  15. #define INFIX_DIV 3
  16. #define INFIX_MULT 4
  17. #define INFIX_OR 5
  18. #define INFIX_AND 6
  19. //#define EVAL_DEBUG 
  20. double eval_gen_expr(gen_expr_t * gen_expr);
  21. inline gen_expr_t * opt_gen_expr(gen_expr_t * gen_expr, int ** param_list);
  22. gen_expr_t * const_to_expr(double val);
  23. gen_expr_t * param_to_expr(struct PARAM_T * param);
  24. gen_expr_t * prefun_to_expr(double (*func_ptr)(), gen_expr_t ** expr_list, int num_args);
  25. tree_expr_t * new_tree_expr(infix_op_t * infix_op, gen_expr_t * gen_expr, tree_expr_t * left, tree_expr_t * right);
  26. gen_expr_t * new_gen_expr(int type, void * item);
  27. val_expr_t * new_val_expr(int type, term_t term);
  28. int free_gen_expr(gen_expr_t * gen_expr);
  29. int free_prefun_expr(prefun_expr_t * prefun_expr);
  30. int free_tree_expr(tree_expr_t * tree_expr);
  31. int free_val_expr(val_expr_t * val_expr);
  32. infix_op_t * new_infix_op(int type, int precedence);
  33. int init_infix_ops();
  34. int destroy_infix_ops();
  35. void reset_engine_vars();
  36. gen_expr_t * clone_gen_expr(gen_expr_t * gen_expr);
  37. tree_expr_t * clone_tree_expr(tree_expr_t * tree_expr);
  38. val_expr_t * clone_val_expr(val_expr_t * val_expr);
  39. prefun_expr_t * clone_prefun_expr(prefun_expr_t * prefun_expr);
  40. #endif