parameter.h 1.1 KB

12345678910111213141516171819202122232425262728
  1. #ifndef VIRTUALMATH_PARAMETER_H
  2. #define VIRTUALMATH_PARAMETER_H
  3. #include "__macro.h"
  4. typedef struct Parameter{
  5. enum {
  6. only_value,
  7. name_value,
  8. only_args,
  9. } type;
  10. struct {
  11. struct Statement *value;
  12. struct Statement *name; // 仅在name-value模式生效
  13. } data;
  14. struct Parameter *next;
  15. } Parameter;
  16. Parameter *makeParameter();
  17. Parameter *makeOnlyValueParameter(struct Statement *st);
  18. Parameter *makeNameValueParameter(struct Statement *value, struct Statement *name);
  19. Parameter *makeOnlyArgsParameter(Statement *st);
  20. Parameter *connectParameter(Parameter *new, Parameter *base);
  21. Parameter *connectOnlyValueParameter(struct Statement *st, Parameter *base);
  22. Parameter *connectNameValueParameter(struct Statement *value, struct Statement *name, Parameter *base);
  23. Parameter *connectOnlyArgsParameter(Statement *st, Parameter *base);
  24. void freeParameter(Parameter *pt);
  25. struct VirtualMathResult setParameter(Parameter *call, Parameter *function, struct VirtualMathVarList *function_var, INTER_FUNCTIONSIG_CORE);
  26. #endif //VIRTUALMATH_PARAMETER_H