namespace X3DTK { template std::pair Recorder::getEnterFunction(void (*ptrF)(T *)) { BaseRecorder::beginFunctionDefinition(); //finding if an occurence of T T *t = new T(); SFType *type = t->getType(); std::pair result; result.first.type = type->getName(); result.first.component = type->getComponentName(); result.first.sceneGraph = type->getSceneGraphName(); result.first.encodedName = type->getEncodedName(); result.second = new EnterFunction(reinterpret_cast(ptrF)); delete t; BaseRecorder::endFunctionDefinition(); return result; } template std::pair Recorder::getWalkOnFunction(bool (*ptrF)(T *, SFNode)) { BaseRecorder::beginFunctionDefinition(); //finding if an occurence of T T *t = new T(); SFType *type = t->getType(); std::pair result; result.first.type = type->getName(); result.first.component = type->getComponentName(); result.first.sceneGraph = type->getSceneGraphName(); result.first.encodedName = type->getEncodedName(); result.second = new WalkOnFunction(reinterpret_cast(ptrF)); delete t; BaseRecorder::endFunctionDefinition(); return result; } template std::pair Recorder::getLeaveFunction(void (*ptrF)(T *)) { BaseRecorder::beginFunctionDefinition(); //finding if an occurence of T T *t = new T(); SFType *type = t->getType(); std::pair result; result.first.type = type->getName(); result.first.component = type->getComponentName(); result.first.sceneGraph = type->getSceneGraphName(); result.first.encodedName = type->getEncodedName(); result.second = new LeaveFunction(reinterpret_cast(ptrF)); delete t; BaseRecorder::endFunctionDefinition(); return result; } template std::pair Recorder::getCreationFunction() { BaseRecorder::beginFunctionDefinition(); //finding if an occurence of T T *t = new T(); SFType *type = t->getType(); std::pair result; result.first.type = type->getName(); result.first.component = type->getComponentName(); result.first.sceneGraph = type->getSceneGraphName(); result.first.encodedName = type->getEncodedName(); result.second = new CreationFunction(reinterpret_cast(&NodeFactory::create)); delete t; BaseRecorder::endFunctionDefinition(); return result; } template TypeName Recorder::getTypeName(const SFString &name, const SFString &component, const SFString &sceneGraph) { TypeName result; result.name = name; result.component = component; result.sceneGraph = sceneGraph; result.cloner = new NodeCloner(); return result; } template AttributeRecorder Recorder::getAttribute(const SFString &name, V T:: *member, const V &init) { return AttributeRecorder(name, member, init); } template SFNodeRecorder Recorder::getSFNode(const SFString &name, V *T:: *node) { return SFNodeRecorder(name, node); } template MFNodeRecorder Recorder::getMFNode(const SFString &name, MFNode T:: *nodes) { return MFNodeRecorder(name, nodes); } }