Exemplo n.º 1
0
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
}
Exemplo n.º 2
0
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
}