annotate Doc/c-api/structures.rst @ 54294:dba767bc3155 legacy-trunk

remove mention of old ctypes version
author Benjamin Peterson <benjamin@python.org>
date Sat, 23 May 2009 20:59:09 +0000
parents 9556e93f2abb
children ae19c287e9c0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
1 .. highlightlang:: c
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
2
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
3 .. _common-structs:
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
4
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
5 Common Object Structures
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
6 ========================
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
7
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
8 There are a large number of structures which are used in the definition of
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
9 object types for Python. This section describes these structures and how they
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
10 are used.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
11
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
12 All Python objects ultimately share a small number of fields at the beginning
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
13 of the object's representation in memory. These are represented by the
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
14 :ctype:`PyObject` and :ctype:`PyVarObject` types, which are defined, in turn,
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
15 by the expansions of some macros also used, whether directly or indirectly, in
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
16 the definition of all other Python objects.
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
17
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
18
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
19 .. ctype:: PyObject
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
20
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
21 All object types are extensions of this type. This is a type which
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
22 contains the information Python needs to treat a pointer to an object as an
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
23 object. In a normal "release" build, it contains only the object's
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
24 reference count and a pointer to the corresponding type object. It
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
25 corresponds to the fields defined by the expansion of the ``PyObject_HEAD``
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
26 macro.
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
27
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
28
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
29 .. ctype:: PyVarObject
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
30
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
31 This is an extension of :ctype:`PyObject` that adds the :attr:`ob_size`
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
32 field. This is only used for objects that have some notion of *length*.
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
33 This type does not often appear in the Python/C API. It corresponds to the
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
34 fields defined by the expansion of the ``PyObject_VAR_HEAD`` macro.
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
35
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
36 These macros are used in the definition of :ctype:`PyObject` and
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
37 :ctype:`PyVarObject`:
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
38
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
39
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
40 .. cmacro:: PyObject_HEAD
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
41
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
42 This is a macro which expands to the declarations of the fields of the
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
43 :ctype:`PyObject` type; it is used when declaring new types which represent
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
44 objects without a varying length. The specific fields it expands to depend
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
45 on the definition of :cmacro:`Py_TRACE_REFS`. By default, that macro is
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
46 not defined, and :cmacro:`PyObject_HEAD` expands to::
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
47
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
48 Py_ssize_t ob_refcnt;
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
49 PyTypeObject *ob_type;
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
50
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
51 When :cmacro:`Py_TRACE_REFS` is defined, it expands to::
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
52
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
53 PyObject *_ob_next, *_ob_prev;
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
54 Py_ssize_t ob_refcnt;
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
55 PyTypeObject *ob_type;
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
56
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
57
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
58 .. cmacro:: PyObject_VAR_HEAD
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
59
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
60 This is a macro which expands to the declarations of the fields of the
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
61 :ctype:`PyVarObject` type; it is used when declaring new types which
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
62 represent objects with a length that varies from instance to instance.
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
63 This macro always expands to::
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
64
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
65 PyObject_HEAD
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
66 Py_ssize_t ob_size;
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
67
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
68 Note that :cmacro:`PyObject_HEAD` is part of the expansion, and that its own
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
69 expansion varies depending on the definition of :cmacro:`Py_TRACE_REFS`.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
70
53381
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
71
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
72 .. cmacro:: PyObject_HEAD_INIT(type)
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
73
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
74 This is a macro which expands to initialization values for a new
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
75 :ctype:`PyObject` type. This macro expands to::
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
76
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
77 _PyObject_EXTRA_INIT
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
78 1, type,
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
79
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
80
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
81 .. cmacro:: PyVarObject_HEAD_INIT(type, size)
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
82
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
83 This is a macro which expands to initialization values for a new
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
84 :ctype:`PyVarObject` type, including the :attr:`ob_size` field.
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
85 This macro expands to::
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
86
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
87 _PyObject_EXTRA_INIT
9556e93f2abb First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 53380
diff changeset
88 1, type, size,
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
89
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
90
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
91 .. ctype:: PyCFunction
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
92
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
93 Type of the functions used to implement most Python callables in C.
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
94 Functions of this type take two :ctype:`PyObject\*` parameters and return
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
95 one such value. If the return value is *NULL*, an exception shall have
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
96 been set. If not *NULL*, the return value is interpreted as the return
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
97 value of the function as exposed in Python. The function must return a new
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
98 reference.
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
99
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
100
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
101 .. ctype:: PyMethodDef
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
102
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
103 Structure used to describe a method of an extension type. This structure has
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
104 four fields:
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
105
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
106 +------------------+-------------+-------------------------------+
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
107 | Field | C Type | Meaning |
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
108 +==================+=============+===============================+
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
109 | :attr:`ml_name` | char \* | name of the method |
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
110 +------------------+-------------+-------------------------------+
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
111 | :attr:`ml_meth` | PyCFunction | pointer to the C |
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
112 | | | implementation |
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
113 +------------------+-------------+-------------------------------+
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
114 | :attr:`ml_flags` | int | flag bits indicating how the |
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
115 | | | call should be constructed |
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
116 +------------------+-------------+-------------------------------+
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
117 | :attr:`ml_doc` | char \* | points to the contents of the |
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
118 | | | docstring |
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
119 +------------------+-------------+-------------------------------+
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
120
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
121 The :attr:`ml_meth` is a C function pointer. The functions may be of different
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
122 types, but they always return :ctype:`PyObject\*`. If the function is not of
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
123 the :ctype:`PyCFunction`, the compiler will require a cast in the method table.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
124 Even though :ctype:`PyCFunction` defines the first parameter as
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
125 :ctype:`PyObject\*`, it is common that the method implementation uses a the
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
126 specific C type of the *self* object.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
127
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
128 The :attr:`ml_flags` field is a bitfield which can include the following flags.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
129 The individual flags indicate either a calling convention or a binding
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
130 convention. Of the calling convention flags, only :const:`METH_VARARGS` and
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
131 :const:`METH_KEYWORDS` can be combined (but note that :const:`METH_KEYWORDS`
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
132 alone is equivalent to ``METH_VARARGS | METH_KEYWORDS``). Any of the calling
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
133 convention flags can be combined with a binding flag.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
134
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
135
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
136 .. data:: METH_VARARGS
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
137
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
138 This is the typical calling convention, where the methods have the type
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
139 :ctype:`PyCFunction`. The function expects two :ctype:`PyObject\*` values.
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
140 The first one is the *self* object for methods; for module functions, it
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
141 has the value given to :cfunc:`Py_InitModule4` (or *NULL* if
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
142 :cfunc:`Py_InitModule` was used). The second parameter (often called
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
143 *args*) is a tuple object representing all arguments. This parameter is
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
144 typically processed using :cfunc:`PyArg_ParseTuple` or
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
145 :cfunc:`PyArg_UnpackTuple`.
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
146
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
147
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
148 .. data:: METH_KEYWORDS
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
149
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
150 Methods with these flags must be of type :ctype:`PyCFunctionWithKeywords`.
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
151 The function expects three parameters: *self*, *args*, and a dictionary of
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
152 all the keyword arguments. The flag is typically combined with
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
153 :const:`METH_VARARGS`, and the parameters are typically processed using
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
154 :cfunc:`PyArg_ParseTupleAndKeywords`.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
155
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
156
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
157 .. data:: METH_NOARGS
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
158
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
159 Methods without parameters don't need to check whether arguments are given if
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
160 they are listed with the :const:`METH_NOARGS` flag. They need to be of type
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
161 :ctype:`PyCFunction`. When used with object methods, the first parameter is
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
162 typically named ``self`` and will hold a reference to the object instance.
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
163 In all cases the second parameter will be *NULL*.
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
164
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
165
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
166 .. data:: METH_O
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
167
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
168 Methods with a single object argument can be listed with the :const:`METH_O`
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
169 flag, instead of invoking :cfunc:`PyArg_ParseTuple` with a ``"O"`` argument.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
170 They have the type :ctype:`PyCFunction`, with the *self* parameter, and a
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
171 :ctype:`PyObject\*` parameter representing the single argument.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
172
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
173
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
174 .. data:: METH_OLDARGS
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
175
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
176 This calling convention is deprecated. The method must be of type
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
177 :ctype:`PyCFunction`. The second argument is *NULL* if no arguments are
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
178 given, a single object if exactly one argument is given, and a tuple of
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
179 objects if more than one argument is given. There is no way for a function
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
180 using this convention to distinguish between a call with multiple arguments
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
181 and a call with a tuple as the only argument.
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
182
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
183 These two constants are not used to indicate the calling convention but the
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
184 binding when use with methods of classes. These may not be used for functions
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
185 defined for modules. At most one of these flags may be set for any given
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
186 method.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
187
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
188
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
189 .. data:: METH_CLASS
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
190
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
191 .. index:: builtin: classmethod
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
192
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
193 The method will be passed the type object as the first parameter rather
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
194 than an instance of the type. This is used to create *class methods*,
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
195 similar to what is created when using the :func:`classmethod` built-in
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
196 function.
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
197
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
198 .. versionadded:: 2.3
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
199
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
200
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
201 .. data:: METH_STATIC
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
202
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
203 .. index:: builtin: staticmethod
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
204
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
205 The method will be passed *NULL* as the first parameter rather than an
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
206 instance of the type. This is used to create *static methods*, similar to
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
207 what is created when using the :func:`staticmethod` built-in function.
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
208
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
209 .. versionadded:: 2.3
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
210
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
211 One other constant controls whether a method is loaded in place of another
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
212 definition with the same method name.
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
213
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
214
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
215 .. data:: METH_COEXIST
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
216
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
217 The method will be loaded in place of existing definitions. Without
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
218 *METH_COEXIST*, the default is to skip repeated definitions. Since slot
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
219 wrappers are loaded before the method table, the existence of a
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
220 *sq_contains* slot, for example, would generate a wrapped method named
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
221 :meth:`__contains__` and preclude the loading of a corresponding
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
222 PyCFunction with the same name. With the flag defined, the PyCFunction
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
223 will be loaded in place of the wrapper object and will co-exist with the
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
224 slot. This is helpful because calls to PyCFunctions are optimized more
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
225 than wrapper object calls.
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
226
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
227 .. versionadded:: 2.4
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
228
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
229
50454
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
230 .. ctype:: PyMemberDef
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
231
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
232 Structure which describes an attribute of a type which corresponds to a C
50520
24a0937d7624 Grammar fix.
Georg Brandl <georg@python.org>
parents: 50508
diff changeset
233 struct member. Its fields are:
50454
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
234
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
235 +------------------+-------------+-------------------------------+
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
236 | Field | C Type | Meaning |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
237 +==================+=============+===============================+
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
238 | :attr:`name` | char \* | name of the member |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
239 +------------------+-------------+-------------------------------+
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
240 | :attr:`type` | int | the type of the member in the |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
241 | | | C struct |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
242 +------------------+-------------+-------------------------------+
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
243 | :attr:`offset` | Py_ssize_t | the offset in bytes that the |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
244 | | | member is located on the |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
245 | | | type's object struct |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
246 +------------------+-------------+-------------------------------+
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
247 | :attr:`flags` | int | flag bits indicating if the |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
248 | | | field should be read-only or |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
249 | | | writable |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
250 +------------------+-------------+-------------------------------+
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
251 | :attr:`doc` | char \* | points to the contents of the |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
252 | | | docstring |
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
253 +------------------+-------------+-------------------------------+
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
254
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
255 :attr:`type` can be one of many ``T_`` macros corresponding to various C
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
256 types. When the member is accessed in Python, it will be converted to the
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
257 equivalent Python type.
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
258
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
259 =============== ==================
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
260 Macro name C type
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
261 =============== ==================
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
262 T_SHORT short
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
263 T_INT int
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
264 T_LONG long
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
265 T_FLOAT float
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
266 T_DOUBLE double
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
267 T_STRING char \*
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
268 T_OBJECT PyObject \*
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
269 T_OBJECT_EX PyObject \*
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
270 T_CHAR char
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
271 T_BYTE char
52570
53c1b5f66965 #5618: fix typo.
Georg Brandl <georg@python.org>
parents: 50520
diff changeset
272 T_UBYTE unsigned char
50454
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
273 T_UINT unsigned int
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
274 T_USHORT unsigned short
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
275 T_ULONG unsigned long
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
276 T_BOOL char
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
277 T_LONGLONG long long
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
278 T_ULONGLONG unsigned long long
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
279 T_PYSSIZET Py_ssize_t
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
280 =============== ==================
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
281
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
282 :cmacro:`T_OBJECT` and :cmacro:`T_OBJECT_EX` differ in that
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
283 :cmacro:`T_OBJECT` returns ``None`` if the member is *NULL* and
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
284 :cmacro:`T_OBJECT_EX` raises an :exc:`AttributeError`.
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
285
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
286 :attr:`flags` can be 0 for write and read access or :cmacro:`READONLY` for
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
287 read-only access. Using :cmacro:`T_STRING` for :attr:`type` implies
50520
24a0937d7624 Grammar fix.
Georg Brandl <georg@python.org>
parents: 50508
diff changeset
288 :cmacro:`READONLY`. Only :cmacro:`T_OBJECT` and :cmacro:`T_OBJECT_EX`
24a0937d7624 Grammar fix.
Georg Brandl <georg@python.org>
parents: 50508
diff changeset
289 members can be deleted. (They are set to *NULL*).
50454
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
290
ca86abe15926 document PyMemberDef
Benjamin Peterson <benjamin@python.org>
parents: 46117
diff changeset
291
44796
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
292 .. cfunction:: PyObject* Py_FindMethod(PyMethodDef table[], PyObject *ob, char *name)
13dc65fe8599 Split the monstrous C API manual files in smaller parts.
Georg Brandl <georg@python.org>
parents:
diff changeset
293
53380
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
294 Return a bound method object for an extension type implemented in C. This
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
295 can be useful in the implementation of a :attr:`tp_getattro` or
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
296 :attr:`tp_getattr` handler that does not use the
9f9412192402 Reformat prior to expanding.
Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
parents: 52570
diff changeset
297 :cfunc:`PyObject_GenericGetAttr` function.