Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 468f8a6

Browse files
encukouammaraskar
andauthored
bpo-38140: Document offsets in PyMemberDef (GH-16354)
bpo-38140: Document offsets in PyMemberDef Co-Authored-By: Ammar Askar <[email protected]>
1 parent edad4d8 commit 468f8a6

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

Doc/c-api/structures.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,19 @@ Accessing attributes of extension types
346346
Only :c:macro:`T_OBJECT` and :c:macro:`T_OBJECT_EX`
347347
members can be deleted. (They are set to *NULL*).
348348

349+
.. _pymemberdef-offsets:
350+
351+
Heap allocated types (created using :c:func:`PyType_FromSpec` or similar),
352+
``PyMemberDef`` may contain defintitions for the special members
353+
``__dictoffset__`` and ``__weaklistoffset__``, corresponding to
354+
:c:member:`~PyTypeObject.tp_dictoffset` and
355+
:c:member:`~PyTypeObject.tp_weaklistoffset` in type objects.
356+
These must be defined with ``T_PYSSIZET`` and ``READONLY``, for example::
357+
358+
static PyMemberDef spam_type_members[] = {
359+
{"__dictoffset__", T_PYSSIZET, offsetof(Spam_object, dict), READONLY},
360+
{NULL} /* Sentinel */
361+
};
349362

350363
.. c:type:: PyGetSetDef
351364

Doc/c-api/type.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,10 @@ The following functions and structs are used to create
188188
* :c:member:`~PyTypeObject.tp_subclasses`
189189
* :c:member:`~PyTypeObject.tp_weaklist`
190190
* :c:member:`~PyTypeObject.tp_vectorcall`
191-
* :c:member:`~PyTypeObject.tp_print`
191+
* :c:member:`~PyTypeObject.tp_weaklistoffset`
192+
(see :ref:`PyMemberDef <pymemberdef-offsets>`)
193+
* :c:member:`~PyTypeObject.tp_dictoffset`
194+
(see :ref:`PyMemberDef <pymemberdef-offsets>`)
192195
* :c:member:`~PyBufferProcs.bf_getbuffer`
193196
* :c:member:`~PyBufferProcs.bf_releasebuffer`
194197

0 commit comments

Comments
 (0)