X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fxmlstuff.h;h=a30303f4c8273bee5cbb4c57fc33f6719a19b4cb;hb=7b9faac5a079f6e0e60b53b697f6454d4b743380;hp=b897217b57cef924b77970d86e1172155b3c7343;hpb=830125fad042fad35dc029b6eb57c8156ad7e176;p=xonotic%2Fnetradiant.git diff --git a/radiant/xmlstuff.h b/radiant/xmlstuff.h index b897217b..a30303f4 100644 --- a/radiant/xmlstuff.h +++ b/radiant/xmlstuff.h @@ -39,20 +39,9 @@ #include "libxml/parser.h" -struct message_info_s; +#include -class ISAXHandler -{ -public: -virtual ~ISAXHandler() { } -virtual void saxStartElement( struct message_info_s *ctx, const xmlChar *name, const xmlChar **attrs ) = 0; -virtual void saxEndElement( struct message_info_s *ctx, const xmlChar *name ) = 0; -virtual void saxCharacters( struct message_info_s *ctx, const xmlChar *ch, int len ) = 0; -virtual char *getName() { return NULL; } -virtual void Highlight() { } -virtual void DropHighlight() { } -virtual bool ShouldDelete() { return true; } // should the handler be deleted when the feedback dialog is cleared? -}; +class ISAXHandler; // a 'user data' structure we pass along in the SAX callbacks to represent the current state // the recurse value tracks the current depth in the tree @@ -60,13 +49,38 @@ virtual bool ShouldDelete() { return true; } // should the handler be deleted // if msg_level == SYS_ERR, then we will reset the listening at the end of the current node // the level for stopping the feed is stored in stop_depth // unkown nodes are ignored, we use ignore_depth to track the level we start ignoring from -typedef struct message_info_s { - int msg_level; // current message level (SYS_MSG, SYS_WRN, SYS_ERR) - int recurse; // current recursion depth (used to track various things) - int ignore_depth; // the ignore depth limit when we are jumping over unknown nodes (0 means we are not ignoring) - int stop_depth; // the depth we need to stop at the end - bool bGeometry; // are we parsing some geometry information (i.e. do we forward the SAX calls?) - ISAXHandler *pGeometry; // the handler -} message_info_t; +struct message_info_t +{ + int msg_level; // current message level (SYS_MSG, SYS_WRN, SYS_ERR) + int recurse; // current recursion depth (used to track various things) + int ignore_depth; // the ignore depth limit when we are jumping over unknown nodes (0 means we are not ignoring) + int stop_depth; // the depth we need to stop at the end + int geometry_depth; // are we parsing some geometry information (i.e. do we forward the SAX calls?) + ISAXHandler* pGeometry; // the handler + + enum unnamed0 { bufsize = 1024 }; + char m_buffer[bufsize]; + std::size_t m_length; +}; + +class IGL2DWindow; + +class ISAXHandler +{ +public: +virtual void Release(){ +} +virtual void saxStartElement( message_info_t* ctx, const xmlChar* name, const xmlChar** attrs ) = 0; +virtual void saxEndElement( message_info_t* ctx, const xmlChar* name ) = 0; +virtual void saxCharacters( message_info_t* ctx, const xmlChar* ch, int len ) = 0; +virtual const char* getName(){ + return NULL; +} +virtual IGL2DWindow* Highlight(){ + return 0; +} +virtual void DropHighlight(){ +} +}; #endif