bpo-29916: Include PyGetSetDef in C API extension documentation. (#83… · python/cpython@51ea806 (original) (raw)
`@@ -294,3 +294,43 @@ definition with the same method name.
`
294
294
`` read-only access. Using :c:macro:T_STRING
for :attr:type
implies
``
295
295
`` :c:macro:READONLY
. Only :c:macro:T_OBJECT
and :c:macro:T_OBJECT_EX
``
296
296
` members can be deleted. (They are set to NULL).
`
``
297
+
``
298
+
``
299
`+
.. c:type:: PyGetSetDef
`
``
300
+
``
301
`+
Structure to define property-like access for a type. See also description of
`
``
302
`` +
the :c:member:PyTypeObject.tp_getset
slot.
``
``
303
+
``
304
`+
+-------------+------------------+-----------------------------------+
`
``
305
`+
| Field | C Type | Meaning |
`
``
306
`+
+=============+==================+===================================+
`
``
307
`+
| name | char * | attribute name |
`
``
308
`+
+-------------+------------------+-----------------------------------+
`
``
309
`+
| get | getter | C Function to get the attribute |
`
``
310
`+
+-------------+------------------+-----------------------------------+
`
``
311
`+
| set | setter | optional C function to set or |
`
``
312
`+
| | | delete the attribute, if omitted |
`
``
313
`+
| | | the attribute is readonly |
`
``
314
`+
+-------------+------------------+-----------------------------------+
`
``
315
`+
| doc | char * | optional docstring |
`
``
316
`+
+-------------+------------------+-----------------------------------+
`
``
317
`+
| closure | void * | optional function pointer, |
`
``
318
`+
| | | providing additional data for |
`
``
319
`+
| | | getter and setter |
`
``
320
`+
+-------------+------------------+-----------------------------------+
`
``
321
+
``
322
The ``get`` function takes one :c:type:`PyObject\*` parameter (the
``
323
instance) and a function pointer (the associated ``closure``)::
``
324
+
``
325
`+
typedef PyObject *(*getter)(PyObject *, void *);
`
``
326
+
``
327
`+
It should return a new reference on success or NULL with a set exception
`
``
328
`+
on failure.
`
``
329
+
``
330
``set`` functions take two :c:type:`PyObject\*` parameters (the instance and
``
331
the value to be set) and a function pointer (the associated ``closure``)::
``
332
+
``
333
`+
typedef int (*setter)(PyObject *, PyObject *, void *);
`
``
334
+
``
335
`+
In case the attribute should be deleted the second parameter is NULL.
`
``
336
Should return ``0`` on success or ``-1`` with a set exception on failure.