1 /*
2  * Types.cpp
3  *
4  * Copyright (C) 2003 J. "MUFTI" Scheurich
5  *
6  * automatic (via configure) generated file, direct change is useless.
7  * change batch/mkSFMFTypes.sh instead
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program (see the file "COPYING" for details); if
21  * not, write to the Free Software Foundation, Inc., 675 Mass Ave,
22  * Cambridge, MA 02139, USA.
23  */
24 
25 #include "Types.h"
26 #include "parser.h"
27 
28 #include "SFMFTypes.h"
29 
30 FieldValue* defaultTypeArray[] =
31 {
32    new MFBool(),
33    new MFColor(),
34    new MFColorRGBA(),
35    new MFDouble(),
36    new MFFloat(),
37    new MFInt32(),
38    new MFMatrix3f(),
39    new MFMatrix4f(),
40    new MFNode(),
41    new MFRotation(),
42    new MFString(),
43    new MFTime(),
44    new MFVec2d(),
45    new MFVec2f(),
46    new MFVec3d(),
47    new MFVec3f(),
48    new MFVec4f(),
49    new SFBool(),
50    new SFColor(),
51    new SFColorRGBA(),
52    new SFDouble(),
53    new SFFloat(),
54    new SFImage(),
55    new SFInt32(),
56    new SFMatrix3f(),
57    new SFMatrix4f(),
58    new SFNode(),
59    new SFRotation(),
60    new SFString(),
61    new SFTime(),
62    new SFVec2d(),
63    new SFVec2f(),
64    new SFVec3d(),
65    new SFVec3f(),
66    new SFVec4f(),
67 };
68 
69 int
typeStringToEnum(const char * str)70 typeStringToEnum(const char* str)
71 {
72    int len = sizeof(defaultTypeArray)/sizeof(FieldValue*);
73    for (int i = 0; i < len; i++)
74        if (strcmp(defaultTypeArray[i]->getTypeName(),str)==0)
75            return defaultTypeArray[i]->getType();
76    return -1;
77 }
78 
79 const char*
typeEnumToString(int type)80 typeEnumToString(int type)
81 {
82    return defaultTypeArray[type]->getTypeName();
83 }
84 
typeDefaultValue(int type)85 FieldValue *typeDefaultValue(int type)
86 {
87    FieldValue *ret = defaultTypeArray[type]->copy();
88    ret->setIsDefaultValue();
89    return ret;
90 }
91 
getTypeC(int type,int languageFlag)92 const char *getTypeC(int type, int languageFlag)
93 {
94    return defaultTypeArray[type]->getTypeC(languageFlag);
95 }
96 
isArrayInC(int type)97 bool isArrayInC(int type)
98 {
99    return defaultTypeArray[type]->isArrayInC();
100 }
101 
getSFType(int type)102 int getSFType(int type)
103 {
104    switch(type) {
105      case MFBOOL:
106        return SFBOOL;
107      case MFCOLOR:
108        return SFCOLOR;
109      case MFCOLORRGBA:
110        return SFCOLORRGBA;
111      case MFDOUBLE:
112        return SFDOUBLE;
113      case MFFLOAT:
114        return SFFLOAT;
115      case MFINT32:
116        return SFINT32;
117      case MFMATRIX3F:
118        return SFMATRIX3F;
119      case MFMATRIX4F:
120        return SFMATRIX4F;
121      case MFNODE:
122        return SFNODE;
123      case MFROTATION:
124        return SFROTATION;
125      case MFSTRING:
126        return SFSTRING;
127      case MFTIME:
128        return SFTIME;
129      case MFVEC2D:
130        return SFVEC2D;
131      case MFVEC2F:
132        return SFVEC2F;
133      case MFVEC3D:
134        return SFVEC3D;
135      case MFVEC3F:
136        return SFVEC3F;
137      case MFVEC4F:
138        return SFVEC4F;
139    }
140    return type;
141 }
142 
isMFType(int type)143 bool isMFType(int type)
144 {
145    switch(type) {
146      case MFBOOL:
147        return true;
148      case MFCOLOR:
149        return true;
150      case MFCOLORRGBA:
151        return true;
152      case MFDOUBLE:
153        return true;
154      case MFFLOAT:
155        return true;
156      case MFINT32:
157        return true;
158      case MFMATRIX3F:
159        return true;
160      case MFMATRIX4F:
161        return true;
162      case MFNODE:
163        return true;
164      case MFROTATION:
165        return true;
166      case MFSTRING:
167        return true;
168      case MFTIME:
169        return true;
170      case MFVEC2D:
171        return true;
172      case MFVEC2F:
173        return true;
174      case MFVEC3D:
175        return true;
176      case MFVEC3F:
177        return true;
178      case MFVEC4F:
179        return true;
180    }
181    return false;
182 }
183