7

doxygen で C++ の概念を文書化する便利な方法はありますか? ブーストのドキュメントに、このようなドキュメントをいくつか用意したいと思います。

4

5 に答える 5

7

Doxygenに苦労した後、最終的に次の解決策にたどり着きました。

  1. コンセプトのグループを定義します。ページはそのサブページ (ツリーの上から下) を示す必要があるため、ページの使用は適切ではありませんが、グループは潜在的に多くの親グループを示します。これにより、次のことが可能になります。

    • 親概念自体を変更せずに、1 つ (または複数) の親概念に概念を追加する (概念の洗練/一般化)
    • 概念自体を変更せずにエンティティを複数の概念にリンクする (例: 特定の概念を実装するライブラリにクラスを追加する場合)

    /*!@defgroup measurement_functor_concepts Measurement function objects
     * @ingroup generalconcepts
     * @{
     * @par Description
     * blablabla
     *
     * @par Notations
     * Let @c F be the type of the function object, @c f an instance.
     *
     * @par Valid Expressions
     * - @c f function object is ...
     * - <b>f.result()</b> returns ...
     * @}
     */
    
  2. concept1 つの引数でカスタム コマンドを定義します。

    ALIASES += concept{1}="@ingroup \1\n@par Implemented concepts:\n@ref \1"
    

    コマンド:

    • 概念を定義するグループにエンティティを含めます: エンティティは概念のドキュメントに表示されます (エンティティは複数のグループに表示される場合があります)。
    • Implemented concepts実装された概念へのリンクを提供する段落を追加します。
  3. 特定のクラス/構造体が概念を実装していることを示します。

    //!@brief Does things...
    //!@concept{measurement_functor_concepts}
    template <class T>
    struct my_struct: public std::unary_function<T, void> {};
    

Boost のような素敵なドキュメント (有効な式の素敵なテーブルなど) を生成する方法は見つかりませんでしたが、少なくともこのドキュメントの編成は物事を適切に分離しています。

于 2013-03-19T15:21:55.580 に答える
3

できることは、Concept と呼ばれるカスタム タグを定義することです。これを説明どおりに使用できます。このは、次のような Doxygen のエイリアス メカニズムを使用することです。

エイリアス += "con=\xrefitem con \"コンセプト\" \"コンセプト\""

于 2012-04-10T13:31:21.003 に答える
2

テンプレート パラメーター\tparamに関するコメント/文書化に使用できます。

于 2012-04-10T10:43:36.023 に答える
1

次のことを検討することをお勧めします。

a) Boost Concept Checking ライブラリのドキュメントを参照してください。このドキュメントでは、コードで使用できるクラスを作成して、at 型が定義したい概念の要件を実際に満たしていることを確認する方法を示します。次のように使用します。

template<typename T>
my_class{
  MyConcept(T); // provokes compile error if T does not match concept
  T m_t;
};

参考までに、コンセプト チェック クラスの作成に使用される要素とコンセプト ライト プロポーザルの間には 1 対 1 の対応があります。したがって、concepts lite が実際に機能している場合、移行は簡単なはずです。

b) DOxygen を使用して、MyConcept チェック クラスを文書化します !!!

c) my_class ドキュメントで DOxygen /tparam を使用して、MyConcept を参照します。

c) これで、まさにあなたが求めていたものを手に入れることができました!!! - あなたのコンセプトのための別のページ、およびそのコンセプトを必要とするすべてのクラスからそれを参照する機能。

于 2016-01-09T20:38:19.557 に答える
1

私は現在、別々のマニュアルページを使用して概念を文書化し、 と でグループ化してい\sectionます\subsection。その後、 でそれらにリンクできます\ref。これは、提供したリンクのように表を使用して概念を説明している限り機能しますが、残念ながら単一のセクションへのリンクは有効になりません。

型がモデル化する概念のリストを作成するエイリアスもあります。

于 2012-04-21T02:18:49.197 に答える