]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/ifacecheck/src/xmlparser.cpp
added version check against gcc-generated xml; added readme and few other notes about...
[wxWidgets.git] / utils / ifacecheck / src / xmlparser.cpp
index 1f2b35da7966cf30b07bb993254322838a8f4332..efbb82798db2bcaef32ed825450d6a0612322d0e 100644 (file)
@@ -563,6 +563,31 @@ bool wxXmlGccInterface::Parse(const wxString& filename)
         return false;
     }
 
+    wxString version = doc.GetRoot()->GetAttribute("cvs_revision");
+    bool old = false;
+
+#define MIN_REVISION  120
+
+    if (!version.StartsWith("1."))
+        old = true;
+    if (!old)
+    {
+        unsigned long rev = 0;
+        if (!version.Mid(2).ToULong(&rev))
+            old = true;
+        else
+            if (rev < MIN_REVISION)
+                old = true;
+    }
+
+    if (old)
+    {
+        LogError("The version of GCC-XML used for the creation of %s is too old; "
+                 "the cvs_revision attribute of the root node reports '%s', "
+                 "minimal required is 1.%d.", filename, version, MIN_REVISION);
+        return false;
+    }
+
     wxToResolveTypeHashMap toResolveTypes;
     wxClassMemberIdHashMap members;
     wxTypeIdHashMap types;
@@ -1076,6 +1101,13 @@ bool wxXmlDoxygenInterface::Parse(const wxString& filename)
         return false;
     }
 
+    /*
+        NB: we may need in future to do a version-check here if the
+            format of the XML generated by doxygen changes.
+            For now (doxygen version 1.5.5), this check is not required
+            since AFAIK the XML format never changed since it was introduced.
+    */
+
     m_classes.Alloc(ESTIMATED_NUM_CLASSES);
 
     // process files referenced by this index file