CallConvention.h 915 B

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