idiom.h 424 B

12345678910111213141516171819202122
  1. #pragma once
  2. #include "icode.h"
  3. #include "Procedure.h"
  4. struct Idiom
  5. {
  6. protected:
  7. Function *m_func;
  8. iICODE m_end;
  9. public:
  10. Idiom(Function *f) : m_func(f),m_end(f->Icode.end())
  11. {
  12. }
  13. virtual uint8_t minimum_match_length()=0;
  14. virtual bool match(iICODE at)=0;
  15. virtual int action()=0;
  16. int operator ()(iICODE at)
  17. {
  18. if(match(at))
  19. return action();
  20. return 1;
  21. }
  22. };