Kaydet (Commit) 379e9d63 authored tarafından Andrés Delfino's avatar Andrés Delfino Kaydeden (comit) Berker Peksag

bpo-4260: Document that ctypes.xFUNCTYPE are decorators (GH-7924)

üst d6345def
...@@ -1025,6 +1025,22 @@ As we can easily check, our array is sorted now:: ...@@ -1025,6 +1025,22 @@ As we can easily check, our array is sorted now::
1 5 7 33 99 1 5 7 33 99
>>> >>>
The function factories can be used as decorator factories, so we may as well
write::
>>> @CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))
... def py_cmp_func(a, b):
... print("py_cmp_func", a[0], b[0])
... return a[0] - b[0]
...
>>> qsort(ia, len(ia), sizeof(c_int), py_cmp_func)
py_cmp_func 5 1
py_cmp_func 33 99
py_cmp_func 7 33
py_cmp_func 1 7
py_cmp_func 5 7
>>>
.. note:: .. note::
Make sure you keep references to :func:`CFUNCTYPE` objects as long as they Make sure you keep references to :func:`CFUNCTYPE` objects as long as they
...@@ -1577,7 +1593,9 @@ Foreign functions can also be created by instantiating function prototypes. ...@@ -1577,7 +1593,9 @@ Foreign functions can also be created by instantiating function prototypes.
Function prototypes are similar to function prototypes in C; they describe a Function prototypes are similar to function prototypes in C; they describe a
function (return type, argument types, calling convention) without defining an function (return type, argument types, calling convention) without defining an
implementation. The factory functions must be called with the desired result implementation. The factory functions must be called with the desired result
type and the argument types of the function. type and the argument types of the function, and can be used as decorator
factories, and as such, be applied to functions through the ``@wrapper`` syntax.
See :ref:`ctypes-callback-functions` for examples.
.. function:: CFUNCTYPE(restype, *argtypes, use_errno=False, use_last_error=False) .. function:: CFUNCTYPE(restype, *argtypes, use_errno=False, use_last_error=False)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment