tinyexpr.vapi 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * Copyright (c) 2012-2023 Daniele Bartolini <[email protected]>
  3. * SPDX-License-Identifier: MIT
  4. */
  5. [CCode (cheader_filename = "tinyexpr.h")]
  6. namespace TinyExpr
  7. {
  8. [CCode (cname = "", cprefix = "TE_", has_type_id = false)]
  9. public enum VariableType {
  10. VARIABLE,
  11. FUNCTION0,
  12. FUNCTION1,
  13. FUNCTION2,
  14. FUNCTION3,
  15. FUNCTION4,
  16. FUNCTION5,
  17. FUNCTION6,
  18. FUNCTION7,
  19. CLOSURE0,
  20. CLOSURE1,
  21. CLOSURE2,
  22. CLOSURE3,
  23. CLOSURE4,
  24. CLOSURE5,
  25. CLOSURE6,
  26. CLOSURE7,
  27. FLAG_PURE
  28. }
  29. [Compact]
  30. [CCode (cname = "te_expr", free_function = "te_free")]
  31. public class Expr {
  32. int type;
  33. [CCode (cname = "value")]
  34. double value;
  35. [CCode (cname = "bound")]
  36. double *bound;
  37. [CCode (cname = "function")]
  38. void *function;
  39. void *parameters[1];
  40. }
  41. [SimpleType]
  42. [CCode (cname = "te_variable", has_type_id = false)]
  43. public struct Variable {
  44. char *name;
  45. void *address;
  46. int type;
  47. void *context;
  48. }
  49. [CCode (cname = "te_interp")]
  50. double interp(string expression, out int error);
  51. [CCode (cname = "te_compile")]
  52. Expr compile(string expression, Variable[] variables, out int error);
  53. [CCode (cname = "te_eval")]
  54. double eval(Expr n);
  55. [CCode (cname = "te_print")]
  56. void print(Expr n);
  57. }