1 /*******************************************************************/
2 /* XDMF */
3 /* eXtensible Data Model and Format */
4 /* */
5 /* Id : Id */
6 /* Date : $Date$ */
7 /* Version : $Revision$ */
8 /* */
9 /* Author: */
10 /* Jerry A. Clarke */
11 /* clarke@arl.army.mil */
12 /* US Army Research Laboratory */
13 /* Aberdeen Proving Ground, MD */
14 /* */
15 /* Copyright @ 2002 US Army Research Laboratory */
16 /* All Rights Reserved */
17 /* See Copyright.txt or http://www.arl.hpc.mil/ice for details */
18 /* */
19 /* This software is distributed WITHOUT ANY WARRANTY; without */
20 /* even the implied warranty of MERCHANTABILITY or FITNESS */
21 /* FOR A PARTICULAR PURPOSE. See the above copyright notice */
22 /* for more information. */
23 /* */
24 /*******************************************************************/
25 #include "XdmfHDFSupport.h"
26
27 namespace xdmf2
28 {
29
30 XdmfConstString
XdmfTypeToClassString(XdmfInt32 XdmfType)31 XdmfTypeToClassString( XdmfInt32 XdmfType ) {
32 switch( XdmfType ){
33 case XDMF_INT8_TYPE :
34 return( "Char");
35 case XDMF_UINT8_TYPE :
36 return( "UChar");
37 case XDMF_INT16_TYPE :
38 return( "Short");
39 case XDMF_UINT16_TYPE :
40 return( "UShort");
41 case XDMF_UINT32_TYPE :
42 return "UInt";
43 case XDMF_INT32_TYPE :
44 case XDMF_INT64_TYPE :
45 return( "Int");
46 case XDMF_FLOAT32_TYPE :
47 case XDMF_FLOAT64_TYPE :
48 return( "Float" );
49 default :
50 break;
51 }
52 return( "Compound" );
53 }
54
55 XdmfInt32
StringToXdmfType(XdmfConstString TypeName)56 StringToXdmfType( XdmfConstString TypeName ) {
57
58 if( STRCASECMP( TypeName, "XDMF_UINT8_TYPE" ) == 0 ) return( XDMF_UINT8_TYPE );
59 if( STRCASECMP( TypeName, "XDMF_UINT16_TYPE" ) == 0 ) return( XDMF_UINT16_TYPE );
60 if( STRCASECMP( TypeName, "XDMF_UINT32_TYPE" ) == 0 ) return( XDMF_UINT32_TYPE );
61 if( STRCASECMP( TypeName, "XDMF_INT8_TYPE" ) == 0 ) return( XDMF_INT8_TYPE );
62 if( STRCASECMP( TypeName, "XDMF_INT16_TYPE" ) == 0 ) return( XDMF_INT16_TYPE );
63 if( STRCASECMP( TypeName, "XDMF_INT32_TYPE" ) == 0 ) return( XDMF_INT32_TYPE );
64 if( STRCASECMP( TypeName, "XDMF_INT64_TYPE" ) == 0 ) return( XDMF_INT64_TYPE );
65 if( STRCASECMP( TypeName, "XDMF_FLOAT32_TYPE" ) == 0 ) return( XDMF_FLOAT32_TYPE );
66 if( STRCASECMP( TypeName, "XDMF_FLOAT64_TYPE" ) == 0 ) return( XDMF_FLOAT64_TYPE );
67 if( STRCASECMP( TypeName, "XDMF_COMPOUND_TYPE" ) == 0 ) return( XDMF_COMPOUND_TYPE );
68 return( XDMF_FAIL );
69 }
70
71 XdmfConstString
XdmfTypeToString(XdmfInt32 XdmfType)72 XdmfTypeToString( XdmfInt32 XdmfType ) {
73 switch( XdmfType ){
74 case XDMF_UINT8_TYPE :
75 return( "XDMF_UINT8_TYPE" );
76 case XDMF_UINT16_TYPE :
77 return( "XDMF_UINT16_TYPE" );
78 case XDMF_UINT32_TYPE :
79 return( "XDMF_UINT32_TYPE" );
80 case XDMF_INT8_TYPE :
81 return( "XDMF_INT8_TYPE" );
82 case XDMF_INT16_TYPE :
83 return( "XDMF_INT16_TYPE" );
84 case XDMF_INT32_TYPE :
85 return( "XDMF_INT32_TYPE" );
86 case XDMF_INT64_TYPE :
87 return( "XDMF_INT64_TYPE");
88 case XDMF_FLOAT32_TYPE :
89 return( "XDMF_FLOAT32_TYPE" );
90 case XDMF_FLOAT64_TYPE :
91 return( "XDMF_FLOAT64_TYPE" );
92 default :
93 break;
94 }
95 return( "XDMF_COMPOUND_TYPE" );
96 }
97
98 hid_t
XdmfTypeToHDF5Type(XdmfInt32 XdmfType)99 XdmfTypeToHDF5Type( XdmfInt32 XdmfType ) {
100 switch( XdmfType ){
101 case XDMF_UINT8_TYPE :
102 return( H5T_NATIVE_UINT8 );
103 case XDMF_UINT16_TYPE :
104 return( H5T_NATIVE_UINT16 );
105 case XDMF_UINT32_TYPE :
106 return( H5T_NATIVE_UINT32 );
107 case XDMF_INT8_TYPE :
108 return( H5T_NATIVE_INT8 );
109 case XDMF_INT16_TYPE :
110 return( H5T_NATIVE_INT16 );
111 case XDMF_INT32_TYPE :
112 return( H5T_NATIVE_INT32 );
113 case XDMF_INT64_TYPE :
114 return( H5T_NATIVE_INT64 );
115 case XDMF_FLOAT32_TYPE :
116 return( H5T_NATIVE_FLOAT );
117 case XDMF_FLOAT64_TYPE :
118 return( H5T_NATIVE_DOUBLE );
119 default :
120 break;
121 }
122 return( H5T_COMPOUND );
123 }
124
125 XdmfInt32
HDF5TypeToXdmfType(hid_t HDF5Type)126 HDF5TypeToXdmfType( hid_t HDF5Type ) {
127 switch( H5Tget_class( HDF5Type ) ) {
128 case H5T_INTEGER :
129 if ( H5Tget_sign(HDF5Type) )
130 {
131 switch( H5Tget_size( HDF5Type ) )
132 {
133 case 1 :
134 return( XDMF_INT8_TYPE );
135 case 2 :
136 return( XDMF_INT16_TYPE );
137 case 4 :
138 return( XDMF_INT32_TYPE );
139 case 8 :
140 return( XDMF_INT64_TYPE );
141 default :
142 break;
143 }
144 }
145 else
146 {
147 switch( H5Tget_size( HDF5Type ) )
148 {
149 case 1 :
150 return( XDMF_UINT8_TYPE );
151 case 2 :
152 return( XDMF_UINT16_TYPE );
153 case 4 :
154 return( XDMF_UINT32_TYPE );
155 default :
156 break;
157 }
158 }
159 break;
160 case H5T_FLOAT :
161 switch( H5Tget_size( HDF5Type ) ) {
162 case 4 :
163 return( XDMF_FLOAT32_TYPE );
164 case 8 :
165 return( XDMF_FLOAT64_TYPE );
166 default :
167 break;
168 }
169 break;
170 default :
171 return( XDMF_COMPOUND_TYPE );
172 break;
173 }
174 return( XDMF_FAIL );
175 }
176
177 }
178