call_idioms.h 763 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include <vector>
  3. #include "idiom.h"
  4. #include "icode.h"
  5. #include <deque>
  6. struct CallIdiom : public Idiom
  7. {
  8. protected:
  9. int m_param_count;
  10. public:
  11. virtual ~CallIdiom() {}
  12. CallIdiom(Function *f) : Idiom(f)
  13. {
  14. }
  15. };
  16. struct Idiom3 : public CallIdiom
  17. {
  18. protected:
  19. iICODE m_icodes[2];
  20. public:
  21. virtual ~Idiom3() {}
  22. Idiom3(Function *f) : CallIdiom(f)
  23. {
  24. }
  25. uint8_t minimum_match_length() {return 2;}
  26. bool match(iICODE pIcode);
  27. int action();
  28. };
  29. struct Idiom17 : public CallIdiom
  30. {
  31. protected:
  32. std::vector<iICODE> m_icodes;
  33. public:
  34. virtual ~Idiom17() {}
  35. Idiom17(Function *f) : CallIdiom(f)
  36. {
  37. }
  38. uint8_t minimum_match_length() {return 2;}
  39. bool match(iICODE pIcode);
  40. int action();
  41. };