Mercurial > cpython-lru_cache-weakref
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 |
| 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 | 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 | 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 | 288 :cmacro:`READONLY`. Only :cmacro:`T_OBJECT` and :cmacro:`T_OBJECT_EX` |
| 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. |
