17db96d56Sopenharmony_ci.. highlight:: c 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ci.. _mapping: 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciMapping Protocol 67db96d56Sopenharmony_ci================ 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ciSee also :c:func:`PyObject_GetItem`, :c:func:`PyObject_SetItem` and 97db96d56Sopenharmony_ci:c:func:`PyObject_DelItem`. 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci.. c:function:: int PyMapping_Check(PyObject *o) 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ci Return ``1`` if the object provides the mapping protocol or supports slicing, 157db96d56Sopenharmony_ci and ``0`` otherwise. Note that it returns ``1`` for Python classes with 167db96d56Sopenharmony_ci a :meth:`__getitem__` method, since in general it is impossible to 177db96d56Sopenharmony_ci determine what type of keys the class supports. This function always succeeds. 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci.. c:function:: Py_ssize_t PyMapping_Size(PyObject *o) 217db96d56Sopenharmony_ci Py_ssize_t PyMapping_Length(PyObject *o) 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci .. index:: pair: built-in function; len 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci Returns the number of keys in object *o* on success, and ``-1`` on failure. 267db96d56Sopenharmony_ci This is equivalent to the Python expression ``len(o)``. 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci.. c:function:: PyObject* PyMapping_GetItemString(PyObject *o, const char *key) 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci Return element of *o* corresponding to the string *key* or ``NULL`` on failure. 327db96d56Sopenharmony_ci This is the equivalent of the Python expression ``o[key]``. 337db96d56Sopenharmony_ci See also :c:func:`PyObject_GetItem`. 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci.. c:function:: int PyMapping_SetItemString(PyObject *o, const char *key, PyObject *v) 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci Map the string *key* to the value *v* in object *o*. Returns ``-1`` on 397db96d56Sopenharmony_ci failure. This is the equivalent of the Python statement ``o[key] = v``. 407db96d56Sopenharmony_ci See also :c:func:`PyObject_SetItem`. This function *does not* steal a 417db96d56Sopenharmony_ci reference to *v*. 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci.. c:function:: int PyMapping_DelItem(PyObject *o, PyObject *key) 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_ci Remove the mapping for the object *key* from the object *o*. Return ``-1`` 477db96d56Sopenharmony_ci on failure. This is equivalent to the Python statement ``del o[key]``. 487db96d56Sopenharmony_ci This is an alias of :c:func:`PyObject_DelItem`. 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci.. c:function:: int PyMapping_DelItemString(PyObject *o, const char *key) 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ci Remove the mapping for the string *key* from the object *o*. Return ``-1`` 547db96d56Sopenharmony_ci on failure. This is equivalent to the Python statement ``del o[key]``. 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci.. c:function:: int PyMapping_HasKey(PyObject *o, PyObject *key) 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci Return ``1`` if the mapping object has the key *key* and ``0`` otherwise. 607db96d56Sopenharmony_ci This is equivalent to the Python expression ``key in o``. 617db96d56Sopenharmony_ci This function always succeeds. 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ci Note that exceptions which occur while calling the :meth:`__getitem__` 647db96d56Sopenharmony_ci method will get suppressed. 657db96d56Sopenharmony_ci To get error reporting use :c:func:`PyObject_GetItem()` instead. 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci.. c:function:: int PyMapping_HasKeyString(PyObject *o, const char *key) 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_ci Return ``1`` if the mapping object has the key *key* and ``0`` otherwise. 717db96d56Sopenharmony_ci This is equivalent to the Python expression ``key in o``. 727db96d56Sopenharmony_ci This function always succeeds. 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci Note that exceptions which occur while calling the :meth:`__getitem__` 757db96d56Sopenharmony_ci method and creating a temporary string object will get suppressed. 767db96d56Sopenharmony_ci To get error reporting use :c:func:`PyMapping_GetItemString()` instead. 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_ci 797db96d56Sopenharmony_ci.. c:function:: PyObject* PyMapping_Keys(PyObject *o) 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci On success, return a list of the keys in object *o*. On failure, return 827db96d56Sopenharmony_ci ``NULL``. 837db96d56Sopenharmony_ci 847db96d56Sopenharmony_ci .. versionchanged:: 3.7 857db96d56Sopenharmony_ci Previously, the function returned a list or a tuple. 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_ci 887db96d56Sopenharmony_ci.. c:function:: PyObject* PyMapping_Values(PyObject *o) 897db96d56Sopenharmony_ci 907db96d56Sopenharmony_ci On success, return a list of the values in object *o*. On failure, return 917db96d56Sopenharmony_ci ``NULL``. 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci .. versionchanged:: 3.7 947db96d56Sopenharmony_ci Previously, the function returned a list or a tuple. 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci.. c:function:: PyObject* PyMapping_Items(PyObject *o) 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci On success, return a list of the items in object *o*, where each item is a 1007db96d56Sopenharmony_ci tuple containing a key-value pair. On failure, return ``NULL``. 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ci .. versionchanged:: 3.7 1037db96d56Sopenharmony_ci Previously, the function returned a list or a tuple. 104