Operation.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #ifndef OPERATION_H
  2. #define OPERATION_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #define OP_NUMBER(TYPE) OP_##TYPE##_INT, OP_##TYPE##_FLOAT
  7. #define OP_CHANGE_NUMBER(TYPE) \
  8. OP_PUSH_PRE_##TYPE##_CHANGE, OP_PUSH_POST_##TYPE##_CHANGE, \
  9. OP_##TYPE##_CHANGE
  10. typedef enum Operation {
  11. OP_NOTHING,
  12. OP_NUMBER(PUSH),
  13. OP_PUSH_TEXT,
  14. OP_NUMBER(ADD),
  15. OP_NUMBER(SUB),
  16. OP_NUMBER(MUL),
  17. OP_NUMBER(DIV),
  18. OP_MOD_INT,
  19. OP_NUMBER(INVERT_SIGN),
  20. OP_NUMBER(LESS),
  21. OP_NUMBER(LESS_EQUAL),
  22. OP_NUMBER(GREATER),
  23. OP_NUMBER(GREATER_EQUAL),
  24. OP_NUMBER(EQUAL),
  25. OP_NUMBER(NOT_EQUAL),
  26. OP_EQUAL_POINTER,
  27. OP_NOT_EQUAL_POINTER,
  28. OP_NOT,
  29. OP_AND,
  30. OP_OR,
  31. OP_BIT_NOT_INT,
  32. OP_BIT_AND_INT,
  33. OP_BIT_OR_INT,
  34. OP_BIT_XOR_INT,
  35. OP_LEFT_SHIFT_INT,
  36. OP_RIGHT_SHIFT_INT,
  37. OP_LINE,
  38. OP_GOTO,
  39. OP_IF_GOTO,
  40. OP_PEEK_FALSE_GOTO,
  41. OP_PEEK_TRUE_GOTO,
  42. OP_GOSUB,
  43. OP_RETURN,
  44. OP_NUMBER(RETURN),
  45. OP_RETURN_POINTER,
  46. OP_RESERVE,
  47. OP_GRESERVE,
  48. OP_PUSH_STRUCT_REFERENCE,
  49. OP_NUMBER(LOAD),
  50. OP_NUMBER(STORE),
  51. OP_DEREFERENCE_VAR,
  52. OP_DEREFERENCE_GVAR,
  53. OP_LOAD_ARRAY,
  54. OP_DUPLICATE_REFERENCE,
  55. OP_ADD_REFERENCE,
  56. OP_NEW,
  57. OP_LENGTH,
  58. OP_STORE_ARRAY,
  59. OP_PUSH_PRE_CHANGE_INT,
  60. OP_PUSH_POST_CHANGE_INT,
  61. OP_CHANGE_INT,
  62. OP_FLOAT_TO_INT,
  63. OP_INT_TO_FLOAT,
  64. OP_CALL
  65. } Operation;
  66. #ifdef __cplusplus
  67. }
  68. #endif
  69. #endif