GNOME Bugzilla – Bug 694376
members missing from classes in output tag files
Last modified: 2013-05-20 16:15:54 UTC
Created attachment 237071 [details] test case, with 1.8.2 and 1.8.3 output We have discovered that in the change from Doxygen version 1.8.2 to 1.8.3 and beyond, the contents of the generated tag file output has changed. In 1.8.2 and before, the container <compound kind="class"> held all of the class member functions and enums in <member kind="function" static="yes"> containers. In 1.8.2 and 1.8.3, the member functions are also contained in <compound kind="group">. But in 1.8.3 and later, the <compound kind="class"> contains only undocumented member functions, all the documented members are missing. This breaks our context-sensitive help, because our internal software relies on being able to get the member function help based upon the class name, it has no knowledge of the group name. I have attached a test case and a potential patch.
Created attachment 237072 [details] [review] patch for memberdef.cpp I don't pretend to know if this fix has undesired side effects, but it fixes the problem for me.
I notice also that elements <member kind="enumeration"> and <member kind="enumvalue> are missing from the list for container <compound kind="group"> when comparing 1.8.2 vs 1.8.3. In the example submitted, there should be enumerations showing for the group1 container. My patch does not address that issue, but if all mention of the tagDataWritten bool are removed from the memberdef.cpp file, that problem also goes away. Removing the bool does leave duplicate members listed for the file and group containers, but at least the info is not missing.
Created attachment 238297 [details] [review] Better patch to fix problem This patches fixes this problem and also fixes duplication of enumvalues in the tags file. This fix makes it so this version of Doxygen has the same member elements in the tags file as were found in older versions of Doxygen. This fix changes the MemberDef::_writeTagData routine to add an argument for the definition type the member element is being printed from. Then the element keeps track that it has been written from file, class, group, etc. Routines which call _writeTagData have been modified to pass in their definitionType() value.
That's a pretty neat patch. I'll include it in the next subversion update.
Created attachment 238384 [details] [review] same patch file, not zipped This is the same patch, but the patch file is not gzipped.
This bug was previously marked ASSIGNED, which means it should be fixed in doxygen version 1.8.4. Please verify if this is indeed the case. Reopen the bug if you think it is not fixed and please include any additional information that you think can be relevant.
I agree, it is fixed, thank you!