update makefile for version roll
[asdcplib.git] / src / KM_xml.h
index 80db74babd9d729c009229390900e032aa63d606..0c84e563c17035f098c4f96dc6b5a6896e83c187 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright (c) 2005-2011, John Hurst
+Copyright (c) 2005-2015, John Hurst
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -41,9 +41,6 @@ namespace Kumu
 {
   class XMLElement;
 
-  // Return true if the given string contains an XML document (or the start of one).
-  bool StringIsXML(const char* document, ui32_t len = 0);
-
   //
   struct NVPair
   {
@@ -57,6 +54,15 @@ namespace Kumu
   typedef std::list<XMLElement*> ElementList;
   typedef ElementList::const_iterator Elem_i;
 
+  bool GetXMLDocType(const ByteString& buf, std::string& ns_prefix, std::string& type_name,
+                    std::string& namespace_name, AttributeList& doc_attr_list);
+
+  bool GetXMLDocType(const std::string& buf, std::string& ns_prefix, std::string& type_name,
+                    std::string& namespace_name, AttributeList& doc_attr_list);
+
+  bool GetXMLDocType(const byte_t* buf, ui32_t buf_len, std::string& ns_prefix, std::string& type_name,
+                    std::string& namespace_name, AttributeList& doc_attr_list);
+
   //
   class XMLNamespace
   {
@@ -100,6 +106,10 @@ namespace Kumu
       bool        ParseString(const ByteString& document);
       bool        ParseString(const std::string& document);
 
+      bool        ParseFirstFromString(const char* document, ui32_t doc_len);
+      bool        ParseFirstFromString(const ByteString& document);
+      bool        ParseFirstFromString(const std::string& document);
+
       // building
       void        SetName(const char* name);
       void        SetBody(const std::string& value);
@@ -112,8 +122,9 @@ namespace Kumu
       XMLElement* AddChildWithContent(const char* name, const std::string& value);
       XMLElement* AddChildWithPrefixedContent(const char* name, const char* prefix, const char* value);
       void        AddComment(const char* value);
-      void        Render(std::string&) const;
-      void        RenderElement(std::string& outbuf, ui32_t depth) const;
+      void        Render(std::string& str) const { Render(str, true); }
+      void        Render(std::string&, const bool& pretty) const;
+      void        RenderElement(std::string& outbuf, const ui32_t& depth, const bool& pretty) const;
 
       // querying
       inline const std::string&   GetBody() const { return m_Body; }