Protocolo de mapeo
******************

Consulte también "PyObject_GetItem()", "PyObject_SetItem()" y
"PyObject_DelItem()".

int PyMapping_Check(PyObject *o)

   Retorna "1" si el objeto proporciona el protocolo de mapeo o admite
   rebanado (*slicing*), y "0" de lo contrario. Tenga en cuenta que
   retorna "1" para las clases de Python con un método "__getitem__()"
   ya que, en general, es imposible determinar qué tipo de claves
   admite. Esta función siempre tiene éxito.

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

   Retorna el número de claves en el objeto *o* en caso de éxito, y
   "-1" en caso de error. Esto es equivalente a la expresión de Python
   "len(o)".

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

   Retorna el elemento de *o* correspondiente a la cadena de
   caracteres *key* o "NULL" en caso de error. Este es el equivalente
   de la expresión de Python "o[key]". Ver también
   "PyObject_GetItem()".

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

   Asigna la cadena de caracteres *key* al valor *v* en el objeto *o*.
   Retorna "-1" en caso de falla. Este es el equivalente de la
   declaración de Python "o[key] = v". Ver también
   "PyObject_SetItem()". Esta función *no* roba una referencia a *v*.

int PyMapping_DelItem(PyObject *o, PyObject *key)

   Elimina la asignación para el objeto *key* del objeto *o*. Retorna
   "-1" en caso de falla. Esto es equivalente a la declaración de
   Python "del o[key]". Este es un alias de "PyObject_DelItem()".

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

   Elimina la asignación de la cadena de caracteres *key* del objeto
   *o*. Retorna "-1" en caso de falla. Esto es equivalente a la
   declaración de Python "del o[key]".

int PyMapping_HasKey(PyObject *o, PyObject *key)

   Retorna "1" si el objeto de mapeo tiene la clave *key* y "0" de lo
   contrario. Esto es equivalente a la expresión de Python "key in o".
   Esta función siempre tiene éxito.

   Tenga en cuenta que las excepciones que se producen al llamar al
   método "__getitem__()" se suprimirán. Para obtener informes de
   errores, utilice "PyObject_GetItem()" en su lugar.

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

   Retorna "1" si el objeto de mapeo tiene la clave *key* y "0" de lo
   contrario. Esto es equivalente a la expresión de Python "key in o".
   Esta función siempre tiene éxito.

   Tenga en cuenta que las excepciones que se producen al llamar al
   método "__getitem__()" y al crear un objeto de cadena de caracteres
   temporal se suprimirán. Para obtener informes de errores, utilice
   "PyMapping_GetItemString()" en su lugar.

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

   En caso de éxito, retorna una lista de las claves en el objeto *o*.
   En caso de fallo, retorna "NULL".

   Distinto en la versión 3.7: Anteriormente, la función retornaba una
   lista o una tupla.

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

   En caso de éxito, retorna una lista de los valores en el objeto
   *o*. En caso de fallo, retorna "NULL".

   Distinto en la versión 3.7: Anteriormente, la función retornaba una
   lista o una tupla.

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

   En caso de éxito, retorna una lista de los elementos en el objeto
   *o*, donde cada elemento es una tupla que contiene un par clave-
   valor (*key-value*). En caso de fallo, retorna "NULL".

   Distinto en la versión 3.7: Anteriormente, la función retornaba una
   lista o una tupla.
