# マップ型プロトコル (mapping protocol)

`PyObject_GetItem()`, `PyObject_SetItem()`, `PyObject_DelItem()` も参照してください。

int `PyMapping_Check`(PyObject *o)

  オブジェクトがマップ型プロトコルを提供しているか、スライスをサポートしている場合は `1` を、そうでない場合は `0` を返します。 `__getitem__()` メソッドを持つ Python クラスについては `1` を返すのに注意してください。そうなる理由は、一般的なケースではオブジェクトがどの種類のキーをサポートしているかを判別するのが不可能だからです。 この関数は常に成功します。

Py_ssize_t `PyMapping_Size`(PyObject *o)
Py_ssize_t `PyMapping_Length`(PyObject *o)

  成功するとオブジェクト o 中のキーの数を返し、失敗すると `-1` を返します。これは、Python の式 `len(o)` と同じになります。

PyObject* `PyMapping_GetItemString`(PyObject *o, const char *key)
  Return value: New reference.

  文字列 key に対応する o の要素を返します。失敗すると `NULL` を返します。 Python の式 `o[key]` と同じです。 `PyObject_GetItem()` も参照してください。

int `PyMapping_SetItemString`(PyObject *o, const char *key, PyObject *v)

  オブジェクト o 上で文字列 key を値 v に対応付けます。失敗すると `-1` を返します。 Python の文 `o[key] = v` と同じです。 `PyObject_SetItem()` も参照してください。 この関数は v への参照を盗み取り ません。

int `PyMapping_DelItem`(PyObject *o, PyObject *key)

  オブジェクト o から、オブジェクト key に関する対応付けを削除します。 失敗すると `-1` を返します。 Python の文 `del o[key]` と同じです。 この関数は `PyObject_DelItem()` の別名です。

int `PyMapping_DelItemString`(PyObject *o, const char *key)

  オブジェクト o から、文字列 key に関する対応付けを削除します。 失敗すると `-1` を返します。 Python の文 `del o[key]` と同じです。

int `PyMapping_HasKey`(PyObject *o, PyObject *key)

  マップ型オブジェクトがキー key を持つ場合に `1` を返し、そうでないときには `0` を返します。これは、Python の式 `key in o` と等価です。この関数呼び出しは常に成功します。

  `__getitem__()` メソッドの呼び出し中に起こる例外は抑制されることに注意してください。 エラーを報告させるには、代わりに `PyObject_GetItem()` を使ってください。

int `PyMapping_HasKeyString`(PyObject *o, const char *key)

  マップ型オブジェクトがキー key を持つ場合に `1` を返し、そうでないときには `0` を返します。これは、Python の式 `key in o` と等価です。この関数呼び出しは常に成功します。

  `__getitem__()` メソッドの呼び出し中や、一時的な文字列オブジェクトの作成中に起こる例外は抑制されることに注意してください。 エラーを報告させるには、代わりに `PyMapping_GetItemString()` を使ってください。

PyObject* `PyMapping_Keys`(PyObject *o)
  Return value: New reference.

  成功するとオブジェクト o のキーからなるリストを返します。 失敗すると `NULL` を返します。

  バージョン 3.7 で変更: 以前は、関数はリストもしくはタプルを返していました。

PyObject* `PyMapping_Values`(PyObject *o)
  Return value: New reference.

  成功するとオブジェクト o の値からなるリストを返します。 失敗すると `NULL` を返します。

  バージョン 3.7 で変更: 以前は、関数はリストもしくはタプルを返していました。

PyObject* `PyMapping_Items`(PyObject *o)
  Return value: New reference.

  成功するとオブジェクト o の要素からなるリストを返し、各要素はキーと値のペアが入ったタプルになっています。 失敗すると `NULL` を返します。

  バージョン 3.7 で変更: 以前は、関数はリストもしくはタプルを返していました。