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

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

int `PyMapping_Check`(PyObject *o)

  Return `1` if the object provides the mapping protocol or supports slicing, and `0` otherwise. Note that it returns `1` for Python classes with a `__getitem__()` method, since in general it is impossible to determine what type of keys the class supports. This function always succeeds.

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 で変更: 以前は、関数はリストもしくはタプルを返していました。