# Protocolo de mapeamento

Veja também `PyObject_GetItem()`, `PyObject_SetItem()` e `PyObject_DelItem()`.

int `PyMapping_Check`(PyObject *o)
  Part of the Stable ABI.

  Retorna `1` se o objeto fornece protocolo de mapeamento ou suporta fatiamento e `0` caso contrário. Note que ele retorna `1` para classes Python com um método `__getitem__()` visto que geralmente é impossível determinar a que tipo de chaves a classe tem suporte. Esta função sempre tem sucesso.

Py_ssize_t `PyMapping_Size`(PyObject *o)
Py_ssize_t `PyMapping_Length`(PyObject *o)
  Part of the Stable ABI.

  Retorna o número de chaves no objeto o em caso de sucesso e `-1` em caso de falha. Isso é equivalente à expressão Python `len(o)`.

PyObject *`PyMapping_GetItemString`(PyObject *o, const char *key)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Retorna o elemento de o correspondente à string key ou `NULL` em caso de falha. Este é o equivalente da expressão Python `o[key]`. Veja também `PyObject_GetItem()`.

int `PyMapping_SetItemString`(PyObject *o, const char *key, PyObject *v)
  Part of the Stable ABI.

  Mapeia a string key para o valor v no objeto o. Retorna `-1` em caso de falha. Este é o equivalente da instrução Python `o[key] = v`. Veja também `PyObject_SetItem()`. Esta função não rouba uma referência a v.

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

  Remove o mapeamento para o objeto key do objeto o. Retorna `-1` em caso de falha. Isso é equivalente à instrução Python `del o[key]`. Este é um alias de `PyObject_DelItem()`.

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

  Remove o mapeamento para a string key do objeto o. Retorna `-1` em caso de falha. Isso é equivalente à instrução Python `del o[key]`.

int `PyMapping_HasKey`(PyObject *o, PyObject *key)
  Part of the Stable ABI.

  Retorna `1` se o objeto de mapeamento tiver a chave key e `0` caso contrário. Isso é equivalente à expressão Python `key in o`. Esta função sempre tem sucesso.

  Observe que as exceções que ocorrem ao chamar o método `__getitem__()` serão suprimidas. Para obter relatórios de erros, use `PyObject_GetItem()`.

int `PyMapping_HasKeyString`(PyObject *o, const char *key)
  Part of the Stable ABI.

  Retorna `1` se o objeto de mapeamento tiver a chave key e `0` caso contrário. Isso é equivalente à expressão Python `key in o`. Esta função sempre tem sucesso.

  Observe que as exceções que ocorrem ao chamar o método `__getitem__()` e criar um objeto string temporário serão suprimidas. Para obter relatórios de erros, use `PyMapping_GetItemString()`.

PyObject *`PyMapping_Keys`(PyObject *o)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Em caso de sucesso, retorna uma lista das chaves no objeto o. Em caso de falha, retorna `NULL`.

  Alterado na versão 3.7: Anteriormente, a função retornava uma lista ou tupla.

PyObject *`PyMapping_Values`(PyObject *o)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Em caso de sucesso, retorna uma lista dos valores no objeto o. Em caso de falha, retorna `NULL`.

  Alterado na versão 3.7: Anteriormente, a função retornava uma lista ou tupla.

PyObject *`PyMapping_Items`(PyObject *o)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Em caso de sucesso, retorna uma lista dos itens no objeto o, onde cada item é uma tupla contendo um par de valores-chave. Em caso de falha, retorna `NULL`.

  Alterado na versão 3.7: Anteriormente, a função retornava uma lista ou tupla.