GvField * GvField::createInstanceFromName(const GvName &className) { #define TRY_CLASS(name, class) \ else if (className == name) \ return new class GvField *inst = NULL; const char *n=className.getString(); if (*n=='S') { if (n[2] <= 'L') { if (0) ; // So "else" works in first TRY_CLASS TRY_CLASS("SFBitMask", GvSFBitMask); // not VMRL2 TRY_CLASS("SFBool", GvSFBool); TRY_CLASS("SFColor", GvSFColor); TRY_CLASS("SFEnum", GvSFEnum); // not VMRL2 TRY_CLASS("SFFloat", GvSFFloat); TRY_CLASS("SFImage", GvSFImage); TRY_CLASS("SFInt32", GvSFInt32); TRY_CLASS("SFLong", GvSFLong); // not VMRL2 } else { if (0) ; // So "else" works in first TRY_CLASS TRY_CLASS("SFMatrix", GvSFMatrix); // not VMRL2 TRY_CLASS("SFRotation", GvSFRotation); TRY_CLASS("SFString", GvSFString); TRY_CLASS("SFVec2f", GvSFVec2f); TRY_CLASS("SFVec3f", GvSFVec3f); TRY_CLASS("SFNode", GvSFNode); TRY_CLASS("SFTime", GvSFTime); } } else { if (0) ; // So "else" works in first TRY_CLASS TRY_CLASS("MFColor", GvMFColor); TRY_CLASS("MFFloat", GvMFFloat); TRY_CLASS("MFInt32", GvMFInt32); TRY_CLASS("MFLong", GvMFLong); TRY_CLASS("MFNode", GvMFNode); TRY_CLASS("MFRotation", GvMFRotation); TRY_CLASS("MFString", GvMFString); TRY_CLASS("MFTime", GvMFTime); TRY_CLASS("MFVec2f", GvMFVec2f); TRY_CLASS("MFVec3f", GvMFVec3f); } return inst; #undef TRY_CLASS }
QvNode * QvNode::createInstanceFromName(const QvName &className) { #define TRY_CLASS(name, class) \ else if (className == name) \ inst = new class QvNode *inst = NULL; if (0) ; // So "else" works in first TRY_CLASS TRY_CLASS("Cone", QvCone); TRY_CLASS("Coordinate3", QvCoordinate3); TRY_CLASS("Cube", QvCube); TRY_CLASS("Cylinder", QvCylinder); TRY_CLASS("DirectionalLight", QvDirectionalLight); TRY_CLASS("Group", QvGroup); TRY_CLASS("IndexedFaceSet", QvIndexedFaceSet); TRY_CLASS("IndexedLineSet", QvIndexedLineSet); TRY_CLASS("Info", QvInfo); TRY_CLASS("LevelOfDetail", QvLevelOfDetail); TRY_CLASS("Material", QvMaterial); TRY_CLASS("MaterialBinding", QvMaterialBinding); TRY_CLASS("MatrixTransform", QvMatrixTransform); TRY_CLASS("Normal", QvNormal); TRY_CLASS("NormalBinding", QvNormalBinding); TRY_CLASS("OrthographicCamera", QvOrthographicCamera); TRY_CLASS("PerspectiveCamera", QvPerspectiveCamera); TRY_CLASS("PointLight", QvPointLight); TRY_CLASS("PointSet", QvPointSet); TRY_CLASS("Rotation", QvRotation); TRY_CLASS("Scale", QvScale); TRY_CLASS("Separator", QvSeparator); TRY_CLASS("ShapeHints", QvShapeHints); TRY_CLASS("Sphere", QvSphere); TRY_CLASS("SpotLight", QvSpotLight); TRY_CLASS("Switch", QvSwitch); TRY_CLASS("Texture2", QvTexture2); TRY_CLASS("Texture2Transform", QvTexture2Transform); TRY_CLASS("TextureCoordinate2", QvTextureCoordinate2); TRY_CLASS("Transform", QvTransform); TRY_CLASS("TransformSeparator", QvTransformSeparator); TRY_CLASS("Translation", QvTranslation); TRY_CLASS("WWWAnchor", QvWWWAnchor); TRY_CLASS("WWWInline", QvWWWInline); return inst; #undef TRY_CLASS }