Skip to content
Merged
Changes from 2 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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keep a consistent name for the parameter. For _Check functions, I would prefer having op everywhere.


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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"In modules, this is the module object" is unclear. I would either say "For modules"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me know what you think of the new wording.


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