#include "X3D_NodeCounter.h" #include "X3D_NodeCounterRenderingVisitor.h" #include "X3D_NodeCounterGroupingVisitor.h" #include "X3D_NodeCounterCoreVisitor.h" #include "X3D_NodeCounterStateVariables.h" #include using namespace std; namespace X3DTK { namespace X3D { NodeCounter::NodeCounter() : X3DOnePassProcessor() { setGraphTraversal(new DFSGraphTraversal()); setComponentVisitor(new NodeCounterRenderingVisitor()); setComponentVisitor(new NodeCounterGroupingVisitor()); setComponentVisitor(new NodeCounterCoreVisitor()); } NodeCounter::~NodeCounter() { Singleton::removeInstance(); } void NodeCounter::count(X3DNode *N) { Singleton::getInstance()->init(); traverse(N); cout << "number of geometry nodes is " << Singleton::getInstance()->getX3DGeometryNode() << endl; cout << "number of coordinate nodes is " << Singleton::getInstance()->getX3DCoordinateNode() << endl; cout << "number of grouping nodes is " << Singleton::getInstance()->getX3DGroupingNode() << endl; cout << "number of visited nodes is " << Singleton::getInstance()->getOtherNode() + Singleton::getInstance()->getX3DGeometryNode() + Singleton::getInstance()->getX3DCoordinateNode() + Singleton::getInstance()->getX3DGroupingNode() << endl; } } }