[Python-checkins] bpo-38140: Document offsets in PyMemberDef (GH-16354)
Petr Viktorin
webhook-mailer at python.org
Wed Sep 25 07:06:22 EDT 2019
https://github.com/python/cpython/commit/468f8a6ee0d83e36795bbab6f20037b0e380f493
commit: 468f8a6ee0d83e36795bbab6f20037b0e380f493
branch: master
author: Petr Viktorin <encukou at gmail.com>
committer: GitHub <noreply at github.com>
date: 2019年09月25日T13:06:16+02:00
summary:
bpo-38140: Document offsets in PyMemberDef (GH-16354)
bpo-38140: Document offsets in PyMemberDef
Co-Authored-By: Ammar Askar <ammar_askar at hotmail.com>
files:
M Doc/c-api/structures.rst
M Doc/c-api/type.rst
diff --git a/Doc/c-api/structures.rst b/Doc/c-api/structures.rst
index af797778ce63..b0a193876c53 100644
--- a/Doc/c-api/structures.rst
+++ b/Doc/c-api/structures.rst
@@ -346,6 +346,19 @@ Accessing attributes of extension types
Only :c:macro:`T_OBJECT` and :c:macro:`T_OBJECT_EX`
members can be deleted. (They are set to *NULL*).
+ .. _pymemberdef-offsets:
+
+ Heap allocated types (created using :c:func:`PyType_FromSpec` or similar),
+ ``PyMemberDef`` may contain defintitions for the special members
+ ``__dictoffset__`` and ``__weaklistoffset__``, corresponding to
+ :c:member:`~PyTypeObject.tp_dictoffset` and
+ :c:member:`~PyTypeObject.tp_weaklistoffset` in type objects.
+ These must be defined with ``T_PYSSIZET`` and ``READONLY``, for example::
+
+ static PyMemberDef spam_type_members[] = {
+ {"__dictoffset__", T_PYSSIZET, offsetof(Spam_object, dict), READONLY},
+ {NULL} /* Sentinel */
+ };
.. c:type:: PyGetSetDef
diff --git a/Doc/c-api/type.rst b/Doc/c-api/type.rst
index ad3e022d42ca..36309dd5254a 100644
--- a/Doc/c-api/type.rst
+++ b/Doc/c-api/type.rst
@@ -188,7 +188,10 @@ The following functions and structs are used to create
* :c:member:`~PyTypeObject.tp_subclasses`
* :c:member:`~PyTypeObject.tp_weaklist`
* :c:member:`~PyTypeObject.tp_vectorcall`
- * :c:member:`~PyTypeObject.tp_print`
+ * :c:member:`~PyTypeObject.tp_weaklistoffset`
+ (see :ref:`PyMemberDef <pymemberdef-offsets>`)
+ * :c:member:`~PyTypeObject.tp_dictoffset`
+ (see :ref:`PyMemberDef <pymemberdef-offsets>`)
* :c:member:`~PyBufferProcs.bf_getbuffer`
* :c:member:`~PyBufferProcs.bf_releasebuffer`
More information about the Python-checkins
mailing list