Commit 12efee7b authored by Martin Panter's avatar Martin Panter

Issue #24808: Update the documentation of some PyTypeObject fields

Patch by Joseph Weston.
parent f649e9c4
...@@ -94,7 +94,7 @@ type objects) *must* have the :attr:`ob_size` field. ...@@ -94,7 +94,7 @@ type objects) *must* have the :attr:`ob_size` field.
This field is not inherited by subtypes. This field is not inherited by subtypes.
.. c:member:: char* PyTypeObject.tp_name .. c:member:: const char* PyTypeObject.tp_name
Pointer to a NUL-terminated string containing the name of the type. For types Pointer to a NUL-terminated string containing the name of the type. For types
that are accessible as module globals, the string should be the full module that are accessible as module globals, the string should be the full module
...@@ -367,7 +367,7 @@ type objects) *must* have the :attr:`ob_size` field. ...@@ -367,7 +367,7 @@ type objects) *must* have the :attr:`ob_size` field.
inherited individually. inherited individually.
.. c:member:: long PyTypeObject.tp_flags .. c:member:: unsigned long PyTypeObject.tp_flags
This field is a bit mask of various flags. Some flags indicate variant This field is a bit mask of various flags. Some flags indicate variant
semantics for certain situations; others are used to indicate that certain semantics for certain situations; others are used to indicate that certain
...@@ -467,7 +467,7 @@ type objects) *must* have the :attr:`ob_size` field. ...@@ -467,7 +467,7 @@ type objects) *must* have the :attr:`ob_size` field.
.. versionadded:: 3.4 .. versionadded:: 3.4
.. c:member:: char* PyTypeObject.tp_doc .. c:member:: const char* PyTypeObject.tp_doc
An optional pointer to a NUL-terminated C string giving the docstring for this An optional pointer to a NUL-terminated C string giving the docstring for this
type object. This is exposed as the :attr:`__doc__` attribute on the type and type object. This is exposed as the :attr:`__doc__` attribute on the type and
...@@ -614,7 +614,7 @@ type objects) *must* have the :attr:`ob_size` field. ...@@ -614,7 +614,7 @@ type objects) *must* have the :attr:`ob_size` field.
+----------------+------------+ +----------------+------------+
.. c:member:: long PyTypeObject.tp_weaklistoffset .. c:member:: Py_ssize_t PyTypeObject.tp_weaklistoffset
If the instances of this type are weakly referenceable, this field is greater If the instances of this type are weakly referenceable, this field is greater
than zero and contains the offset in the instance structure of the weak than zero and contains the offset in the instance structure of the weak
...@@ -781,7 +781,7 @@ type objects) *must* have the :attr:`ob_size` field. ...@@ -781,7 +781,7 @@ type objects) *must* have the :attr:`ob_size` field.
.. XXX explain. .. XXX explain.
.. c:member:: long PyTypeObject.tp_dictoffset .. c:member:: Py_ssize_t PyTypeObject.tp_dictoffset
If the instances of this type have a dictionary containing instance variables, If the instances of this type have a dictionary containing instance variables,
this field is non-zero and contains the offset in the instances of the type of this field is non-zero and contains the offset in the instances of the type of
......
...@@ -893,20 +893,20 @@ fields in the right order! It's often easiest to find an example that includes ...@@ -893,20 +893,20 @@ fields in the right order! It's often easiest to find an example that includes
all the fields you need (even if they're initialized to ``0``) and then change all the fields you need (even if they're initialized to ``0``) and then change
the values to suit your new type. :: the values to suit your new type. ::
char *tp_name; /* For printing */ const char *tp_name; /* For printing */
The name of the type - as mentioned in the last section, this will appear in The name of the type - as mentioned in the last section, this will appear in
various places, almost entirely for diagnostic purposes. Try to choose something various places, almost entirely for diagnostic purposes. Try to choose something
that will be helpful in such a situation! :: that will be helpful in such a situation! ::
int tp_basicsize, tp_itemsize; /* For allocation */ Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */
These fields tell the runtime how much memory to allocate when new objects of These fields tell the runtime how much memory to allocate when new objects of
this type are created. Python has some built-in support for variable length this type are created. Python has some built-in support for variable length
structures (think: strings, lists) which is where the :c:member:`~PyTypeObject.tp_itemsize` field structures (think: strings, lists) which is where the :c:member:`~PyTypeObject.tp_itemsize` field
comes in. This will be dealt with later. :: comes in. This will be dealt with later. ::
char *tp_doc; const char *tp_doc;
Here you can put a string (or its address) that you want returned when the Here you can put a string (or its address) that you want returned when the
Python script references ``obj.__doc__`` to retrieve the doc string. Python script references ``obj.__doc__`` to retrieve the doc string.
......
typedef struct _typeobject { typedef struct _typeobject {
PyObject_VAR_HEAD PyObject_VAR_HEAD
char *tp_name; /* For printing, in format "<module>.<name>" */ const char *tp_name; /* For printing, in format "<module>.<name>" */
int tp_basicsize, tp_itemsize; /* For allocation */ Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */
/* Methods to implement standard operations */ /* Methods to implement standard operations */
...@@ -9,7 +9,7 @@ typedef struct _typeobject { ...@@ -9,7 +9,7 @@ typedef struct _typeobject {
printfunc tp_print; printfunc tp_print;
getattrfunc tp_getattr; getattrfunc tp_getattr;
setattrfunc tp_setattr; setattrfunc tp_setattr;
void *tp_reserved; void *tp_reserved; /* formerly known as tp_compare */
reprfunc tp_repr; reprfunc tp_repr;
/* Method suites for standard classes */ /* Method suites for standard classes */
...@@ -30,9 +30,9 @@ typedef struct _typeobject { ...@@ -30,9 +30,9 @@ typedef struct _typeobject {
PyBufferProcs *tp_as_buffer; PyBufferProcs *tp_as_buffer;
/* Flags to define presence of optional/expanded features */ /* Flags to define presence of optional/expanded features */
long tp_flags; unsigned long tp_flags;
char *tp_doc; /* Documentation string */ const char *tp_doc; /* Documentation string */
/* call function for all accessible objects */ /* call function for all accessible objects */
traverseproc tp_traverse; traverseproc tp_traverse;
...@@ -44,7 +44,7 @@ typedef struct _typeobject { ...@@ -44,7 +44,7 @@ typedef struct _typeobject {
richcmpfunc tp_richcompare; richcmpfunc tp_richcompare;
/* weak reference enabler */ /* weak reference enabler */
long tp_weaklistoffset; Py_ssize_t tp_weaklistoffset;
/* Iterators */ /* Iterators */
getiterfunc tp_iter; getiterfunc tp_iter;
...@@ -58,7 +58,7 @@ typedef struct _typeobject { ...@@ -58,7 +58,7 @@ typedef struct _typeobject {
PyObject *tp_dict; PyObject *tp_dict;
descrgetfunc tp_descr_get; descrgetfunc tp_descr_get;
descrsetfunc tp_descr_set; descrsetfunc tp_descr_set;
long tp_dictoffset; Py_ssize_t tp_dictoffset;
initproc tp_init; initproc tp_init;
allocfunc tp_alloc; allocfunc tp_alloc;
newfunc tp_new; newfunc tp_new;
...@@ -69,7 +69,6 @@ typedef struct _typeobject { ...@@ -69,7 +69,6 @@ typedef struct _typeobject {
PyObject *tp_cache; PyObject *tp_cache;
PyObject *tp_subclasses; PyObject *tp_subclasses;
PyObject *tp_weaklist; PyObject *tp_weaklist;
destructor tp_del; destructor tp_del;
/* Type attribute cache version tag. Added in version 2.6 */ /* Type attribute cache version tag. Added in version 2.6 */
......
...@@ -1473,6 +1473,7 @@ Bob Weiner ...@@ -1473,6 +1473,7 @@ Bob Weiner
Edward Welbourne Edward Welbourne
Cliff Wells Cliff Wells
Rickard Westman Rickard Westman
Joseph Weston
Jeff Wheeler Jeff Wheeler
Christopher White Christopher White
David White David White
......
...@@ -449,6 +449,9 @@ C API ...@@ -449,6 +449,9 @@ C API
Documentation Documentation
------------- -------------
- Issue #24808: Update the types of some PyTypeObject fields. Patch by
Joseph Weston.
- Issue #22812: Fix unittest discovery examples. - Issue #22812: Fix unittest discovery examples.
Patch from Pam McA'Nulty. Patch from Pam McA'Nulty.
......
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