00001 #ifndef _VRMLNODE_H_ 00002 #define _VRMLNODE_H_ 00003 00004 #pragma warning ( disable : 4786 ) 00005 00006 #include "keyword.h" 00007 #include <map> 00008 #ifdef BADSTD 00009 #include <stdstring.h> 00010 #else 00011 #include <string> 00012 #endif 00013 00014 class IGS_Object; 00015 class VrmlStack; 00016 00017 class VrmlNode 00018 { 00019 private: 00020 #ifdef _DEBUG 00021 char vrmlType[ 80 ]; 00022 #endif 00023 public: 00024 VrmlNode(); 00025 virtual ~VrmlNode(); 00026 void AddRef(); 00027 static void CleanupGlobals(); 00028 static Keyword GetKeyword( char*& buffer ); 00029 static void GetKeywordString( char*& buffer, char* keyword ); 00030 virtual void Parse( char*& buffer ); 00031 static VrmlNode* ParseDefNode( char*& buffer ); 00032 static VrmlNode* ParseNode( Keyword keyword, char*& buffer ); 00033 static VrmlNode* ParseUseNode( char*& buffer ); 00034 void Release(); 00035 virtual void Render( VrmlStack& stack ) const; 00036 virtual void RenderOpenGl( VrmlStack& stack ) const; 00037 virtual IGS_Object* RenderToIGS( VrmlStack& stack ) const; 00038 void SetType( const char* string ); 00039 00040 //IAN IMPROVE: make this protected 00041 static std::map< std::string, VrmlNode* > g_DataBase ; 00042 protected: 00043 int m_RefCount; 00044 00045 }; 00046 00047 #endif