]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/xmlstuff.h
Wean off #define
[xonotic/netradiant.git] / radiant / xmlstuff.h
index b897217b57cef924b77970d86e1172155b3c7343..7fe6120f6031b46fa531744bc2db7bfc29236412 100644 (file)
 
 #include "libxml/parser.h"
 
-struct message_info_s;
+#include <cstddef>
 
-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 ~ISAXHandler() = default;
+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