【问题标题】:is it possible to make doxygen to merge member groups是否可以让doxygen合并成员组
【发布时间】:2012-07-17 16:17:50
【问题描述】:

我正在使用 doxygen 来记录 C++ 代码。假设我有两个类:Base 类和派生自 Base 的类 Derived。我在 Base 和 Derived 中有一个名为 Foo 的成员组。是否可以让 doxygen 在类 Derived 的文档中显示一个名为 Foo 的单个组,而不是像我现在观察到的那样有两个同名的组?

【问题讨论】:

  • 您在使用INLINE_INHERITED_MEMB 在派生类的文档中显示基的成员,对吧?
  • @pmr 是的,我愿意。我没有看到任何其他相关选项
  • 经过一些实验,我认为这是不可能的。您可能想在 bugtracker 中提交功能请求。

标签: c++ doxygen


【解决方案1】:

我修补了 doxygen 的结帐来执行此操作。补丁如下。我没有注意到生成的文档中有任何不良影响。该实现的缺点是它是一个 O(n^2) 算法,其中 n 是成员组的数量。在我的情况下,成员组的数量足够少,复杂性不会打扰我。

Index: src/util.cpp
===================================================================
--- src/util.cpp    (revision 848)
+++ src/util.cpp    (working copy)
@@ -5759,6 +5759,24 @@
           (*ppMemberGroupSDict)->setAutoDelete(TRUE);
         }
         MemberGroup *mg = (*ppMemberGroupSDict)->find(groupId);
+
+        uint ngrps = (*ppMemberGroupSDict)->count();
+        const char * ghs = info->header;
+        int          gid = groupId;
+        for (uint i=0; i != ngrps; ++i)
+        {
+          MemberGroup *tg = (*ppMemberGroupSDict)->at(i);
+          MemberListIterator oli(*(tg->members()));
+          MemberDef *omd = oli.current();
+          const char * ohs = Doxygen::memGrpInfoDict[omd->getMemberGroupId()]->header;
+          int          oid = tg->groupId();
+          if ( ghs && ohs && strcmp(ghs, ohs) == 0)
+          {
+            mg = tg;
+            break;
+          }
+        }
+
         if (mg==0)
         {
           mg = new MemberGroup(

代码通过扫描成员组字典中已有的组来查找具有相同名称(即标题)的组。如果找到这样的组,则将该组用作要插入的成员的成员组。

【讨论】:

  • 你为什么不要求将你的补丁包含在 Doxygen 中?我认为这应该是默认行为,或者至少应该是可选的,但无论如何都包含在 Doxygen 中。
  • 我准备了一个补丁,但它是在 1.8.4 发布并且开发从 svn 转移到 git 时提交的。 doxygen 1.8.4 对文档的格式不同,我无法在该版本中轻松重现该问题。在此期间,我没有更多的周期可以投入其中,但准备好后会提交一个补丁。
  • 如果补丁被打了,你能提供配置选项来启用它吗?我一直在尝试这样做两个小时左右......如果没有采取,你能说一下,所以我知道我的任务是浪费时间。
  • 补丁没有被使用。当时我无法用 1.8.4 的示例重现该问题。我需要重新审视这个问题,因为我应该更新用于构建文档的 doxygen 版本,但这不会在新年之前发生。
猜你喜欢
  • 1970-01-01
  • 2018-12-04
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 2020-05-25
  • 2022-11-27
相关资源
最近更新 更多