00001 #ifndef X3DTK_X3D_SCENESAVERGLOBALVARIABLES_H 00002 #define X3DTK_X3D_SCENESAVERGLOBALVARIABLES_H 00003 00004 #include "X3D_SceneGraphTypes.h" 00005 #include "StateVariables.h" 00006 00007 #include <list> 00008 00009 namespace X3DTK { 00010 namespace X3D { 00011 00018 class SceneSaverStateVariables : public StateVariables 00019 { 00020 public: 00022 SceneSaverStateVariables(); 00024 virtual ~SceneSaverStateVariables(); 00025 00027 void init(); 00029 void initNodes(); 00031 void finish(); 00032 00034 void addNode(SFNode N); 00036 bool findNode(SFNode N); 00037 00039 void newLine(); 00041 void pushCurrentLine(); 00043 SFString &getCurrentLine(); 00045 SFString &getOpeningLine(); 00047 void popLine(); 00048 00050 void addTab(); 00052 void removeTab(); 00054 inline SFString getTab() const {return _tab;}; 00055 00057 void addName(const SFString &name); 00059 SFString generateName(); 00060 00062 inline const MFString &getOutput() const {return _output;}; 00064 bool hasChild(); 00065 00067 void pushHasUSE(bool value); 00069 inline bool getHasUSE() const {return _hasUSEStack.front();}; 00071 void popHasUSE(); 00072 00073 private: 00074 int _lineNumber; 00075 MFString _output; 00076 SFString _tab; 00077 std::list<int> _lineStack; 00078 std::list<bool> _hasUSEStack; 00079 MFNode _visitedNodes; 00080 MFString _names; 00081 unsigned int _nameID; 00082 }; 00083 00084 } 00085 } 00086 00087 #endif