3

C++ コードの文書化に doxygen を使用しています。Base クラスと Base から派生した Derived クラスの 2 つのクラスがあるとします。Base と Derived の両方に Foo という名前のメンバー グループがあります。私が今見ているように、同じ名前のグループを2つ持つ代わりに、DerivedクラスのドキュメントにFooという名前の単一のグループを表示するようにdoxygenを作成することは可能ですか?

4

1 に答える 1

2

これを行うために、doxygen のチェックアウトにパッチを当てました。パッチは以下です。生成されたドキュメントに悪影響は見られませんでした。実装の欠点は、n がメンバー グループの数である O(n^2) アルゴリズムであることです。私の場合、メンバー グループの数は十分に少ないので、複雑さは気になりません。

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(

このコードは、メンバー グループ ディクショナリに既にあるグループをスキャンして、同じ名前 (つまり、ヘッダー) を持つグループを探すことによって機能します。そのようなグループが見つかった場合、そのグループは、挿入されるメンバーのメンバー グループとして使用されます。

于 2013-05-15T15:31:03.493 に答える