Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions Doc/c-api/structures.rst
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,25 @@ definition with the same method name.
slot. This is helpful because calls to PyCFunctions are optimized more
than wrapper object calls.


.. c:var:: PyTypeObject PyCMethod_Type

The type object corresponding to Python C method objects. This is
available as :class:`types.BuiltinMethodType` in the Python layer.


.. c:function:: int PyCMethod_Check(PyObject *f)

Return true if *f* is an instance of the :c:type:`PyCMethod_Type` type
or a subtype of it. This function always succeeds.


.. c:function:: int PyCMethod_CheckExact(PyObject *f)

This is the same as :c:func:`PyCMethod_Check`, but does not account for
subtypes.


.. c:function:: PyObject * PyCMethod_New(PyMethodDef *ml, PyObject *self, PyObject *module, PyTypeObject *cls)

Turn *ml* into a Python :term:`callable` object.
Expand All @@ -472,6 +491,24 @@ definition with the same method name.
.. versionadded:: 3.9


.. c:var:: PyTypeObject PyCFunction_Type

The type object corresponding to Python C function objects. This is
available as :class:`types.BuiltinFunctionType` in the Python layer.


.. c:function:: int PyCFunction_Check(PyObject *f)

Return true if *f* is an instance of the :c:type:`PyCFunction_Type` type
or a subtype of it. This function always succeeds.


.. c:function:: int PyCFunction_CheckExact(PyObject *f)

This is the same as :c:func:`PyCFunction_Check`, but does not account for
subtypes.


.. c:function:: PyObject * PyCFunction_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module)

Equivalent to ``PyCMethod_New(ml, self, module, NULL)``.
Expand All @@ -482,6 +519,52 @@ definition with the same method name.
Equivalent to ``PyCMethod_New(ml, self, NULL, NULL)``.


.. c:function:: int PyCFunction_GetFlags(PyObject *func)

Get the function flags on *func* as they were passed to
:c:member:`~PyMethodDef.ml_flags`.

This function returns the function's flags on success, and ``-1`` with an
exception set on failure.


.. c:function:: int PyCFunction_GET_FLAGS(PyObject *func)

This is the same as :c:func:`PyCFunction_GetFlags`, but without error
checking.


.. c:function:: PyCFunction PyCFunction_GetFunction(PyObject *func)

Get the function pointer on *func* as it was passed to
:c:member:`~PyMethodDef.ml_meth`.

This function returns the function pointer on success, and ``NULL`` with an
exception set on failure.


.. c:function:: int PyCFunction_GET_FUNCTION(PyObject *func)

This is the same as :c:func:`PyCFunction_GetFunction`, but without error
checking.


.. c:function:: PyObject *PyCFunction_GetSelf(PyObject *func)

Get the "self" object on *func*. This is the object that would be passed
to the first argument of a :c:type:`PyCFunction`. In modules, this is the
module object.

This function returns a :term:`borrowed reference` to the "self" object
on success, and ``NULL`` with an exception set on failure.


.. c:function:: PyObject *PyCFunction_GET_SELF(PyObject *func)

This is the same as :c:func:`PyCFunction_GetSelf`, but without error
checking.


Accessing attributes of extension types
---------------------------------------

Expand Down
Loading