[313] | 1 | #ifndef __TYPE_UTIL_HPP__ |
---|
| 2 | #define __TYPE_UTIL_HPP__ |
---|
| 3 | |
---|
| 4 | #include <string> |
---|
[335] | 5 | namespace xios |
---|
[313] | 6 | { |
---|
[549] | 7 | class CDomain; |
---|
[313] | 8 | class CDomainGroup; |
---|
| 9 | class CField; |
---|
| 10 | class CFieldGroup; |
---|
| 11 | class CGrid; |
---|
| 12 | class CGridGroup; |
---|
| 13 | class CAxis; |
---|
| 14 | class CAxisGroup; |
---|
| 15 | class CFile; |
---|
| 16 | class CFileGroup; |
---|
| 17 | class CContext; |
---|
[352] | 18 | class CContextGroup; |
---|
[549] | 19 | class CCalendarWrapper; |
---|
| 20 | class CVariable; |
---|
| 21 | class CVariableGroup; |
---|
[621] | 22 | class CInverseAxis; |
---|
| 23 | class CInverseAxisGroup; |
---|
| 24 | class CZoomAxis; |
---|
| 25 | class CZoomAxisGroup; |
---|
[630] | 26 | class CInterpolateAxis; |
---|
| 27 | class CInterpolateAxisGroup; |
---|
[631] | 28 | class CZoomDomain; |
---|
| 29 | class CZoomDomainGroup; |
---|
[689] | 30 | class CInterpolateDomain; |
---|
| 31 | class CInterpolateDomainGroup; |
---|
[687] | 32 | class CGenerateRectilinearDomain; |
---|
| 33 | class CGenerateRectilinearDomainGroup; |
---|
[887] | 34 | class CScalar; |
---|
| 35 | class CScalarGroup; |
---|
[888] | 36 | class CReduceAxisToScalar; |
---|
| 37 | class CReduceAxisToScalarGroup; |
---|
[895] | 38 | class CReduceDomainToAxis; |
---|
| 39 | class CReduceDomainToAxisGroup; |
---|
| 40 | class CExtractDomainToAxis; |
---|
| 41 | class CExtractDomainToAxisGroup; |
---|
[934] | 42 | class CComputeConnectivityDomain; |
---|
| 43 | class CComputeConnectivityDomainGroup; |
---|
[313] | 44 | |
---|
[549] | 45 | template <typename T> inline string getStrType(void); |
---|
| 46 | |
---|
| 47 | #define macro(T) template <> inline string getStrType<T>(void) { return std::string(#T); } |
---|
| 48 | |
---|
[313] | 49 | macro(short) |
---|
| 50 | macro(unsigned short) |
---|
| 51 | macro(int) |
---|
| 52 | macro(unsigned int) |
---|
| 53 | macro(long) |
---|
| 54 | macro(unsigned long) |
---|
| 55 | macro(float) |
---|
| 56 | macro(double) |
---|
| 57 | macro(long double) |
---|
| 58 | macro(char) |
---|
| 59 | macro(unsigned char) |
---|
| 60 | macro(wchar_t) |
---|
| 61 | macro(bool) |
---|
[327] | 62 | #undef macro |
---|
[549] | 63 | |
---|
| 64 | #define macro(T) template <> inline string getStrType<T>(void) { return std::string(#T); } |
---|
[313] | 65 | macro(CDomain) |
---|
| 66 | macro(CDomainGroup) |
---|
| 67 | macro(CField) |
---|
| 68 | macro(CFieldGroup) |
---|
| 69 | macro(CGrid) |
---|
| 70 | macro(CGridGroup) |
---|
| 71 | macro(CAxis) |
---|
| 72 | macro(CAxisGroup) |
---|
| 73 | macro(CFile) |
---|
| 74 | macro(CFileGroup) |
---|
| 75 | macro(CContext) |
---|
[352] | 76 | macro(CContextGroup) |
---|
[549] | 77 | macro(CCalendarWrapper) |
---|
[352] | 78 | macro(CVariable) |
---|
| 79 | macro(CVariableGroup) |
---|
[621] | 80 | macro(CInverseAxis) |
---|
| 81 | macro(CInverseAxisGroup) |
---|
| 82 | macro(CZoomAxis) |
---|
| 83 | macro(CZoomAxisGroup) |
---|
[630] | 84 | macro(CInterpolateAxis) |
---|
| 85 | macro(CInterpolateAxisGroup) |
---|
[631] | 86 | macro(CZoomDomain) |
---|
| 87 | macro(CZoomDomainGroup) |
---|
[689] | 88 | macro(CInterpolateDomain) |
---|
| 89 | macro(CInterpolateDomainGroup) |
---|
[687] | 90 | macro(CGenerateRectilinearDomain) |
---|
| 91 | macro(CGenerateRectilinearDomainGroup) |
---|
[887] | 92 | macro(CScalar) |
---|
| 93 | macro(CScalarGroup) |
---|
[888] | 94 | macro(CReduceAxisToScalar) |
---|
| 95 | macro(CReduceAxisToScalarGroup) |
---|
[895] | 96 | macro(CReduceDomainToAxis) |
---|
| 97 | macro(CReduceDomainToAxisGroup) |
---|
| 98 | macro(CExtractDomainToAxis) |
---|
| 99 | macro(CExtractDomainToAxisGroup) |
---|
[934] | 100 | macro(CComputeConnectivityDomain) |
---|
| 101 | macro(CComputeConnectivityDomainGroup) |
---|
[313] | 102 | #undef macro |
---|
| 103 | } |
---|
| 104 | |
---|
| 105 | |
---|
| 106 | #endif |
---|