summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2016-08-03 09:58:49 (GMT)
committerBerker Peksag <berker.peksag@gmail.com>2016-08-03 09:58:49 (GMT)
commitbed6891c7761888a2ea7b46c7b703c942e14091b (patch)
tree862e0c7f14e5b3ecadbb473f8a61ecc1d8be8079
parent9de620e970230a7c4fc933fcdfe292260670eb25 (diff)
downloadcpython-bed6891c7761888a2ea7b46c7b703c942e14091b.zip
cpython-bed6891c7761888a2ea7b46c7b703c942e14091b.tar.gz
cpython-bed6891c7761888a2ea7b46c7b703c942e14091b.tar.bz2
Issue #23710: Update PyObject_HEAD documentation
Since PEP 3123, PyObject_HEAD only has one field named ob_base. Users now need to use the Py_TYPE macro instead of self->ob_type. Initial patch by Ammar Askar.
-rw-r--r--Doc/extending/newtypes.rst14
1 files changed, 9 insertions, 5 deletions
diff --git a/Doc/extending/newtypes.rst b/Doc/extending/newtypes.rst
index 5a207e6..a69f114 100644
--- a/Doc/extending/newtypes.rst
+++ b/Doc/extending/newtypes.rst
@@ -52,11 +52,15 @@ The first bit that will be new is::
} noddy_NoddyObject;
This is what a Noddy object will contain---in this case, nothing more than what
-every Python object contains---a refcount and a pointer to a type object.
-These are the fields the ``PyObject_HEAD`` macro brings in. The reason for the
-macro is to standardize the layout and to enable special debugging fields in
-debug builds. Note that there is no semicolon after the ``PyObject_HEAD``
-macro; one is included in the macro definition. Be wary of adding one by
+every Python object contains---a field called ``ob_base`` of type
+:c:type:`PyObject`. :c:type:`PyObject` in turn, contains an ``ob_refcnt``
+field and a pointer to a type object. These can be accessed using the macros
+:c:macro:`Py_REFCNT` and :c:macro:`Py_TYPE` respectively. These are the fields
+the :c:macro:`PyObject_HEAD` macro brings in. The reason for the macro is to
+standardize the layout and to enable special debugging fields in debug builds.
+
+Note that there is no semicolon after the :c:macro:`PyObject_HEAD` macro;
+one is included in the macro definition. Be wary of adding one by
accident; it's easy to do from habit, and your compiler might not complain,
but someone else's probably will! (On Windows, MSVC is known to call this an
error and refuse to compile the code.)