00001 00002 // X3D_SceneSaverStateVariables.h // 00004 00005 #ifndef SCENESAVERGLOBALVARIABLES_H 00006 #define SCENESAVERGLOBALVARIABLES_H 00007 00008 #include "X3D_SceneGraphTypes.h" 00009 #include "StateVariables.h" 00010 00011 #include <list> 00012 00013 namespace X3DTK { 00014 namespace X3D { 00015 00017 00018 class SceneSaverStateVariables : public StateVariables 00019 { 00020 public: 00022 SceneSaverStateVariables(); 00024 virtual ~SceneSaverStateVariables(); 00025 00027 void init(); 00029 void finish(); 00030 00032 void addNode(SFNode N); 00034 bool findNode(SFNode N); 00035 00037 void newLine(); 00039 void pushCurrentLine(); 00041 SFString &getCurrentLine(); 00043 SFString &getOpeningLine(); 00045 void popLine(); 00046 00048 void addTab(); 00050 void removeTab(); 00052 inline SFString getTab() const {return _tab;}; 00053 00055 inline const MFString &getOutput() const {return _output;}; 00057 bool hasChild(); 00058 00060 void pushHasUSE(bool value); 00062 inline bool getHasUSE() const {return _hasUSEStack.front();}; 00064 void popHasUSE(); 00065 00066 private: 00067 int _lineNumber; 00068 MFString _output; 00069 SFString _tab; 00070 std::list<int> _lineStack; 00071 std::list<bool> _hasUSEStack; 00072 MFNode _visitedNodes; 00073 }; 00074 00075 } 00076 } 00077 00078 #endif