Hi David,

Thanks for the reminder.
I'm working on a different way to generate the tag files, i.e. using a separate 
function rather than to generate it as the side-effect of writing the 
documentation. That way the workaround with the 'tagDataWritten' flag is no 
longer needed.

Regards,
  Dimitri

On 20 Sep 2014, at 3:43 , David Thompson <david.thomp...@kitware.com> wrote:

> Hi all,
> 
> I just wanted to make sure that Jeffrey Melville's patch doesn't get dropped; 
> I was having the same issue (no tag entry for a base class member when a 
> subclass also documented it) and his patch got the tag file working for me.
> 
>       Thanks,
>       David
> 
>> Below is a patch that fixed the problem on my codebase. I'm not sure if 
>> it breaks other cases where you actually want to suppress the tag data 
>> being generated multiple times. I can submit a Github pull request if 
>> you'd prefer.
>> 
>> Cheers,
>> Jeff
>> 
>> From b874223b33d4939c53b42df75ce62bcc4acea318 Mon Sep 17 00:00:00 2001
>> From: Jeffrey Melville <jmelville@...>
>> Date: Mon, 8 Sep 2014 13:16:29 -0400
>> Subject: [PATCH] Fix for missing inherited class members in tag files.
>> 
>> Signed-off-by: Jeffrey Melville <jmelville@...>
>> ---
>>  src/memberdef.cpp | 6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>> 
>> diff --git a/src/memberdef.cpp b/src/memberdef.cpp
>> index a25528a..8626e5e 100644
>> --- a/src/memberdef.cpp
>> +++ b/src/memberdef.cpp
>> @@ -3550,7 +3550,11 @@ Specifier MemberDef::virtualness(int count) const
>>  void MemberDef::_writeTagData(const DefType compoundType)
>>  {
>>    unsigned typeMask = 1 << compoundType;
>> -  if ((m_impl->tagDataWritten) & typeMask) return; // member already 
>> written for this type
>> +
>> +  // Return if member already written for this compoundType, except if
>> +  // compoundType is a class. This function can be run multiple times for
>> +  // classes in an inheritance hierarchy.
>> +  if (compoundType != TypeClass && (m_impl->tagDataWritten) & typeMask) 
>> return;
>>    if (m_impl->mtype==MemberType_EnumValue && m_impl->enumScope &&
>>        m_impl->enumScope->isStrong()) return; // enum value is part of enum
>>    static bool generateTagFile = 
>> !Config_getString("GENERATE_TAGFILE").isEmpty();
>> --
>> 1.9.1
> 
> ------------------------------------------------------------------------------
> Slashdot TV.  Video for Nerds.  Stuff that Matters.
> http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
> _______________________________________________
> Doxygen-users mailing list
> Doxygen-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/doxygen-users


------------------------------------------------------------------------------
Slashdot TV.  Video for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
_______________________________________________
Doxygen-users mailing list
Doxygen-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/doxygen-users

Reply via email to