CallConvention.h 943 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include "ast.h"
  3. #ifdef PASCAL
  4. #undef PASCAL
  5. #endif
  6. class QTextStream;
  7. struct CConv {
  8. enum Type {
  9. UNKNOWN=0,
  10. C,
  11. PASCAL
  12. };
  13. virtual void processHLI(Function *func, Expr *_exp, iICODE picode)=0;
  14. virtual void writeComments(QTextStream &)=0;
  15. static CConv * create(Type v);
  16. protected:
  17. };
  18. struct C_CallingConvention : public CConv {
  19. virtual void processHLI(Function *func, Expr *_exp, iICODE picode);
  20. virtual void writeComments(QTextStream &);
  21. private:
  22. int processCArg(Function *callee, Function *pProc, ICODE *picode, size_t numArgs);
  23. };
  24. struct Pascal_CallingConvention : public CConv {
  25. virtual void processHLI(Function *func, Expr *_exp, iICODE picode);
  26. virtual void writeComments(QTextStream &);
  27. };
  28. struct Unknown_CallingConvention : public CConv {
  29. void processHLI(Function *func, Expr *_exp, iICODE picode) {}
  30. virtual void writeComments(QTextStream &);
  31. };