00001 #include "MemReleaser.h" 00002 #include "DefaultDFS.h" 00003 #include "DefaultGLDFS.h" 00004 #include "MemReleaserRootVisitor.h" 00005 00006 #include <iostream> 00007 00008 using namespace std; 00009 using namespace X3DTK; 00010 00011 MemReleaser::MemReleaser(DFS *dfs) 00012 : X3DMemReleaser() 00013 { 00014 globalVariables = GVManager::getInstanceOf<MemReleaserGlobalVariables>(); 00015 if (dfs == 0) 00016 { 00017 this->dfs = mergeDFS(new DefaultDFS(), new DefaultGLDFS()); 00018 defaultDFSUSE = true; 00019 } 00020 else 00021 { 00022 this->dfs = dfs; 00023 defaultDFSUSE = false; 00024 } 00025 00026 //cout << "dfs = " << (void *)dfs << endl; 00027 00028 X3DComponentVisitor *mrv = new MemReleaserRootVisitor(); 00029 00030 this->dfs->setComponentVisitor(mrv); 00031 } 00032 00033 MemReleaser::~MemReleaser() 00034 { 00035 if (defaultDFSUSE) 00036 delete dfs; 00037 } 00038 00039 void MemReleaser::setComponentVisitor(X3DComponentVisitor *component) 00040 { 00041 dfs->setComponentVisitor(component); 00042 } 00043 00044 void MemReleaser::release(SFNode N) const 00045 { 00046 dfs->traverse(N); 00047 }