CallConvention.h 892 B

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