]> git.mxchange.org Git - simgear.git/blobdiff - simgear/xml/easyxml.cxx
Add a function to calculate the normalmap from a regular texture.
[simgear.git] / simgear / xml / easyxml.cxx
index 8fc5ca15d1385cd233b60e9bbf1e3265d15f2005..3636fa9d3fe46feef6eda5ac48fdc59674d9983d 100644 (file)
@@ -2,13 +2,13 @@
 
 #include <simgear/compiler.h>
 
-#include <ostream>
 #include <string.h>            // strcmp()
 
 #include "easyxml.hxx"
 #include "xmlparse.h"
 
 #include STL_FSTREAM
+#include STL_IOSTREAM
 
 SG_USING_STD(ifstream);
 
@@ -274,4 +274,27 @@ readXML (const string &path, XMLVisitor &visitor)
   input.close();
 }
 
+void
+readXML (const char *buf, const int size, XMLVisitor &visitor)
+{
+  XML_Parser parser = XML_ParserCreate(0);
+  XML_SetUserData(parser, &visitor);
+  XML_SetElementHandler(parser, start_element, end_element);
+  XML_SetCharacterDataHandler(parser, character_data);
+  XML_SetProcessingInstructionHandler(parser, processing_instruction);
+
+  visitor.startXML();
+
+  if (!XML_Parse(parser, buf, size, false)) {
+      XML_ParserFree(parser);
+      throw sg_io_exception(XML_ErrorString(XML_GetErrorCode(parser)),
+                           sg_location("In-memory XML buffer",
+                                       XML_GetCurrentLineNumber(parser),
+                                       XML_GetCurrentColumnNumber(parser)),
+                           "SimGear XML Parser");
+  }
+
+  XML_ParserFree(parser);
+}
+
 // end of easyxml.cxx