tinyexpr.vapi 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * Copyright (c) 2012-2026 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. {
  11. VARIABLE,
  12. FUNCTION0,
  13. FUNCTION1,
  14. FUNCTION2,
  15. FUNCTION3,
  16. FUNCTION4,
  17. FUNCTION5,
  18. FUNCTION6,
  19. FUNCTION7,
  20. CLOSURE0,
  21. CLOSURE1,
  22. CLOSURE2,
  23. CLOSURE3,
  24. CLOSURE4,
  25. CLOSURE5,
  26. CLOSURE6,
  27. CLOSURE7,
  28. FLAG_PURE
  29. }
  30. [Compact]
  31. [CCode (cname = "te_expr", free_function = "te_free")]
  32. public class Expr
  33. {
  34. int type;
  35. [CCode (cname = "value")]
  36. double value;
  37. [CCode (cname = "bound")]
  38. double* bound;
  39. [CCode (cname = "function")]
  40. void* function;
  41. void* parameters[1];
  42. }
  43. [SimpleType]
  44. [CCode (cname = "te_variable", has_type_id = false)]
  45. public struct Variable
  46. {
  47. char* name;
  48. void* address;
  49. int type;
  50. void* context;
  51. }
  52. [CCode (cname = "te_interp")]
  53. double interp(string expression, out int error);
  54. [CCode (cname = "te_compile")]
  55. Expr compile(string expression, Variable[] variables, out int error);
  56. [CCode (cname = "te_eval")]
  57. double eval(Expr n);
  58. [CCode (cname = "te_print")]
  59. void print(Expr n);
  60. } /* namespace TinyExpr */