interface.sol 924 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. interface operator {
  2. function op1(int32 a, int32 b) external returns (int32);
  3. function op2(int32 a, int32 b) external returns (int32);
  4. }
  5. contract ferqu {
  6. operator op;
  7. constructor(bool do_adds) {
  8. // Note: on Solana, new Contract() requires an address
  9. if (do_adds) {
  10. op = new m1();
  11. } else {
  12. op = new m2();
  13. }
  14. }
  15. function x(int32 b) public returns (int32) {
  16. return op.op1(102, b);
  17. }
  18. }
  19. contract m1 is operator {
  20. function op1(int32 a, int32 b) public override returns (int32) {
  21. return a + b;
  22. }
  23. function op2(int32 a, int32 b) public override returns (int32) {
  24. return a - b;
  25. }
  26. }
  27. contract m2 is operator {
  28. function op1(int32 a, int32 b) public override returns (int32) {
  29. return a * b;
  30. }
  31. function op2(int32 a, int32 b) public override returns (int32) {
  32. return a / b;
  33. }
  34. }