網域.

バージョン 1.0 で追加.

最初にSphinxは単一のプロジェクトのために構想されたPython言語文書ですしばらくして、それは文書ツールとしてすべての人に提供されましたが、Pythonモジュールの文書は依然としてその中に深く内蔵されています--例えば最も基本的な指示 function Pythonオブジェクトのために設計されていますSphinxが少し流行しているため,C/C++プロジェクト,JavaScript,さらにはreStrucredTextタグ(本稿で示すように)の多くの異なる目的に利用されるようになった.

これは常に可能であるが、現在では異なるプログラミング言語を用いたプロジェクト文書、さらにはマスタSphinx発行版ではサポートされていないプロジェクト文書をより容易にサポートすることができる方法が提供されている このようなすべての目的のために。

属性ドメインはタグ(ReStructiredText)の集合である. directive sと role s)記述してリンクする object 一緒に属する、例えばプログラミング言語の要素。ドメイン内のコマンドとロール名の名前は以下のとおりである. domain:name 例えば、: py:function それがそうです。ドメインはまた、Pythonモジュールインデックスのようなカスタムインデックスを提供することができます。

ドメインを持つことは、文書のセットがC++およびPythonクラスを参照したい場合、名前付けの問題が発生しないことを意味します。これはまた新しい言語文書を支援する拡張が作成しやすいことを意味する。

本節では,Sphinxに付随するドメインが提供する機能について述べる.一部にはドメインAPIも記録されている. ドメインAPI それがそうです。

基本割増価格

ほとんどの地域は多くの object description directives モジュールによって提供される特定のオブジェクトを記述するために使用される。各命令は、記述されたコンテンツに関する基本情報を提供するために1つまたは複数の署名を必要とし、コンテンツは説明であるべきである。ドメインは、一般に、交差参照を容易にするために、すべてのエンティティの内部インデックスを保持する。一般に、それはまた、表示された従来のインデックスにエントリを追加する。表示されたインデックスへのエントリの追加を禁止したい場合は、コマンドオプションにフラグを設定することができます :noindexentry: それがそうです。オブジェクト記述をレイアウトし、交差参照のために使用することさえできない場合、命令オプションにフラグを設定することができる :noindex: (これはつまり :noindexentry: )。しかし、各ドメインの各指示がこのようなオプションをサポートする可能性があるわけではないことに注意してください。

バージョン 3.2 で追加: 指示オプション noindexentry Python、C、C++およびJavascriptドメインで。

Pythonドメイン命令を使用する例:

.. py:function:: spam(eggs)
                 ham(eggs)

   Spam or ham the foo.

次に2つのPython関数を紹介します spam そして ham それがそうです。(署名が長すぎる場合には、次の行に続く行に逆スラッシュが追加されていれば、行を改行することができることに留意されたい。例::

.. py:function:: filterwarnings(action, message='', category=Warning, \
                                module='', lineno=0, append=False)
   :noindex:

(この例は、使用方法も示している :noindex: 旗。)

ドメインはまた,これらのオブジェクト記述にリンクする役割を提供する.例えば、上記の例で説明した関数のうちの1つにリンクするには、以下のようにいえる。

The function :py:func:`spam` does a similar thing.

ご覧のように、コマンド名とキャラクター名にはドメイン名とコマンド名が含まれています。

デフォルト域.

1つのドメインのみからのオブジェクトを記述する文書については、著者は、各命令、役割などでその名前を再宣言する必要はない…デフォルト値を指定した後。これは値を構成することで primary_domain あるいはこの指示によって:

.. default-domain:: name

新しい黙認ドメインを選択する。当. primary_domain グローバルデフォルト値を選択し、これは同一ファイル内でのみ有効です。

他のデフォルト値が選択されていない場合、Pythonドメイン(名前は py )はデフォルトであり、主に古いバージョンのSphinxのために書かれた文書と互換性があるためである。

ドメイン名を指定することなく、デフォルトドメインに属する命令および役割を言及することができる。

.. function:: pyfunc()

   Describes a Python function.

Reference to :func:`pyfunc`.

交差引用文法

ドメインが提供する交差参照役割に対しては,通常の交差参照と同様の機能が存在する.見 交差引用文法 それがそうです。

簡単に言うと

  • 明確なタイトルと引用目標を提供することができます: :role:`title <target> `引用する 目標 しかしリンクテキストは タイトル それがそうです。

  • コンテンツの前に接頭辞をつけると ! 参照/ハイパーリンクは作成されません。

  • コンテンツの前に接頭辞をつけると ~ したがって,リンクテキストはターゲットの最後のコンポーネントのみとなる.例えば :py:meth:`~Queue.Queue.get 引用する ``Queue.Queue.get` しかし表示されているのは get リンクテキストとする.

Pythonドメイン

Pythonドメイン(名前 py )モジュール宣言に以下の命令を提供します。

.. py:module:: name

この命令マーキングモジュール(または饅頭モジュール、この場合、名前は、パッケージ名を含む)記述の開始を完全に限定すべきである。コンテンツは作成されません(例えば py:class 確かにそうです)。

この命令はまた、グローバルモジュールインデックスにエントリを作成する。

オプション

:platform: platforms (comma separated list)

モジュールが利用可能なプラットフォームを指定する(モジュールがすべてのプラットフォーム上で利用可能である場合、オプションは省略されるべきである)。鍵は短い識別子であり、使用されている例は、“IRIX”、“Mac”、“Windows”、“Unix”を含む。適用する場合には,すでに使用した鍵を用いることが重要である.

:synopsis: purpose (text)

1つの文からなり、モジュールの使用を記述する--現在、グローバルモジュールインデックスでのみ使用されている。

:deprecated: (no argument)

モジュールは破棄されたものとしてマークされ、その後、異なる位置で破棄されたモジュールとして指定される。

.. py:currentmodule:: name

この命令は、ここに記述されたクラス、関数などが所与のモジュールにあることをSphinxに伝える(例えば、 py:module )であるが、インデックス項、グローバルモジュールインデックスの項、または以下の項目のリンク先は作成されない py:mod それがそうです。これは,モジュール内の文書が複数の文書または部分に分散している場合に有用である-1つの位置にある py:module 指示、その他は限定されています py:currentmodule それがそうです。

モジュールおよびクラスコンテンツについては、以下の命令が提供される。

.. py:function:: name(parameters)

モジュールレベル関数を記述する.署名にはPython関数定義で与えられたパラメータが含まれるべきですので、参照されたい Python署名 それがそうです。例えば:

.. py:function:: Timer.repeat(repeat=3, number=1000000)

あなたが使うべき方法 py:method それがそうです。

説明は、一般に、必要なパラメータおよびその使用方法に関する情報(特にパラメータとして伝達される可変オブジェクトが修正されているかどうか)、副作用、および可能な異常を含む。

この情報は py 命令)は任意に構造化された形で与えられるので、参照されたい 情報フィールドリスト それがそうです。

オプション

:async: (no value)

この関数が非同期関数であることを示す.

バージョン 2.1 で追加.

.. py:data:: name

記述モジュール内のグローバルデータは、“定義された定数”として使用される変数および値を含む。この環境を用いた場合,クラスやオブジェクト属性は記録されていない.

オプション

:type: type of the variable (text)

バージョン 2.4 で追加.

:value: initial value of the variable (text)

バージョン 2.4 で追加.

.. py:exception:: name

異常類を記述する。署名は構造関数パラメータ付き丸括弧を含むことができる(ただし必要ない).

オプション

:final: (no value)

そのクラスが期末クラスであることを示す.

バージョン 3.1 で追加.

.. py:class:: name
.. py:class:: name(parameters)

1つのクラスを記述する.署名は、構造関数パラメータとして表示されるパラメータを有する丸括弧を選択的に含むことができる。また見られる. Python署名 それがそうです。

このクラスに属するメソッドと属性は,この命令の主体に置かれるべきである.それらが外部に配置されている場合、提供される名前は、交差参照が依然として有効であるようにクラス名を含むべきである。例::

.. py:class:: Foo

   .. py:method:: quux()

-- or --

.. py:class:: Bar

.. py:method:: Bar.quux()

第一の方法は第一選択の方法である。

オプション

:final: (no value)

そのクラスが期末クラスであることを示す.

バージョン 3.1 で追加.

.. py:attribute:: name

オブジェクトデータ属性を記述する.記述には、予期されるデータタイプおよび直接変更可能かどうかに関する情報が含まれるべきである。

オプション

:type: type of the attribute (text)

バージョン 2.4 で追加.

:value: initial value of the attribute (text)

バージョン 2.4 で追加.

.. py:method:: name(parameters)

対象方法を記述する.パラメータは含まれてはいけない self パラメータ説明は、以下と同様の情報を含むべきである function それがそうです。また見られる. Python署名 そして 情報フィールドリスト それがそうです。

オプション

:abstractmethod: (no value)

この方法が抽象的な方法であることを指示する.

バージョン 2.1 で追加.

:async: (no value)

この方法が非同期メソッドであることを示す.

バージョン 2.1 で追加.

:classmethod: (no value)

この方法がクラスメソッドであることを指示する.

バージョン 2.1 で追加.

:final: (no value)

このクラスを指示することが最終的な方法である.

バージョン 3.1 で追加.

:property: (no value)

この方法が属性であることを指示する.

バージョン 2.1 で追加.

:staticmethod: (no value)

この方法が静的メソッドであることを示す.

バージョン 2.1 で追加.

.. py:staticmethod:: name(parameters)

py:method ただし,この方法が静的メソッドであることを示す.

バージョン 0.4 で追加.

.. py:classmethod:: name(parameters)

py:method ただし,この方法がクラスメソッドであることを示す.

バージョン 0.6 で追加.

.. py:decorator:: name
.. py:decorator:: name(parameters)

装飾符関数を記述する。サインは装飾者の使い方を代表しなければならない。例えば、与えられた関数

def removename(func):
    func.__name__ = ''
    return func

def setnewname(name):
    def decorator(func):
        func.__name__ = name
        return func
    return decorator

説明は以下のとおりである.

.. py:decorator:: removename

   Remove name of the decorated function.

.. py:decorator:: setnewname(name)

   Set name of the decorated function to *name*.

(と) .. py:decorator:: removename(func) ()

いえ。 py:deco キャラクターはこの指示でマークされた装飾器にリンクされている;使用すべきである py:func 役。

.. py:decoratormethod:: name
.. py:decoratormethod:: name(signature)

相同 py:decorator しかし、装飾者にとっては、これは一つの方法だ。

方法は装飾器の方法を引用する。 py:meth 役。

Python署名

関数,メソッド,クラス構造関数の署名はPythonで書かれたように与えることができる.

オプションのパラメータのデフォルト値を与えることができる(ただし、それらがコンマを含む場合、署名解析器を混同する)。Python 3スタイルパラメータ書き込みおよびリターンタイプ書き込みも与えられます。

.. py:function:: compile(source : string, filename, symbol='file') -> ast object

デフォルト値のないオプションのパラメータを有する関数(通常、キーワードパラメータがサポートされていないC拡張モジュールで実装される関数)については、方形括弧を使用して選択可能な部分を指定することができる:

compile(source[, filename[, symbol]])

左括弧はコンマの前に置くのが習慣です。

情報フィールドリスト

バージョン 0.4 で追加.

バージョン 3.0 で変更: メタフィールドを追加します。

Pythonオブジェクト記述命令では、以下のフィールドを含むRESTフィールドリストをよく識別してフォーマットすることができます:

  • param, parameter, arg, argument, key, keyword: Description of a parameter.

  • type :パラメータのタイプ.可能であれば、リンクを作成します。

  • raises, raise, except, exception: That (and when) a specific exception is raised.

  • var, ivar, cvar: Description of a variable.

  • vartype :変数のタイプ.可能であれば、リンクを作成します。

  • returns, return: Description of the return value.

  • rtype :タイプを返します。可能であれば、リンクを作成します。

  • meta :pythonオブジェクトの記述にメタデータを追加します。メタデータは出力文書に表示されない.例えば :meta private: Pythonオブジェクトがプライベートメンバであることを示します。これは sphinx.ext.autodoc メンバーを選別するために使います。

注釈

In current release, all var, ivar and cvar are represented as "Variable". There is no difference at all.

フィールド名は、以下のキーワードのうちの1つとパラメータから構成されなければならない(除く) returns そして rtype これらはパラメータを必要としない).以下の例は、この点を最も説明することができる。

.. py:function:: send_message(sender, recipient, message_body, [priority=1])

   Send a message to a recipient

   :param str sender: The person sending the message
   :param str recipient: The recipient of the message
   :param str message_body: The body of the message
   :param priority: The priority of the message, can be a number 1-5
   :type priority: integer or None
   :return: the message id
   :rtype: int
   :raises ValueError: if the message_body exceeds 160 characters
   :raises TypeError: if the message_body is not a basestring

これは以下のようになる.

send_message(sender, recipient, message_body[, priority=1])

受取人にメールを送る

パラメータ
  • sender (str) -- メッセージを送る人

  • recipient (str) -- メッセージの受取人

  • message_body (str) -- メッセージの本文

  • priority (integer or None) -- メッセージの優先度は、数字1~5とすることができる

戻り値

メッセージID

戻り値の型

int

例外
  • ValueError -- Message_bodyが160文字を超える場合

  • TypeError -- Message_bodyが基本文字列でなければ

タイプが単一の単語であれば、以下に示すように、パラメータタイプと記述を組み合わせてもよい。

:param int priority: The priority of the message, can be a number 1-5

バージョン 1.5 で追加.

以下の文法自動リンクリストや辞書などのコンテナタイプを使用することができる:

:type priorities: list(int)
:type priorities: list[int]
:type mapping: dict(str, int)
:type mapping: dict[str, int]
:type point: tuple(float, float)
:type point: tuple[float, float]

単語“or”:で区切られている場合、タイプフィールド内の複数のタイプが自動的にリンクされる

:type an_arg: int or None
:vartype a_var: str or int
:rtype: float or str

クロスリファレンスPythonオブジェクト

以下の役割とは,モジュール中のオブジェクトであり,マッチする識別子が見つかれば,これらのロールはハイパーリンクされる可能性がある:

:py:mod:

参照モジュール;ポイント付き名前を使用することができる.これはまたパッケージ名に使用されなければならない。

:py:func:

Python関数を参照します;ポイント付きの名前を使用することができます。キャラクタテキストは、可読性を向上させるために末尾丸括弧を含む必要はない; add_function_parentheses 配置値は True (デフォルト設定)。

:py:data:

モジュールレベル変数を参照する.

:py:const:

“定義された”定数を引用する.これは変更しようとしないPython変数かもしれません。

:py:class:

1つのクラスを参照する;ポイント付きの名前を使用することができる。

:py:meth:

対象を引用する方法。ロールテキストは、タイプ名およびメソッド名を含むことができ、タイプの記述に出現する場合、タイプ名を省略することができる。ポイント付きの名前をご利用いただけます。

:py:attr:

参照対象のデータ属性.

:py:exc:

引用異常。ポイント付きの名前をご利用いただけます。

:py:obj:

タイプが指定されていないオブジェクトを参照する.有用な、例えば default_role それがそうです。

バージョン 0.4 で追加.

このタグに含まれる名前は、モジュール名および/またはクラス名を含むことができる。例えば :py:func:`filter 名前を引用することができる ``filter` 現在のモジュールでは、またはその名前の内蔵関数に含まれる。対照的に :py:func:`foo.filter 明らかに ``filter` 関数中の foo モジュールです。

一般に、これらのロール中の名前は、まず、これ以上限定されることなく検索され、その後、前に現在のモジュール名が追加され、その後、前に現在のモジュールおよびクラス名が追加される(あれば)。もしあなたが名前の前に点を追加した場合、この順序は逆になるだろう。例えばPythonの文書では codecs モジュールは :py:func:`open いつも内蔵関数のことだ. `open`() ってこと? :func:`codecs.open それがそうです。

類似したヒューリスティック手法を用いて、その名前が現在記録されているクラスの属性であるか否かを決定する。

また、名称が点を接頭辞とし、完全に一致する名称が見つからない場合には、対象を接尾辞と見なし、その接尾辞を有する全ての対象名を検索する。例えば :py:meth:`.TarFile.close 引用 ``tarfile.TarFile.close()` 関数は、現在のモジュールがそうでなくても tarfile それがそうです。これは不明確になる可能性があるので、複数の可能な一致がある場合、あなたはSphinxから警告を受けるだろう。

注意してください ~ and . 接頭辞: :py:meth:`~.TarFile.close 引用する ``tarfile.TarFile.close()` 方法は、しかし、リンクタイトルはわずかになることがわかります。 close() それがそうです。

Cドメイン

Cドメイン(名前 c )C APIに適した文書作成。

.. c:member:: declaration
.. c:var:: declaration

C構造メンバまたは変数を記述する.署名例::

.. c:member:: PyObject *PyTypeObject.tp_bases

この二つの指示の間の違いはただ表面的なものだ。

.. c:function:: function prototype

C関数を記述しています署名は、Cに示すように、例えば、:

.. c:function:: PyObject *PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)

RESTインターコネクションプログラムによって解析されないので、署名に逆スラッシュ変換星番号を使用する必要はありません。

.. c:macro:: name
.. c:macro:: name(arg list)

C言語マクロ、すなわちC言語を記述する #define ,書き換えテキストはない.

バージョン 3.0 で追加: 関数パターン変数。

.. c:struct:: name

C構造を記述する.

バージョン 3.0 で追加.

.. c:union:: name

1つのCセットが記載されている。

バージョン 3.0 で追加.

.. c:enum:: name

Cエニュメレーションを記述する.

バージョン 3.0 で追加.

.. c:enumerator:: name

C枚挙数を記述する.

バージョン 3.0 で追加.

.. c:type:: typedef-like declaration
.. c:type:: name

Cタイプは、tyecifまたはタイプが指定されていないエイリアスとして記述される。

クロス引用C構造

以下の役割は,C言語構造に対する交差引用を作成する(文書中にこれらの構造が定義されていれば).

:c:member:
:c:data:
:c:var:
:c:func:
:c:macro:
:c:struct:
:c:union:
:c:enum:
:c:enumerator:
:c:type:

Reference a C declaration, as defined above. Note that c:member, c:data, and c:var are equivalent.

バージョン 3.0 で追加: Var、struct、Union、enum、枚挙器役割。

匿名実体.

Cは、匿名構造、列挙、および連携をサポートする。記録のために、それらのために最初の名前を指定しなければなりません。 @, e.g., @42 or @data. These names can also be used in cross-references, though nested symbols will be found even when omitted. The @... 名前は常に [[anonymous]] (リンクとしてかもしれない).

例::

.. c:struct:: Data

   .. c:union:: @data

      .. c:var:: int a

      .. c:var:: double b

Explicit ref: :c:var:`Data.@data.a`. Short-hand ref: :c:var:`Data.a`.

これは次のようになります

struct Data
union [anonymous]
int a
double b

明示的な引用: Data.[anonymous].a それがそうです。速記参考: Data.a それがそうです。

バージョン 3.0 で追加.

別名声明.

場合によっては、インターフェース概要を作成する際など、マスタ文書以外の他の場所に宣言を列挙することが有用である可能性がある。以下の指示は、この目的に使用することができる。

.. c:alias:: name

1つ以上の別名宣言を挿入する。全ての実体は c:any 役。

例えば:

.. c:var:: int data
.. c:function:: int f(double k)

.. c:alias:: data
             f

Vbl.成る

int data
int f(double k)
int data
int f(double k)

バージョン 3.2 で追加.

オプション

:maxdepth: int

与えられた総深さまで入れ子宣言も挿入される.0を用いて無限深さを表し,上記の宣言を1で表す.デフォルトは1である.

バージョン 3.3 で追加.

内接式とタイプ

:c:expr:
:c:texpr:

内部接続コードにC式またはキー入力を挿入する (cpp:expr )またはイントラネットテキスト (cpp:texpr )。例えば:

.. c:var:: int a = 42

.. c:function:: int f(int i)

An expression: :c:expr:`a * f(a)` (or as text: :c:texpr:`a * f(a)`).

A type: :c:expr:`const Data*`
(or as text :c:texpr:`const Data*`).

以下のようになる。

int a = 42
int f(int i)

1つの式: a * f(a) (またはテキストとして: a * f(a) )。

Aタイプ: const Data* (またはテキスト形式 const Data* )。

バージョン 3.0 で追加.

命名空間.

バージョン 3.1 で追加.

C言語自体は名前空間をサポートしていないが,文書中でそれを模倣することが有用である場合があり,たとえば,代替宣言を表示するために用いられる.この機能はまた、その親宣言から分離されるように、構造/連携/列挙されたメンバを記録するために使用されてもよい。

3つの名前空間命令を使用して現在のスコープを変更することができる.スタック宣言を管理しています c:namespace スタックをリセットし,与えられたスコープを変更する.

♪the c:namespace-push 命令は,スコープを現在のスコープの所与の内部スコープに変更する.

♪the c:namespace-pop 指令は最も近いものを破棄した. c:namespace-push 指令する。

.. c:namespace:: scope specification

後続オブジェクトの現在のスコープを与えられたスコープに変更し,名前空間命令スタックをリセットする.ネストされたスコープは、例えば、点分離によって指定されてもよいことに留意されたい。

.. c:namespace:: Namespace1.Namespace2.SomeStruct.AnInnerStruct

すべての後続オブジェクトは,その名前宣言時に接頭辞を持つスコープとして定義される.現在の範囲から後続の交差参照を探索する.

Vbl.使用 NULL あるいは…。 0 スコープは大域スコープに変更されるからである.

.. c:namespace-push:: scope specification

現在の範囲に対して範囲を変更します。例えば、::の後

.. c:namespace:: A.B

.. c:namespace-push:: C.D

現在の範囲は A.B.C.D それがそうです。

.. c:namespace-pop::

前の1つを破棄する. c:namespace-push 指令(命令) not オシロスコープを一つポップアップすればいい)。例えば、::の後

.. c:namespace:: A.B

.. c:namespace-push:: C.D

.. c:namespace-pop::

現在の範囲は A.B () not A.B.C )。

もし前になかったら c:namespace-push 指示は使用されたが、一つしかなかった。 c:namespace 命令は,現在のスコープを大域スコープとしてリセットする.つまり、 .. c:namespace:: A.B これは以下のようなものです

.. c:namespace:: NULL

.. c:namespace-push:: A.B

構成変数

Cドメインのオプション それがそうです。

C++ドメイン

C++ドメイン(名前 cpp )C++プロジェクトをサポートします。

実体を宣言するための命令

The following directives are available. All declarations can start with a visibility statement (public, private or protected).

.. cpp:class:: class specifier
.. cpp:struct:: class specifier

クラス/構造を記述することは、例えば、継承仕様を有することができる。

.. cpp:class:: MyClass : public MyBase, MyOtherBase

間の違い cpp:class そして cpp:struct ただし,表面的には,出力に現れるプレフィックスとインデックスに表示される説明子である.

クラスは、入れ子スコープにおいて直接宣言することができ、例えば、:

.. cpp:class:: OuterScope::MyClass : public MyBase, MyOtherBase

クラステンプレートは、以下のように宣言することができる。

.. cpp:class:: template<typename T, std::size_t N> std::array

あるいは改行を使用します:

.. cpp:class:: template<typename T, std::size_t N> \
               std::array

完全テンプレート専門化と部分テンプレート専門化は以下のように宣言できる.

.. cpp:class:: template<> \
               std::array<bool, 256>

.. cpp:class:: template<typename T> \
               std::array<T, 42>

バージョン 2.0 で追加: ♪the cpp:struct 指令する。

.. cpp:function:: (member) function prototype

記述関数またはメンバ関数、例えば、:

.. cpp:function:: bool myMethod(int arg1, std::string arg2)

   A function with parameters and types.

.. cpp:function:: bool myMethod(int, double)

   A function with unnamed parameters.

.. cpp:function:: const T &MyClass::operator[](std::size_t i) const

   An overload for the indexing operator.

.. cpp:function:: operator bool() const

   A casting operator.

.. cpp:function:: constexpr void foo(std::string &bar[2]) noexcept

   A constexpr function.

.. cpp:function:: MyClass::MyClass(const MyClass&) = default

   A copy constructor with default implementation.

関数テンプレートは、以下のように記述されてもよい。

.. cpp:function:: template<typename U> \
                  void print(U &&u)

関数テンプレートに特化する:

.. cpp:function:: template<> \
                  void print(int i)
.. cpp:member:: (member) variable declaration
.. cpp:var:: (member) variable declaration

記述変数またはメンバ変数、例えば:

.. cpp:member:: std::string MyClass::myMember

.. cpp:var:: std::string MyClass::myOtherMember[N][M]

.. cpp:member:: int a = 42

変数テンプレートは、以下のように記述されてもよい。

.. cpp:member:: template<class T> \
                constexpr T pi = T(3.1415926535897932385)
.. cpp:type:: typedef declaration
.. cpp:type:: name
.. cpp:type:: type alias declaration

タイプ定義宣言、タイプ別名宣言、または指定されていないタイプを有する単純なタイプ名、例えば、:

.. cpp:type:: std::vector<int> MyList

   A typedef-like declaration of a type.

.. cpp:type:: MyContainer::const_iterator

   Declaration of a type alias with unspecified type.

.. cpp:type:: MyType = std::unordered_map<int, std::string>

   Declaration of a type alias.

タイプ別名もテンプレート化することができます:

.. cpp:type:: template<typename T> \
              MyContainer = std::vector<T>

例を以下に示す.

typedef std::vector<int> MyList

1つのタイプのクラスtyecif宣言。

type MyContainer::const_iterator

宣言は、タイプが指定されていないタイプの別名を有する。

using MyType = std::unordered_map<int, std::string>

タイプ別名の声明。

template<typename T>
using MyContainer = std::vector<T>
.. cpp:enum:: unscoped enum declaration
.. cpp:enum-struct:: scoped enum declaration
.. cpp:enum-class:: scoped enum declaration

記述(スコープ限定の)列挙は,指定されたベースタイプを用いることが可能である.スコープを限定しないエニュメレーション内宣言のどの列挙数もエニュメレーションスコープと親アクションドメインで宣言される.例:

.. cpp:enum:: MyEnum

   An unscoped enum.

.. cpp:enum:: MySpecificEnum : long

   An unscoped enum with specified underlying type.

.. cpp:enum-class:: MyScopedEnum

   A scoped enum.

.. cpp:enum-struct:: protected MyScopedVisibilityEnum : std::underlying_type<MySpecificEnum>::type

   A scoped enum with non-default visibility, and with a specified
   underlying type.
.. cpp:enumerator:: name
.. cpp:enumerator:: name = constant

列挙数を記述し、その値を定義することを選択することができる。

.. cpp:enumerator:: MyEnum::myEnumerator

.. cpp:enumerator:: MyEnum::myOtherEnumerator = 42
.. cpp:union:: name

労働組合を説明する。

バージョン 1.8 で追加.

.. cpp:concept:: template-parameter-list name

警告

概念の支援は実験的である.それは現在の標準草案と概念技術規範に基づいている。機能の発展にともない,これらの機能が変化する可能性がある.

概念を記述する。それはちょうどテンプレートパラメータリストを持っていなければならない。この名前は、ネストされた名前であってもよい。例::

.. cpp:concept:: template<typename It> std::Iterator

   Proxy to an element of a notional sequence that can be compared,
   indirected, or incremented.

   **Notation**

   .. cpp:var:: It r

      An lvalue.

   **Valid Expressions**

   - :cpp:expr:`*r`, when :cpp:expr:`r` is dereferenceable.
   - :cpp:expr:`++r`, with return type :cpp:expr:`It&`, when
     :cpp:expr:`r` is incrementable.

これは以下のようになる.

template<typename It>
concept std::Iterator

概念系列中の要素を比較、間接的、または増加させることができるエージェント。

Notation

It r

左の値です。

有効表現.

  • *r 当たる r 引用を解除することができる。

  • ++r 戻るタイプがあります It& 当たる r 増加させることができます

バージョン 1.5 で追加.

オプション

いくつかの指示サポートオプション:

  • :noindexentry: 会いましょう 基本割増価格 それがそうです。

  • :tparam-line-spec: テンプレート化宣言に用いられる.指定された場合、各テンプレートパラメータは別個の行に提示される。

    バージョン 1.6 で追加.

匿名実体.

C++は、匿名名前空間、クラス、列挙、および連携をサポートします。記録のために、それらのために最初の名前を指定しなければなりません。 @, e.g., @42 or @data. These names can also be used in cross-references and (type) expressions, though nested symbols will be found even when omitted. The @... 名前は常に [[anonymous]] (リンクとしてかもしれない).

例::

.. cpp:class:: Data

   .. cpp:union:: @data

      .. cpp:var:: int a

      .. cpp:var:: double b

Explicit ref: :cpp:var:`Data::@data::a`. Short-hand ref: :cpp:var:`Data::a`.

これは次のようになります

class Data
union [anonymous]
int a
double b

明示的な引用: Data::[anonymous]::a それがそうです。速記参考: Data::a それがそうです。

バージョン 1.8 で追加.

別名声明.

場合によっては、例えば、クラス·インターフェースの概要を作成する際に、マスタ文書以外の他の場所に宣言を列挙することが有用である可能性がある。以下の指示は、この目的に使用することができる。

.. cpp:alias:: name or function signature

1つ以上の別名宣言を挿入する。全ての実体は cpp:any 役。関数の名前(完全署名とは逆)が与えられた場合、関数のすべての再ロードがリストされる。

例えば:

.. cpp:alias:: Data::a
               overload_example::C::f

Vbl.成る

int a
void f(double d) const
void f(double d)
void f(int i)
void f()

考えてみてください

.. cpp:alias:: void overload_example::C::f(double d) const
               void overload_example::C::f(double d)

Vbl.成る

void f(double d) const
void f(double d)

バージョン 2.0 で追加.

制約されたテンプレート

警告

概念の支援は実験的である.それは現在の標準草案と概念技術規範に基づいている。機能の発展にともない,これらの機能が変化する可能性がある.

注釈

Sphinxは現在サポートしていません requires 条文。

占位符

宣言は、制約されたテンプレートパラメータまたはキーワードを導入するために、概念の名前を使用することができる auto 制約されていないテンプレートパラメータを導入するには、以下の操作を実行してください。

.. cpp:function:: void f(auto &&arg)

   A function template with a single unconstrained template parameter.

.. cpp:function:: void f(std::Iterator it)

   A function template with a single template parameter, constrained by the
   Iterator concept.

テンプレート紹介

簡単な制約関数やクラステンプレートを使用することができる template introduction 代替テンプレートパラメータリスト::

.. cpp:function:: std::Iterator{It} void advance(It &it)

    A function template with a template parameter constrained to be an
    Iterator.

.. cpp:class:: std::LessThanComparable{T} MySortedContainer

    A class template with a template parameter constrained to be
    LessThanComparable.

これらの呈示方式を以下に示す.

std::Iterator{It}
void advance(It &it)

テンプレートパラメータは反復器の関数テンプレートに制約される.

std::LessThanComparable{T}
class MySortedContainer

テンプレートパラメータはLessThanCompatiableなクラステンプレートに制約される.

しかし,パラメータ互換性に関する検査は実行されないことに注意されたい.例えば Iterator{{A, B, C}} それが有効なC++でなくても紹介として受け入れられる.

内接式とタイプ

:cpp:expr:
:cpp:texpr:

内部接続コードとしてC++式またはキー入力を挿入する (cpp:expr )またはイントラネットテキスト (cpp:texpr )。例えば:

.. cpp:var:: int a = 42

.. cpp:function:: int f(int i)

An expression: :cpp:expr:`a * f(a)` (or as text: :cpp:texpr:`a * f(a)`).

A type: :cpp:expr:`const MySortedContainer<int>&`
(or as text :cpp:texpr:`const MySortedContainer<int>&`).

以下のようになる。

int a = 42
int f(int i)

1つの式: a * f(a) (またはテキストとして: a * f(a) )。

Aタイプ: const MySortedContainer<int>& (またはテキスト形式 const MySortedContainer<int>& )。

バージョン 1.7 で追加: ♪the cpp:expr 役。

バージョン 1.8 で追加: ♪the cpp:texpr 役。

命名空間.

デフォルトの場合,C++ドメイン中の宣言は大域スコープに置かれる.3つの名前空間命令を使用して現在のスコープを変更することができる.スタック宣言を管理しています cpp:namespace スタックをリセットし,与えられたスコープを変更する.

♪the cpp:namespace-push 命令は,スコープを現在のスコープの所与の内部スコープに変更する.

♪the cpp:namespace-pop 指令は最も近いものを破棄した. cpp:namespace-push 指令する。

.. cpp:namespace:: scope specification

後続オブジェクトの現在のスコープを与えられたスコープに変更し,名前空間命令スタックをリセットする.命名空間は、C++命名空間に対応する必要はないが、例えば、クラスの名前で終わることができることに留意されたい。

.. cpp:namespace:: Namespace1::Namespace2::SomeClass::AnInnerClass

すべての後続オブジェクトは,その名前宣言時に接頭辞を持つスコープとして定義される.現在の範囲から後続の交差参照を探索する.

Using NULL, 0, or nullptr as the scope will change to global scope.

名前空間宣言は、例えば、以下のようにテンプレート化することもできる。

.. cpp:class:: template<typename T> \
               std::vector

.. cpp:namespace:: template<typename T> std::vector

.. cpp:function:: std::size_t size() const

声明 size クラステンプレートとしてのメンバ関数 std::vector それがそうです。同様に、これは、以下のコマンド宣言を使用することができる。

.. cpp:class:: template<typename T> \
               std::vector

   .. cpp:function:: std::size_t size() const

あるいは:

.. cpp:class:: template<typename T> \
               std::vector
.. cpp:namespace-push:: scope specification

現在の範囲に対して範囲を変更します。例えば、::の後

.. cpp:namespace:: A::B

.. cpp:namespace-push:: C::D

現在の範囲は A::B::C::D それがそうです。

バージョン 1.4 で追加.

.. cpp:namespace-pop::

前の1つを破棄する. cpp:namespace-push 指令(命令) not オシロスコープを一つポップアップすればいい)。例えば、::の後

.. cpp:namespace:: A::B

.. cpp:namespace-push:: C::D

.. cpp:namespace-pop::

現在の範囲は A::B () not A::B::C )。

もし前になかったら cpp:namespace-push 指示は使用されたが、一つしかなかった。 cpp:namespace 命令は,現在のスコープを大域スコープとしてリセットする.つまり、 .. cpp:namespace:: A::B これは以下のようなものです

.. cpp:namespace:: nullptr

.. cpp:namespace-push:: A::B

バージョン 1.4 で追加.

情報フィールドリスト

C++命令は、以下の情報フィールドをサポートします(なお参照 情報フィールドリスト ):

  • param, parameter, arg, argument: Description of a parameter.

  • tparam :テンプレートパラメータ説明。

  • returns, return: Description of a return value.

  • throws, throw, exception: Description of a possibly thrown exception.

交差引用.

これらの役割は与えられた宣言タイプにリンクされている:

:cpp:any:
:cpp:class:
:cpp:struct:
:cpp:func:
:cpp:member:
:cpp:var:
:cpp:type:
:cpp:concept:
:cpp:enum:
:cpp:enumerator:

名称別にC++宣言を参照(詳細については、以下を参照)。名前はリンクの位置に対して適切に限定しなければならない.

バージョン 2.0 で追加: ♪the cpp:struct 役として cpp:class 役。

テンプレートパラメータ/パラメータ付き参照に関する説明

これらのキャラクターはライオンのイメージに従っています 交差引用文法 規則。これは,引用(部分)テンプレートに特化する際に気をつけなければならないことを意味し,たとえばリンクが以下のようになると :cpp:class:`MyClass<int> .これは指向と解釈されています ``int` タイトルは MyClass それがそうです。この場合、逆スラッシュを用いて左尖括弧を回転させると、以下のようになる。 :cpp:class:`MyClass\<int> `.

タイトルをカスタマイズする必要がない場合には、内部連結式にロールを用いることが有用である可能性がある。 cpp:expr そして cpp:texpr このうち,尖括弧は転義を必要としない.

テンプレートパラメータおよびテンプレートパラメータを持たない宣言

非テンプレート化宣言にリンクするためには、名前は入れ子名でなければならない。 f あるいは…。 MyClass::f それがそうです。

再負荷関数

その名前参照(メンバ)関数のみが使用される場合、参照は、任意のマッチング再ロードを指す。♪the cpp:any そして cpp:func ロールは、完全な関数宣言に過ぎない別のフォーマットを使用する。これは完全にマッチする過負荷と解析される.例えば、以下のクラス宣言を考える。

class C
void f(double d) const
void f(double d)
void f(int i)
void f()

引用使用 cpp:func キャラクター:

注意してください。 add_function_parentheses 構成変数は特定の再ロード参照に影響を与えない.

テンプレート化声明

以下の宣言があると仮定する.

class Wrapper
template<typename TOuter>
class Outer
template<typename TInner>
class Inner

一般に、参照は、テンプレートパラメータ宣言と名プレフィックスを限定するテンプレート実パラメータを含まなければならない。例:

  • template\<typename TOuter> Wrapper::Outer (template<typename TOuter> Wrapper::Outer)

  • template\<typename TOuter> template\<typename TInner> Wrapper::Outer<TOuter>::Inner (template<typename TOuter> template<typename TInner> Wrapper::Outer<TOuter>::Inner)

現在,テンプレートパラメータ識別子が等しい文字列である場合にのみ,探索が成功している.つまり、 template\<typename UOuter> Wrapper::Outer 効きませんよ。

略字表示法として,テンプレートパラメータリストを省略すると,発見は主テンプレートや非テンプレートを用いるが,部分テンプレートに特化するわけではない.これは、以下の参照も適用されることを意味する。

(完全)テンプレート特化認証

以下の宣言があると仮定する.

template<typename TOuter>
class Outer
template<typename TInner>
class Inner
template<>
class Outer<int>
template<typename TInner>
class Inner
template<>
class Inner<bool>

In general the reference must include a template parameter list for each template argument list. The full specialisation above can therefore be referenced with template\<> Outer\<int> (template<> Outer<int>) and template\<> template\<> Outer\<int>::Inner\<bool> (template<> template<> Outer<int>::Inner<bool>). As a shorthand the empty template parameter list can be omitted, e.g., Outer\<int> (Outer<int>) and Outer\<int>::Inner\<bool> (Outer<int>::Inner<bool>).

部分テンプレート専門化

次の宣言を仮定する.

template<typename T>
class Outer<T*>

References to partial specialisations must always include the template parameter lists, e.g., template\<typename T> Outer\<T*> (template<typename T> Outer<T*>). Currently the lookup only succeed if the template parameter identifiers are equal strings.

構成変数

C++ドメインのオプション それがそうです。

標準域.

いわゆる“標準”ドメインは,自分のドメインを必要としないすべてのタグを収集する.その指示と役割はドメイン名接頭辞を持っていない。

標準ドメインもカスタムオブジェクト記述の位置であり,使用する. add_object_type() APIは、置かれている。

コマンドラインプログラムを記録することを可能にする命令のセットがある:

.. option:: name args, name args, ...

コマンドラインパラメータまたはスイッチを記述します。オプションパラメータ名は括弧で囲まれている.例:

.. option:: dest_dir

   Destination directory.

.. option:: -m <module>, --module <module>

   Run a module as a script.

この命令は、所与のオプションのための交差参照先を作成し、通過することができます。 option (本例では、次のようなものを使用します :option:`dest_dir ああ, `-m` ,または `--module` `)

cmdoption コマンドは使用を推奨しない別名です option 指令する。

.. envvar:: name

文書コードやプログラムが使用または定義されている環境変数を記述する.以下の者が引用することができる envvar それがそうです。

.. program:: name

py:currentmodule したがって,この命令は何の出力も生成しない.逆に、Sphinxに以下のすべての内容を通知するために使用されます。 option コマンドレコード名のプログラムのオプション name それがそうです。

もしあなたが使うなら program あなたはあなたのを限定しなければなりません option 役割ですので、以下のような場合があります。

.. program:: rm

.. option:: -r

   Work recursively.

.. program:: svn

.. option:: -r revision

   Specify the revision to work upon.

それで? :option:`rm -r 最初の選択肢のことだ. `svn -r` “二番目のことです”

プログラム名にはスペースを含めることができる(文書サブコマンドが必要であれば、 svn add そして svn commit また)。

バージョン 0.5 で追加.

ドメインにバインドされていない非常に汎用的なオブジェクト記述命令もあります

.. describe:: text
.. object:: text

この命令は、ドメインによって提供される特定のフォーマットと同じフォーマットを生成するが、インデックス項目または交差参照オブジェクトは作成されない。例::

.. describe:: PAPER

   You can set this variable to select a paper size.

JavaScriptドメイン

JavaScriptドメイン(名前) js )は、以下の指示を提供します。

.. js:module:: name

このコマンドは,後のオブジェクト宣言にモジュール名を設定する.モジュール名は、グローバルモジュールインデックスおよび交差参照に使用される。この指示はこのようなオブジェクトタイトルを作成しません py:class 例を挙げましょう

デフォルトの場合、この命令は、リンク可能エンティティを作成し、グローバルモジュールインデックスにエントリを作成しない限り、エントリを作成する。 noindex オプションが指定されました。このオプションが指定された場合、命令は、現在のモジュール名のみを更新します。

バージョン 1.6 で追加.

.. js:function:: name(signature)

JavaScript関数やメソッドを記述する.パラメータをオプションパラメータとして記述する場合は、四角括弧を使用してください documented Python署名に使います。

フィールドを使用して、パラメータおよびその予期されるタイプ、関数によって引き起こされる可能性のあるエラー、および返された値に関するより多くの詳細な情報を提供することができます:

.. js:function:: $.getJSON(href, callback[, errback])

   :param string href: An URI to the location of the resource.
   :param callback: Gets called with the object.
   :param errback:
       Gets called in case the request fails. And a lot of other
       text so we need multiple lines.
   :throws SomeError: For whatever reason in that case.
   :returns: Something.

これは次のようになります

$.getJSON(href, callback[, errback])
引数
  • href (string) -- リソース位置を指すURI.

  • callback -- オブジェクトコールを使用します。

  • errback -- 要求が失敗した場合に呼び出します。他にも多くのテキストがあるので、私たちは多くの行が必要だ。

例外

SomeError -- どんな理由でも、この場合。

戻り値

何かがあります。

.. js:method:: name(signature)

この指令は別名である js:function しかし,クラスオブジェクト上のメソッドとして実現される関数を記述している.

バージョン 1.6 で追加.

.. js:class:: name

作成対象の構造関数を記述する.これは基本的に関数に似ていますが class 接頭辞::

.. js:class:: MyAnimal(name[, age])

   :param string name: The name of the animal
   :param number age: an optional age for the animal

これは次のようになります

class MyAnimal(name[, age])
引数
  • name (string) -- 動物の名前

  • age (number) -- 動物のオプション年齢

.. js:data:: name

グローバル変数または定数を記述する.

.. js:attribute:: object.name

この属性を記述する name客体. それがそうです。

これらの役割を提供することは、説明されたオブジェクトを参照するためである。

:js:mod:
:js:func:
:js:meth:
:js:class:
:js:data:
:js:attr:

ReStrucureTextドメイン

ReStrucredTextドメイン(名前 rst )は、以下の指示を提供します。

.. rst:directive:: name

REST命令を記述します。♪the name 単一の命令名または実際の命令文法であってもよい (.. 接頭辞と :: 接尾辞)は、異なる方法で提示されるパラメータを含む。例えば:

.. rst:directive:: foo

   Foo description.

.. rst:directive:: .. bar:: baz

   Bar description.

次のようになります

.. foo::

FOO記述。

.. bar:: baz

棒グラフで記述する。

.. rst:directive:option:: name

REST命令のオプションを説明します。♪the name 単一のオプション名であってもよいし、コロンで区切られたパラメータを有するオプション名であってもよい。 (: )。例えば:

.. rst:directive:: toctree

   .. rst:directive:option:: caption: caption of ToC

   .. rst:directive:option:: glob

次のようになります

.. toctree::
:caption: caption of ToC
:glob:

オプション

:type: description of argument (text)

オプション値のタイプを記述する.

例えば:

.. rst:directive:: toctree

   .. rst:directive:option:: maxdepth
      :type: integer or no value

バージョン 2.1 で追加.

.. rst:role:: name

RESTの役割を説明する。例えば:

.. rst:role:: foo

   Foo description.

次のようになります

:foo:

FOO記述。

これらの役割を提供することは、説明されたオブジェクトを参照するためである。

:rst:dir:
:rst:role:

数学の分野

数学域(名称 math )は、以下の役割を提供します。

:math:numref:

クロス引用式の役割は,定義によって定義される math 指示は彼らのラベルを通過する。例::

.. math:: e^{i\pi} + 1 = 0
   :label: euler

Euler's identity, equation :math:numref:`euler`, was elected one of the
most beautiful mathematical formulas.

バージョン 1.8 で追加.

より多くのドメイン名

The sphinx-contrib repository contains more domains available as extensions; currently Ada, CoffeeScript, Erlang, HTTP, Lasso, MATLAB, PHP, and Ruby domains. Also available are domains for Chapel, Common Lisp, dqn, Go, Jinja, Operation, and Scala.