H3D API  2.4.1
X3DTypeFunctions.h
Go to the documentation of this file.
1 // Copyright 2004-2019, SenseGraphics AB
3 //
4 // This file is part of H3D API.
5 //
6 // H3D API is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
10 //
11 // H3D API is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with H3D API; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // A commercial license is also available. Please contact us at
21 // www.sensegraphics.com for more information.
22 //
23 //
27 //
29 
30 #ifndef __X3DTYPEFUNCTIONS_H__
31 #define __X3DTYPEFUNCTIONS_H__
32 
33 #include <H3D/X3DTypes.h>
34 #include <H3D/FieldTemplates.h>
35 #include <H3D/SFNode.h>
36 #include <H3D/MFNode.h>
37 #include <H3D/SFFloat.h>
38 #include <H3D/MFFloat.h>
39 #include <H3D/SFDouble.h>
40 #include <H3D/MFDouble.h>
41 #include <H3D/SFTime.h>
42 #include <H3D/MFTime.h>
43 #include <H3D/SFInt32.h>
44 #include <H3D/MFInt32.h>
45 #include <H3D/SFVec2f.h>
46 #include <H3D/MFVec2f.h>
47 #include <H3D/SFVec3f.h>
48 #include <H3D/MFVec3f.h>
49 #include <H3D/SFVec4f.h>
50 #include <H3D/MFVec4f.h>
51 #include <H3D/SFVec2d.h>
52 #include <H3D/MFVec2d.h>
53 #include <H3D/SFVec3d.h>
54 #include <H3D/MFVec3d.h>
55 #include <H3D/SFVec4d.h>
56 #include <H3D/MFVec4d.h>
57 #include <H3D/SFBool.h>
58 #include <H3D/MFBool.h>
59 #include <H3D/SFString.h>
60 #include <H3D/MFString.h>
61 #include <H3D/SFColor.h>
62 #include <H3D/MFColor.h>
63 #include <H3D/SFColorRGBA.h>
64 #include <H3D/MFColorRGBA.h>
65 #include <H3D/SFRotation.h>
66 #include <H3D/MFRotation.h>
67 #include <H3D/SFQuaternion.h>
68 #include <H3D/MFQuaternion.h>
69 #include <H3D/SFMatrix3f.h>
70 #include <H3D/MFMatrix3f.h>
71 #include <H3D/SFMatrix3d.h>
72 #include <H3D/MFMatrix3d.h>
73 #include <H3D/SFMatrix4f.h>
74 #include <H3D/MFMatrix4f.h>
75 #include <H3D/SFMatrix4d.h>
76 #include <H3D/MFMatrix4d.h>
77 
78 namespace H3D {
79  namespace X3DTypes {
80  inline const char* typeToString( X3DType t ) {
81  switch( t ) {
82  case SFFLOAT: return "SFFloat";
83  case MFFLOAT: return "MFFloat";
84  case SFDOUBLE: return "SFDouble";
85  case MFDOUBLE: return "MFDouble";
86  case SFTIME: return "SFTime";
87  case MFTIME: return "MFTime";
88  case SFINT32: return "SFInt32";
89  case MFINT32: return "MFInt32";
90  case SFVEC2F: return "SFVec2f";
91  case MFVEC2F: return "MFVec2f";
92  case SFVEC2D: return "SFVec2d";
93  case MFVEC2D: return "MFVec2d";
94  case SFVEC3F: return "SFVec3f";
95  case MFVEC3F: return "MFVec3f";
96  case SFVEC3D: return "SFVec3d";
97  case MFVEC3D: return "MFVec3d";
98  case SFVEC4F: return "SFVec4f";
99  case MFVEC4F: return "MFVec4f";
100  case SFVEC4D: return "SFVec4d";
101  case MFVEC4D: return "MFVec4d";
102  case SFBOOL: return "SFBool";
103  case MFBOOL: return "MFBool";
104  case SFSTRING: return "SFString";
105  case MFSTRING: return "MFString";
106  case SFNODE: return "SFNode";
107  case MFNODE: return "MFNode";
108  case SFCOLOR: return "SFColor";
109  case MFCOLOR: return "MFColor";
110  case SFCOLORRGBA: return "SFColorRGBA";
111  case MFCOLORRGBA: return "MFColorRGBA";
112  case SFROTATION: return "SFRotation";
113  case MFROTATION: return "MFRotation";
114  case SFQUATERNION: return "SFQuaternion";
115  case MFQUATERNION: return "MFQuaternion";
116  case SFMATRIX3F: return "SFMatrix3f";
117  case MFMATRIX3F: return "MFMatrix3f";
118  case SFMATRIX4F: return "SFMatrix4f";
119  case MFMATRIX4F: return "MFMatrix4f";
120  case SFMATRIX3D: return "SFMatrix3d";
121  case MFMATRIX3D: return "MFMatrix3d";
122  case SFMATRIX4D: return "SFMatrix4d";
123  case MFMATRIX4D: return "MFMatrix4d";
124  case UNKNOWN_X3D_TYPE:
125  default:return "UNKNOWN_X3D_TYPE";
126  };
127  }
128 
129  inline X3DType stringToType( const char *t ) {
130  if( strcmp( t, "SFFloat" ) == 0 ) return SFFLOAT;
131  else if( strcmp( t, "MFFloat" ) == 0 ) return MFFLOAT;
132  else if( strcmp( t, "SFDouble" ) == 0 ) return SFDOUBLE;
133  else if( strcmp( t, "MFDouble" ) == 0 ) return MFDOUBLE;
134  else if( strcmp( t, "SFTime" ) == 0 ) return SFTIME;
135  else if( strcmp( t, "MFTime" ) == 0 ) return MFTIME;
136  else if( strcmp( t, "SFInt32" ) == 0 ) return SFINT32;
137  else if( strcmp( t, "MFInt32" ) == 0 ) return MFINT32;
138  else if( strcmp( t, "SFVec2f" ) == 0 ) return SFVEC2F;
139  else if( strcmp( t, "MFVec2f" ) == 0 ) return MFVEC2F;
140  else if( strcmp( t, "SFVec3f" ) == 0 ) return SFVEC3F;
141  else if( strcmp( t, "MFVec3f" ) == 0 ) return MFVEC3F;
142  else if( strcmp( t, "SFVec4f" ) == 0 ) return SFVEC4F;
143  else if( strcmp( t, "MFVec4f" ) == 0 ) return MFVEC4F;
144  else if( strcmp( t, "SFVec2d" ) == 0 ) return SFVEC2D;
145  else if( strcmp( t, "MFVec2d" ) == 0 ) return MFVEC2D;
146  else if( strcmp( t, "SFVec3d" ) == 0 ) return SFVEC3D;
147  else if( strcmp( t, "MFVec3d" ) == 0 ) return MFVEC3D;
148  else if( strcmp( t, "SFVec4d" ) == 0 ) return SFVEC4D;
149  else if( strcmp( t, "MFVec4d" ) == 0 ) return MFVEC4D;
150  else if( strcmp( t, "SFBool" ) == 0 ) return SFBOOL;
151  else if( strcmp( t, "MFBool" ) == 0 ) return MFBOOL;
152  else if( strcmp( t, "SFString" ) == 0 ) return SFSTRING;
153  else if( strcmp( t, "MFString" ) == 0 ) return MFSTRING;
154  else if( strcmp( t, "SFNode" ) == 0 ) return SFNODE;
155  else if( strcmp( t, "MFNode" ) == 0 ) return MFNODE;
156  else if( strcmp( t, "SFColor" ) == 0 ) return SFCOLOR;
157  else if( strcmp( t, "MFColor" ) == 0 ) return MFCOLOR;
158  else if( strcmp( t, "SFColorRGBA" ) == 0 ) return SFCOLORRGBA;
159  else if( strcmp( t, "MFColorRGBA" ) == 0 ) return MFCOLORRGBA;
160  else if( strcmp( t, "SFRotation" ) == 0 ) return SFROTATION;
161  else if( strcmp( t, "MFRotation" ) == 0 ) return MFROTATION;
162  else if( strcmp( t, "SFQuaternion" ) == 0 ) return SFQUATERNION;
163  else if( strcmp( t, "MFQuaternion" ) == 0 ) return MFQUATERNION;
164  else if( strcmp( t, "SFMatrix3f" ) == 0 ) return SFMATRIX3F;
165  else if( strcmp( t, "MFMatrix3f" ) == 0 ) return MFMATRIX3F;
166  else if( strcmp( t, "SFMatrix4f" ) == 0 ) return SFMATRIX4F;
167  else if( strcmp( t, "MFMatrix4f" ) == 0 ) return MFMATRIX4F;
168  else if( strcmp( t, "SFMatrix3d" ) == 0 ) return SFMATRIX3D;
169  else if( strcmp( t, "MFMatrix3d" ) == 0 ) return MFMATRIX3D;
170  else if( strcmp( t, "SFMatrix4d" ) == 0 ) return SFMATRIX4D;
171  else if( strcmp( t, "MFMatrix4d" ) == 0 ) return MFMATRIX4D;
172  else return UNKNOWN_X3D_TYPE;
173  }
174 
175  inline Field *newFieldInstance( X3DTypes::X3DType t ) {
176  switch( t ) {
177  case X3DTypes::SFFLOAT:
178  return new SFFloat;
179  case X3DTypes::MFFLOAT:
180  return new MFFloat;
181  case X3DTypes::SFDOUBLE:
182  return new SFDouble;
183  case X3DTypes::MFDOUBLE:
184  return new MFDouble;
185  case X3DTypes::SFTIME:
186  return new SFTime;
187  case X3DTypes::MFTIME:
188  return new MFTime;
189  case X3DTypes::SFINT32:
190  return new SFInt32;
191  case X3DTypes::MFINT32:
192  return new MFInt32;
193  case X3DTypes::SFVEC2F:
194  return new SFVec2f;
195  case X3DTypes::MFVEC2F:
196  return new MFVec2f;
197  case X3DTypes::SFVEC2D:
198  return new SFVec2d;
199  case X3DTypes::MFVEC2D:
200  return new MFVec2d;
201  case X3DTypes::SFVEC3F:
202  return new SFVec3f;
203  case X3DTypes::MFVEC3F:
204  return new MFVec3f;
205  case X3DTypes::SFVEC3D:
206  return new SFVec3d;
207  case X3DTypes::MFVEC3D:
208  return new MFVec3d;
209  case X3DTypes::SFVEC4F:
210  return new SFVec4f;
211  case X3DTypes::MFVEC4F:
212  return new MFVec4f;
213  case X3DTypes::SFVEC4D:
214  return new SFVec4d;
215  case X3DTypes::MFVEC4D:
216  return new MFVec4d;
217  case X3DTypes::SFBOOL:
218  return new SFBool;
219  case X3DTypes::MFBOOL:
220  return new MFBool;
221  case X3DTypes::SFSTRING:
222  return new SFString;
223  case X3DTypes::MFSTRING:
224  return new MFString;
225  case X3DTypes::SFNODE:
226  return new SFNode;
227  case X3DTypes::MFNODE:
228  return new MFNode;
229  case X3DTypes::SFCOLOR:
230  return new SFColor;
231  case X3DTypes::MFCOLOR:
232  return new MFColor;
233  case X3DTypes::SFCOLORRGBA:
234  return new SFColorRGBA;
235  case X3DTypes::MFCOLORRGBA:
236  return new MFColorRGBA;
237  case X3DTypes::SFROTATION:
238  return new SFRotation;
239  case X3DTypes::MFROTATION:
240  return new MFRotation;
241  case X3DTypes::SFQUATERNION:
242  return new SFQuaternion;
243  case X3DTypes::MFQUATERNION:
244  return new MFQuaternion;
245  case X3DTypes::SFMATRIX3F:
246  return new SFMatrix3f;
247  case X3DTypes::MFMATRIX3F:
248  return new MFMatrix3f;
249  case X3DTypes::SFMATRIX4F:
250  return new SFMatrix4f;
251  case X3DTypes::MFMATRIX4F:
252  return new MFMatrix4f;
253  case X3DTypes::SFMATRIX3D:
254  return new SFMatrix3d;
255  case X3DTypes::MFMATRIX3D:
256  return new MFMatrix3d;
257  case X3DTypes::SFMATRIX4D:
258  return new SFMatrix4d;
259  case X3DTypes::MFMATRIX4D:
260  return new MFMatrix4d;
261  case X3DTypes::UNKNOWN_X3D_TYPE:
262  default: return NULL;
263  }
264  }
265 
266  inline Field *newFieldInstance( const char *t ) {
267  return newFieldInstance( stringToType( t ) );
268  }
269 
270  }
271 }
272 
273 #endif
Contains different templates to modify field behaviour.
Contains the MFBool field class.
Contains the MFColorRGBA field class.
Contains the MFColor field class.
Contains the MFDouble field class.
Contains the MFFloat field class.
Contains the MFInt32 field class.
Contains the MFMatrix3d field class.
Contains the MFMatrix3f field class.
Contains the MFMatrix4d field class.
Contains the MFMatrix4f field class.
Contains the MFNode class.
Contains the MFQuaternion field class.
Contains the MFRotation field class.
Contains the MFString field class.
Contains the MFTime field class.
Contains the MFVec2d field class.
Contains the MFVec2f field class.
Contains the MFVec3d field class.
Contains the MFVec3f field class.
Contains the MFVec4d field class.
Contains the MFVec4f field class.
Contains the SFBool field class.
Contains the SFColorRGBA field class.
Contains the SFColor field class.
Contains the SFDouble field class.
Contains the SFFloat field class.
Contains the SFInt32 field class.
Contains the SFMatrix3d field class.
Contains the SFMatrix3f field class.
Contains the SFMatrix4d field class.
Contains the SFMatrix4f field class.
Contains the SFNode class.
Contains the SFQuaternion field class.
Contains the SFRotation field class.
Contains the SFString field class.
Contains the SFTime field class.
Contains the SFVec2d field class.
Contains the SFVec2f field class.
Contains the SFVec3d field class.
Contains the SFVec3f field class.
Contains the SFVec4d field class.
Contains the SFVec4f field class.
Header file containing all X3D types enumerated.
H3D API namespace.
Definition: Anchor.h:38