tinyexpr.vapi 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * Copyright (c) 2012-2024 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. int type;
  34. [CCode (cname = "value")]
  35. double value;
  36. [CCode (cname = "bound")]
  37. double* bound;
  38. [CCode (cname = "function")]
  39. void* function;
  40. void* parameters[1];
  41. }
  42. [SimpleType]
  43. [CCode (cname = "te_variable", has_type_id = false)]
  44. public struct Variable
  45. {
  46. char* name;
  47. void* address;
  48. int type;
  49. void* context;
  50. }
  51. [CCode (cname = "te_interp")]
  52. double interp(string expression, out int error);
  53. [CCode (cname = "te_compile")]
  54. Expr compile(string expression, Variable[] variables, out int error);
  55. [CCode (cname = "te_eval")]
  56. double eval(Expr n);
  57. [CCode (cname = "te_print")]
  58. void print(Expr n);
  59. } /* namespace TinyExpr */