]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/xmlstuff.h
apply misc fixes from Markus Fischer and Rambetter
[xonotic/netradiant.git] / radiant / xmlstuff.h
index 0ffb8e2b9cde3a5282c4a4255c252c24d14b8fc1..9d8a514a89d059313e91d18bd14596ac997e72a2 100644 (file)
@@ -39,9 +39,20 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 #include "libxml/parser.h"
 
-#include <cstddef>
+struct message_info_s;
 
-class ISAXHandler;
+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?
+};
 
 // 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
@@ -49,42 +60,13 @@ class ISAXHandler;
 //   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
-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()
-  {
-  }
-};
+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;
 
 #endif