added version check against gcc-generated xml; added readme and few other notes about ifacecheck
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53534 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		| @@ -71,6 +71,9 @@ can even correct them automatically. It uses the XML outputs of the gccxml utili | |||||||
| (see http://www.gccxml.org) and of the Doxygen utility (see http://www.doxygen.org) | (see http://www.gccxml.org) and of the Doxygen utility (see http://www.doxygen.org) | ||||||
| to do the comparisons. | to do the comparisons. | ||||||
|  |  | ||||||
|  | It's explicitely designed for wxWidgets documentation needs and is probably of little | ||||||
|  | use for anything else than wxWidgets docs reviewing. | ||||||
|  |  | ||||||
| You can find it in @c utils/ifacecheck. | You can find it in @c utils/ifacecheck. | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										55
									
								
								utils/ifacecheck/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								utils/ifacecheck/README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  |  | ||||||
|  |  Ifacecheck utility | ||||||
|  |  ================== | ||||||
|  |  | ||||||
|  |  1) INTRODUCTION | ||||||
|  |  | ||||||
|  |  This utility compares the wxWidgets real interface contained in the "include" | ||||||
|  |  hierarchy with the wxWidgets interface used for documentation purposes and | ||||||
|  |  kept in the @c interface hierarchy. | ||||||
|  |  | ||||||
|  |  Ifacecheck warns about incoherences (mainly wrong prototype signatures) and | ||||||
|  |  can even correct them automatically. It uses the XML outputs of the gccxml utility | ||||||
|  |  (see http://www.gccxml.org) and of the Doxygen utility (see http://www.doxygen.org) | ||||||
|  |  to do the comparisons. | ||||||
|  |  | ||||||
|  |  It's explicitely designed for wxWidgets documentation needs and is probably of little | ||||||
|  |  use for anything else than wxWidgets docs reviewing. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  2) PREREQUISITES FOR USING IT | ||||||
|  |  | ||||||
|  |  To use this utility you'll need at least: | ||||||
|  |   - wxWidgets "include" and "interface" headers tree | ||||||
|  |   - Doxygen installed | ||||||
|  |   - Gccxml installed | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  3) HOW TO USE IT (on Linux) | ||||||
|  |  | ||||||
|  |     First, create the doxygen XML: | ||||||
|  |  | ||||||
|  |      > cd docs/doxygen | ||||||
|  |      > ./regen.sh xml | ||||||
|  |      > cd ../.. | ||||||
|  |  | ||||||
|  |     Next, create the gcc XML: | ||||||
|  |  | ||||||
|  |      > ./configure                # configure wxWidgets as you would do when building it | ||||||
|  |      > cd utils/ifacecheck | ||||||
|  |      > ./rungccxml.sh | ||||||
|  |      > cd ../.. | ||||||
|  |  | ||||||
|  |     Last, build and run ifacecheck: | ||||||
|  |  | ||||||
|  |      > cd utils/ifacecheck/src | ||||||
|  |      > make | ||||||
|  |      > make install | ||||||
|  |      > cd .. | ||||||
|  |      > ifacecheck -u wxapi-preproc.txt wxapi.xml ../../docs/doxygen/out/xml/index.xml >ifacecheck.log | ||||||
|  |  | ||||||
|  |     Now you should have the log of the utility saved in 'ifacecheck.log'. | ||||||
|  |     Its contents should be easy to interpret. | ||||||
|  |  | ||||||
|  |     For more info about ifacecheck options just type: | ||||||
|  |      > ifacecheck --help | ||||||
| @@ -563,6 +563,31 @@ bool wxXmlGccInterface::Parse(const wxString& filename) | |||||||
|         return false; |         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; |     wxToResolveTypeHashMap toResolveTypes; | ||||||
|     wxClassMemberIdHashMap members; |     wxClassMemberIdHashMap members; | ||||||
|     wxTypeIdHashMap types; |     wxTypeIdHashMap types; | ||||||
| @@ -1076,6 +1101,13 @@ bool wxXmlDoxygenInterface::Parse(const wxString& filename) | |||||||
|         return false; |         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); |     m_classes.Alloc(ESTIMATED_NUM_CLASSES); | ||||||
|  |  | ||||||
|     // process files referenced by this index file |     // process files referenced by this index file | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user