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