]> git.saurik.com Git - wxWidgets.git/blobdiff - src/xml/xml.cpp
Introduced invalidation of ranges for later optimization code
[wxWidgets.git] / src / xml / xml.cpp
index 755f7e56567f7b7ade2905b61eefcda783eadce0..53ae70865be4101f7d8095e00816d68f3eadc923 100644 (file)
@@ -8,10 +8,6 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "xml.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -127,11 +123,11 @@ bool wxXmlNode::HasProp(const wxString& propName) const
 
     while (prop)
     {
-        if (prop->GetName() == propName) return TRUE;
+        if (prop->GetName() == propName) return true;
         prop = prop->GetNext();
     }
 
-    return FALSE;
+    return false;
 }
 
 bool wxXmlNode::GetPropVal(const wxString& propName, wxString *value) const
@@ -143,12 +139,12 @@ bool wxXmlNode::GetPropVal(const wxString& propName, wxString *value) const
         if (prop->GetName() == propName)
         {
             *value = prop->GetValue();
-            return TRUE;
+            return true;
         }
         prop = prop->GetNext();
     }
 
-    return FALSE;
+    return false;
 }
 
 wxString wxXmlNode::GetPropVal(const wxString& propName, const wxString& defaultVal) const
@@ -156,8 +152,8 @@ wxString wxXmlNode::GetPropVal(const wxString& propName, const wxString& default
     wxString tmp;
     if (GetPropVal(propName, &tmp))
         return tmp;
-    else
-        return defaultVal;
+
+    return defaultVal;
 }
 
 void wxXmlNode::AddChild(wxXmlNode *child)
@@ -194,13 +190,13 @@ void wxXmlNode::InsertChild(wxXmlNode *child, wxXmlNode *before_node)
 bool wxXmlNode::RemoveChild(wxXmlNode *child)
 {
     if (m_children == NULL)
-        return FALSE;
+        return false;
     else if (m_children == child)
     {
         m_children = child->m_next;
         child->m_parent = NULL;
         child->m_next = NULL;
-        return TRUE;
+        return true;
     }
     else
     {
@@ -212,11 +208,11 @@ bool wxXmlNode::RemoveChild(wxXmlNode *child)
                 ch->m_next = child->m_next;
                 child->m_parent = NULL;
                 child->m_next = NULL;
-                return TRUE;
+                return true;
             }
             ch = ch->m_next;
         }
-        return FALSE;
+        return false;
     }
 }
 
@@ -242,7 +238,7 @@ bool wxXmlNode::DeleteProperty(const wxString& name)
     wxXmlProperty *prop;
 
     if (m_properties == NULL)
-        return FALSE;
+        return false;
 
     else if (m_properties->GetName() == name)
     {
@@ -250,7 +246,7 @@ bool wxXmlNode::DeleteProperty(const wxString& name)
         m_properties = prop->GetNext();
         prop->SetNext(NULL);
         delete prop;
-        return TRUE;
+        return true;
     }
 
     else
@@ -264,11 +260,11 @@ bool wxXmlNode::DeleteProperty(const wxString& name)
                 p->SetNext(prop->GetNext());
                 prop->SetNext(NULL);
                 delete prop;
-                return TRUE;
+                return true;
             }
             p = p->GetNext();
         }
-        return FALSE;
+        return false;
     }
 }
 
@@ -287,7 +283,7 @@ wxXmlDocument::wxXmlDocument()
 }
 
 wxXmlDocument::wxXmlDocument(const wxString& filename, const wxString& encoding)
-                          : wxObject(), m_root(NULL)
+              :wxObject(), m_root(NULL)
 {
     if ( !Load(filename, encoding) )
     {
@@ -296,7 +292,7 @@ wxXmlDocument::wxXmlDocument(const wxString& filename, const wxString& encoding)
 }
 
 wxXmlDocument::wxXmlDocument(wxInputStream& stream, const wxString& encoding)
-                          : wxObject(), m_root(NULL)
+              :wxObject(), m_root(NULL)
 {
     if ( !Load(stream, encoding) )
     {
@@ -305,6 +301,7 @@ wxXmlDocument::wxXmlDocument(wxInputStream& stream, const wxString& encoding)
 }
 
 wxXmlDocument::wxXmlDocument(const wxXmlDocument& doc)
+              :wxObject()
 {
     DoCopy(doc);
 }
@@ -370,7 +367,7 @@ inline static wxString CharToString(wxMBConv *conv,
         return str;
     }
     else
-        return wxString(s, len);
+        return wxString(s, len != wxSTRING_MAXLEN ? len : strlen(s));
 #endif
 }
 
@@ -384,6 +381,7 @@ struct wxXmlParsingContext
     wxString   version;
 };
 
+extern "C" {
 static void StartElementHnd(void *userData, const char *name, const char **atts)
 {
     wxXmlParsingContext *ctx = (wxXmlParsingContext*)userData;
@@ -401,7 +399,9 @@ static void StartElementHnd(void *userData, const char *name, const char **atts)
     ctx->node = node;
     ctx->lastAsText = NULL;
 }
+}
 
+extern "C" {
 static void EndElementHnd(void *userData, const char* WXUNUSED(name))
 {
     wxXmlParsingContext *ctx = (wxXmlParsingContext*)userData;
@@ -409,7 +409,9 @@ static void EndElementHnd(void *userData, const char* WXUNUSED(name))
     ctx->node = ctx->node->GetParent();
     ctx->lastAsText = NULL;
 }
+}
 
+extern "C" {
 static void TextHnd(void *userData, const char *s, int len)
 {
     wxXmlParsingContext *ctx = (wxXmlParsingContext*)userData;
@@ -425,11 +427,11 @@ static void TextHnd(void *userData, const char *s, int len)
     }
     else
     {
-        bool whiteOnly = TRUE;
+        bool whiteOnly = true;
         for (char *c = buf; *c != '\0'; c++)
             if (*c != ' ' && *c != '\t' && *c != '\n' && *c != '\r')
             {
-                whiteOnly = FALSE;
+                whiteOnly = false;
                 break;
             }
         if (!whiteOnly)
@@ -442,7 +444,9 @@ static void TextHnd(void *userData, const char *s, int len)
 
     delete[] buf;
 }
+}
 
+extern "C" {
 static void CommentHnd(void *userData, const char *data)
 {
     wxXmlParsingContext *ctx = (wxXmlParsingContext*)userData;
@@ -457,7 +461,9 @@ static void CommentHnd(void *userData, const char *data)
     }
     ctx->lastAsText = NULL;
 }
+}
 
+extern "C" {
 static void DefaultHnd(void *userData, const char *s, int len)
 {
     // XML header:
@@ -475,14 +481,17 @@ static void DefaultHnd(void *userData, const char *s, int len)
             ctx->version = buf.Mid(pos + 9).BeforeFirst(buf[(size_t)pos+8]);
     }
 }
+}
 
+extern "C" {
 static int UnknownEncodingHnd(void * WXUNUSED(encodingHandlerData),
                               const XML_Char *name, XML_Encoding *info)
 {
     // We must build conversion table for expat. The easiest way to do so
     // is to let wxCSConv convert as string containing all characters to
     // wide character representation:
-    wxCSConv conv(wxString(name, wxConvLibc));
+    wxString str(name, wxConvLibc);
+    wxCSConv conv(str);
     char mbBuf[2];
     wchar_t wcBuf[10];
     size_t i;
@@ -499,13 +508,14 @@ static int UnknownEncodingHnd(void * WXUNUSED(encodingHandlerData),
         }
         info->map[i+1] = (int)wcBuf[0];
     }
-    
+
     info->data = NULL;
     info->convert = NULL;
     info->release = NULL;
 
     return 1;
 }
+}
 
 bool wxXmlDocument::Load(wxInputStream& stream, const wxString& encoding)
 {
@@ -555,9 +565,9 @@ bool wxXmlDocument::Load(wxInputStream& stream, const wxString& encoding)
 
     if (ok)
     {
-        if (!ctx.version.IsEmpty())
+        if (!ctx.version.empty())
             SetVersion(ctx.version);
-        if (!ctx.encoding.IsEmpty())
+        if (!ctx.encoding.empty())
             SetFileEncoding(ctx.encoding);
         SetRoot(ctx.root);
     }
@@ -584,9 +594,14 @@ bool wxXmlDocument::Load(wxInputStream& stream, const wxString& encoding)
 
 // write string to output:
 inline static void OutputString(wxOutputStream& stream, const wxString& str,
-                                wxMBConv *convMem, wxMBConv *convFile)
+#if wxUSE_UNICODE
+    wxMBConv * WXUNUSED(convMem),
+#else
+    wxMBConv *convMem,
+#endif
+    wxMBConv *convFile)
 {
-    if (str.IsEmpty()) return;
+    if (str.empty()) return;
 #if wxUSE_UNICODE
     const wxWX2MBbuf buf(str.mb_str(*(convFile ? convFile : &wxConvUTF8)));
     stream.Write((const char*)buf, strlen((const char*)buf));
@@ -715,14 +730,16 @@ static void OutputNode(wxOutputStream& stream, wxXmlNode *node, int indent,
 bool wxXmlDocument::Save(wxOutputStream& stream) const
 {
     if ( !IsOk() )
-        return FALSE;
+        return false;
 
     wxString s;
 
-    wxMBConv *convMem = NULL, *convFile = NULL;
+    wxMBConv *convMem = NULL;
+
 #if wxUSE_UNICODE
-    convFile = new wxCSConv(GetFileEncoding());
+    wxMBConv *convFile = new wxCSConv(GetFileEncoding());
 #else
+    wxMBConv *convFile = NULL;
     if ( GetFileEncoding() != GetEncoding() )
     {
         convFile = new wxCSConv(GetFileEncoding());
@@ -742,7 +759,7 @@ bool wxXmlDocument::Save(wxOutputStream& stream) const
     if ( convMem )
         delete convMem;
 
-    return TRUE;
+    return true;
 }
 
 #endif // wxUSE_XML