#include "X3DAbstractNodeForward.h" namespace X3DTK { template SFNodeFunctor::SFNodeFunctor(V *T:: *node) : _node(node) { } template X3DAbstractNode *SFNodeFunctor::getNode(X3DAbstractNode const *N) { return static_cast(N)->*_node; } template bool SFNodeFunctor::setNode(X3DAbstractNode *N, X3DAbstractNode *C) { if (dynamic_cast(C) != 0) { X3DAbstractNode_removeParentFromChild(N, static_cast(N)->*_node); static_cast(N)->*_node = static_cast(C); X3DAbstractNode_addParentToChild(N, static_cast(N)->*_node); return true; } return false; } template bool SFNodeFunctor::removeNode(X3DAbstractNode *N, X3DAbstractNode *C) { if (C == static_cast(N)->*_node) { X3DAbstractNode_removeParentFromChild(N, static_cast(N)->*_node); static_cast(N)->*_node = 0; return true; } return false; } template void SFNodeFunctor::removeThisNode(X3DAbstractNode *N) { if (dynamic_cast(N) != 0) { X3DAbstractNode_removeParentFromChild(N, static_cast(N)->*_node); static_cast(N)->*_node = 0; } } }