Thread: Re: [Doxygen-users] Tag file missing public class members
Brought to you by:
dimitri
From: David T. <dav...@ki...> - 2014-09-20 01:43:25
|
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 |
From: Dimitri v. H. <do...@gm...> - 2014-09-21 19:15:09
|
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 <dav...@ki...> 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 > Dox...@li... > https://lists.sourceforge.net/lists/listinfo/doxygen-users |
From: Jeffrey M. <jme...@mi...> - 2014-09-23 16:51:45
|
On 9/21/2014 3:14 PM, Dimitri van Heesch wrote: > 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 <dav...@ki...> 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 >> Dox...@li... >> 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 > Dox...@li... > https://lists.sourceforge.net/lists/listinfo/doxygen-users > Dimitri, Thanks for the update. Can you keep me in the loop on this feature? I would be happy to test out any commits for you against my codebase. I'm going to continue using the workaround in the meantime. Cheers, Jeff |
From: Dimitri v. H. <do...@gm...> - 2014-09-23 17:53:52
|
On 23 Sep 2014, at 18:51 , Jeffrey Melville <jme...@mi...> wrote: > > Dimitri, > > Thanks for the update. Can you keep me in the loop on this feature? I > would be happy to test out any commits for you against my codebase. I'm > going to continue using the workaround in the meantime. Yes, please try the latest snapshot from GitHub which contains this commit: https://github.com/doxygen/doxygen/commit/b9ad9a03cf4febeb2aa10ddca22c1c9296c5223b and let me know if you still see any issues. Regards, Dimitri |