IterationIR.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #ifndef MANDEL_ITERATIONIR_H
  2. #define MANDEL_ITERATIONIR_H
  3. #include <string>
  4. #include <vector>
  5. #include "IterationFormula.h"
  6. #include "Arena.h"
  7. namespace mnd
  8. {
  9. namespace ir
  10. {
  11. struct Constant;
  12. struct Variable;
  13. struct Negation;
  14. struct BinaryOperation;
  15. struct Addition;
  16. struct Multiplication;
  17. using Node = std::variant<
  18. Constant,
  19. Variable,
  20. Negation,
  21. Addition,
  22. Multiplication
  23. >;
  24. class Formula
  25. {
  26. util::Arena<Node> nodeArena;
  27. Node* newA;
  28. Node* newB;
  29. };
  30. }
  31. }
  32. struct mnd::ir::Constant
  33. {
  34. double value;
  35. };
  36. struct mnd::ir::Variable
  37. {
  38. std::string name;
  39. };
  40. struct mnd::ir::Negation
  41. {
  42. Node* value;
  43. };
  44. struct mnd::ir::BinaryOperation
  45. {
  46. Node* a;
  47. Node* b;
  48. };
  49. struct mnd::ir::Addition : mnd::ir::BinaryOperation
  50. {
  51. };
  52. struct mnd::ir::Multiplication : mnd::ir::BinaryOperation
  53. {
  54. };
  55. #endif // MANDEL_ITERATIONIR_H