#include "MemReleaserStateVariables.h" #include "X3DAbstractNode.h" #include #include using namespace std; namespace X3DTK { MemReleaserStateVariables::MemReleaserStateVariables() : StateVariables(), _toDelete(false) { } MemReleaserStateVariables::~MemReleaserStateVariables() { } void MemReleaserStateVariables::init() { _nodeStack.push_front(0); _toDelete = false; } void MemReleaserStateVariables::finish() { _nodeStack.clear(); if (_verbose) { for (MFNode::iterator it = _toDeleteNodes.begin(); it != _toDeleteNodes.end(); ++it) { cout << "MemReleaser: " << (*it)->getType()->getSceneGraphName() << "::" << (*it)->getTypeName() << " " << *it << " deleted" << endl; delete *it; } } else { for (MFNode::iterator it = _toDeleteNodes.begin(); it != _toDeleteNodes.end(); ++it) { delete *it; } } _toDeleteNodes.clear(); } void MemReleaserStateVariables::setVerbose(bool verbose) { _verbose = verbose; } void MemReleaserStateVariables::pushParent(SFNode P) { _nodeStack.push_front(P); } void MemReleaserStateVariables::popParent() { _nodeStack.pop_front(); } void MemReleaserStateVariables::setDelete(bool value) { _toDelete = value; } void MemReleaserStateVariables::addNodeToDelete(X3DAbstractNode *N) { _toDeleteNodes.push_back(N); } bool MemReleaserStateVariables::getDelete() const { return _toDelete; } }