pingus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pingus-CVS] CVS: Games/Pingus/src xml_file_reader.cxx,1.2,1.3 xml_file_


From: grumbel
Subject: [Pingus-CVS] CVS: Games/Pingus/src xml_file_reader.cxx,1.2,1.3 xml_file_reader.hxx,1.2,1.3
Date: 18 Feb 2003 10:14:54 -0000

Update of /usr/local/cvsroot/Games/Pingus/src
In directory dark:/tmp/cvs-serv8677/src

Modified Files:
        xml_file_reader.cxx xml_file_reader.hxx 
Log Message:
more XMLFileReader usage, probally more bugs and typos


Index: xml_file_reader.cxx
===================================================================
RCS file: /usr/local/cvsroot/Games/Pingus/src/xml_file_reader.cxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- xml_file_reader.cxx 18 Feb 2003 01:23:51 -0000      1.2
+++ xml_file_reader.cxx 18 Feb 2003 10:14:52 -0000      1.3
@@ -19,6 +19,8 @@
 
 #include "res_descriptor.hxx"
 #include "color.hxx"
+#include "debug.hxx"
+#include "globals.hxx"
 #include "xml_file_reader.hxx"
 
 XMLFileReader::XMLFileReader(xmlDocPtr doc_, xmlNodePtr node)
@@ -26,9 +28,32 @@
 {
 }
 
+XMLFileReader::XMLFileReader()
+  : doc(NULL), section_node(NULL)
+{
+}
+
+void
+XMLFileReader::init(xmlDocPtr doc_, xmlNodePtr node)
+{
+  doc = doc_;
+  section_node = node;
+}
+
 xmlNodePtr
 XMLFileReader::find_node(const char* name)
 {
+  if (doc == NULL)
+    {
+      perr(PINGUS_DEBUG_LOADING) << "XMLFileReader points to nothing, probally 
not inited" << std::endl;
+      return NULL;
+    }
+  else if (section_node == NULL)
+    {
+      // Whole section is empty
+      return NULL;
+    }  
+
   xmlNodePtr node = section_node->children;
   
   while (node)
@@ -144,6 +169,18 @@
       return true;
     }
 
+  return false;
+}
+
+bool
+XMLFileReader::read_section(const char* name, XMLFileReader& value)
+{
+  xmlNodePtr node = find_node(name);
+  if (node)
+    {
+      value.init(doc, node);
+      return true;
+    }
   return false;
 }
 

Index: xml_file_reader.hxx
===================================================================
RCS file: /usr/local/cvsroot/Games/Pingus/src/xml_file_reader.hxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- xml_file_reader.hxx 18 Feb 2003 01:23:51 -0000      1.2
+++ xml_file_reader.hxx 18 Feb 2003 10:14:52 -0000      1.3
@@ -40,7 +40,12 @@
       @param node is a pointer to the node of the section to read, but
       not a pointer to the first element of the section! */
   XMLFileReader(xmlDocPtr doc, xmlNodePtr node);
-  
+
+  XMLFileReader();
+
+  /** Reinit a reader with a new section to parse */
+  void init(xmlDocPtr d, xmlNodePtr node);
+
   bool read_int   (const char* name, int&);
   bool read_desc  (const char* name, ResDescriptor&);
   bool read_color (const char* name, Color&);
@@ -48,6 +53,8 @@
   bool read_bool  (const char* name, bool&);
   bool read_string(const char* name, std::string&);
   bool read_vector(const char* name, Vector&);
+
+  bool read_section(const char* name, XMLFileReader&);
 
 private:
   XMLFileReader (const XMLFileReader&);





reply via email to

[Prev in Thread] Current Thread [Next in Thread]