generate_interface.hpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef __XIOS_GENERATE_INTERFACE_HPP__
  2. #define __XIOS_GENERATE_INTERFACE_HPP__
  3. #include "xios_spl.hpp"
  4. namespace xios
  5. {
  6. class CInterface
  7. {
  8. public:
  9. template <class T>
  10. static void AttributeCInterface(ostream& oss,const string& className,const string& name) ;
  11. static void AttributeIsDefinedCInterface(ostream& oss, const string& className,const string& name);
  12. template <class T>
  13. static void AttributeFortran2003Interface(ostream& oss,const string& className,const string& name) ;
  14. static void AttributeIsDefinedFortran2003Interface(ostream& oss,const string& className,const string& name);
  15. template <class T>
  16. static void AttributeFortranInterfaceDeclaration(ostream& oss,const string& className,const string& name) ;
  17. template <class T>
  18. static void AttributeFortranInterfaceGetDeclaration(ostream& oss,const string& className,const string& name) ;
  19. static void AttributeFortranInterfaceIsDefinedDeclaration(ostream& oss,const string& className,const string& name) ;
  20. template <class T>
  21. static void AttributeFortranInterfaceBody(ostream& oss,const string& className,const string& name) ;
  22. template <class T>
  23. static void AttributeFortranInterfaceGetBody(ostream& oss,const string& className,const string& name) ;
  24. static void AttributeFortranInterfaceIsDefinedBody(ostream& oss,const string& className,const string& name) ;
  25. template <class T>
  26. static string getStrFortranType(void) ;
  27. template <class T>
  28. static string getStrFortranKind(void) ;
  29. template <class T>
  30. static string getStrFortranKindC(void) ;
  31. template <class T>
  32. static bool matchingTypeCFortran(void) ;
  33. };
  34. /*
  35. template<> string CInterface::getStrFortranType<int>(void) {return string("INTEGER") ;}
  36. template<> string CInterface::getStrFortranType<bool>(void) {return string("LOGICAL") ;}
  37. template<> string CInterface::getStrFortranType<double>(void) {return string("REAL") ;}
  38. template<> string CInterface::getStrFortranType<float>(void) {return string("REAL") ;}
  39. template<> string CInterface::getStrFortranKind<int>(void) {return string("") ;}
  40. template<> string CInterface::getStrFortranKind<bool>(void) {return string("") ;}
  41. template<> string CInterface::getStrFortranKind<double>(void) {return string("(KIND=8)") ;}
  42. template<> string CInterface::getStrFortranKind<float>(void) {return string("(KIND=4)") ;}
  43. template<> string CInterface::getStrFortranKindC<int>(void) {return string("(KIND=C_INT)") ;}
  44. template<> string CInterface::getStrFortranKindC<bool>(void) {return string("(KIND=C_BOOL)") ;}
  45. template<> string CInterface::getStrFortranKindC<double>(void) {return string("(KIND=C_DOUBLE)") ;}
  46. template<> string CInterface::getStrFortranKindC<float>(void) {return string("(KIND=C_FLOAT)") ;}
  47. template<> bool CInterface::matchingTypeCFortran<int>(void) { return true ; }
  48. template<> bool CInterface::matchingTypeCFortran<bool>(void) { return false ;}
  49. template<> bool CInterface::matchingTypeCFortran<double>(void) { return true; }
  50. template<> bool CInterface::matchingTypeCFortran<float>(void) { return true; }
  51. */
  52. }
  53. #endif