annotate Modules/xxmodule.c @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents 3ff3f3ab5e5b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
2 /* Use this file as a template to start implementing a module that
14073
314ec59e4e14 Use METH_VARARGS constant in example module.
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
3 also declares object types. All occurrences of 'Xxo' should be changed
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
4 to something reasonable for your objects. After that, all other
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
5 occurrences of 'xx' should be changed to something reasonable for your
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
6 module. If your module is named foo your sourcefile should be named
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
7 foomodule.c.
23522
2aff12e2a94f Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 22910
diff changeset
8
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
9 You will probably want to delete all references to 'x_attr' and add
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
10 your own types of attributes instead. Maybe you want to name your
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
11 local variables other than 'self'. If your object type is needed in
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
12 other files, you'll have to create a file "foobarobject.h"; see
62558
ec0fd5a6bb45 Issue #9089: Remove references to intobject.c and intobject.h from comments.
Mark Dickinson <dickinsm@gmail.com>
parents: 61466
diff changeset
13 floatobject.h for an example. */
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
14
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
15 /* Xxo objects */
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
17 #include "Python.h"
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
18
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
19 static PyObject *ErrorObject;
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
20
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
21 typedef struct {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
22 PyObject_HEAD
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
23 PyObject *x_attr; /* Attributes dictionary */
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
24 } XxoObject;
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
25
24280
1598a1e473e2 staticforward bites the dust.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23522
diff changeset
26 static PyTypeObject Xxo_Type;
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
27
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
28 #define XxoObject_Check(v) (Py_TYPE(v) == &Xxo_Type)
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
29
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
30 static XxoObject *
13499
046799a08057 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
31 newXxoObject(PyObject *arg)
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
32 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
33 XxoObject *self;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
34 self = PyObject_New(XxoObject, &Xxo_Type);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
35 if (self == NULL)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
36 return NULL;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
37 self->x_attr = NULL;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
38 return self;
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
39 }
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
40
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
41 /* Xxo methods */
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
42
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
43 static void
13499
046799a08057 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
44 Xxo_dealloc(XxoObject *self)
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
45 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
46 Py_XDECREF(self->x_attr);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
47 PyObject_Del(self);
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
48 }
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
49
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
50 static PyObject *
13499
046799a08057 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
51 Xxo_demo(XxoObject *self, PyObject *args)
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
52 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
53 if (!PyArg_ParseTuple(args, ":demo"))
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
54 return NULL;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
55 Py_INCREF(Py_None);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
56 return Py_None;
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
57 }
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
58
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
59 static PyMethodDef Xxo_methods[] = {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
60 {"demo", (PyCFunction)Xxo_demo, METH_VARARGS,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
61 PyDoc_STR("demo() -> None")},
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
62 {NULL, NULL} /* sentinel */
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
63 };
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
64
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
65 static PyObject *
48418
aa1fbe321acf #3247: get rid of Py_FindMethod
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 47580
diff changeset
66 Xxo_getattro(XxoObject *self, PyObject *name)
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
67 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
68 if (self->x_attr != NULL) {
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
69 PyObject *v = PyDict_GetItem(self->x_attr, name);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
70 if (v != NULL) {
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
71 Py_INCREF(v);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
72 return v;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
73 }
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
74 }
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
75 return PyObject_GenericGetAttr((PyObject *)self, name);
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
76 }
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
77
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
78 static int
13499
046799a08057 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
79 Xxo_setattr(XxoObject *self, char *name, PyObject *v)
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
80 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
81 if (self->x_attr == NULL) {
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
82 self->x_attr = PyDict_New();
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
83 if (self->x_attr == NULL)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
84 return -1;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
85 }
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
86 if (v == NULL) {
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
87 int rv = PyDict_DelItemString(self->x_attr, name);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
88 if (rv < 0)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
89 PyErr_SetString(PyExc_AttributeError,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
90 "delete non-existing Xxo attribute");
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
91 return rv;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
92 }
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
93 else
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
94 return PyDict_SetItemString(self->x_attr, name, v);
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
95 }
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
96
24283
c0a67a1cab09 Removed more stray instances of statichere, but left _sre.c alone.
Tim Peters <tim.peters@gmail.com>
parents: 24280
diff changeset
97 static PyTypeObject Xxo_Type = {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
98 /* The ob_type field must be initialized in the module init function
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
99 * to be portable to Windows without using C++. */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
100 PyVarObject_HEAD_INIT(NULL, 0)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
101 "xxmodule.Xxo", /*tp_name*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
102 sizeof(XxoObject), /*tp_basicsize*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
103 0, /*tp_itemsize*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
104 /* methods */
81189
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
105 (destructor)Xxo_dealloc, /*tp_dealloc*/
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
106 0, /*tp_print*/
81189
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
107 (getattrfunc)0, /*tp_getattr*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
108 (setattrfunc)Xxo_setattr, /*tp_setattr*/
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
109 0, /*tp_reserved*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
110 0, /*tp_repr*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
111 0, /*tp_as_number*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
112 0, /*tp_as_sequence*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
113 0, /*tp_as_mapping*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
114 0, /*tp_hash*/
81189
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
115 0, /*tp_call*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
116 0, /*tp_str*/
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
117 (getattrofunc)Xxo_getattro, /*tp_getattro*/
81189
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
118 0, /*tp_setattro*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
119 0, /*tp_as_buffer*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
120 Py_TPFLAGS_DEFAULT, /*tp_flags*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
121 0, /*tp_doc*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
122 0, /*tp_traverse*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
123 0, /*tp_clear*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
124 0, /*tp_richcompare*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
125 0, /*tp_weaklistoffset*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
126 0, /*tp_iter*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
127 0, /*tp_iternext*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
128 Xxo_methods, /*tp_methods*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
129 0, /*tp_members*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
130 0, /*tp_getset*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
131 0, /*tp_base*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
132 0, /*tp_dict*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
133 0, /*tp_descr_get*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
134 0, /*tp_descr_set*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
135 0, /*tp_dictoffset*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
136 0, /*tp_init*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
137 0, /*tp_alloc*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
138 0, /*tp_new*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
139 0, /*tp_free*/
3ff3f3ab5e5b Make indentation consistent
Eli Bendersky <eliben@gmail.com>
parents: 62558
diff changeset
140 0, /*tp_is_gc*/
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
141 };
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1473
diff changeset
142 /* --------------------------------------------------------------------- */
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
143
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 /* Function of two integers returning integer */
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
145
24804
30cff9c1bf69 add PyDoc_STR and PyDoc_STRVAR calls as examples for module authors
Skip Montanaro <skip@pobox.com>
parents: 24471
diff changeset
146 PyDoc_STRVAR(xx_foo_doc,
30cff9c1bf69 add PyDoc_STR and PyDoc_STRVAR calls as examples for module authors
Skip Montanaro <skip@pobox.com>
parents: 24471
diff changeset
147 "foo(i,j)\n\
30cff9c1bf69 add PyDoc_STR and PyDoc_STRVAR calls as examples for module authors
Skip Montanaro <skip@pobox.com>
parents: 24471
diff changeset
148 \n\
30cff9c1bf69 add PyDoc_STR and PyDoc_STRVAR calls as examples for module authors
Skip Montanaro <skip@pobox.com>
parents: 24471
diff changeset
149 Return the sum of i and j.");
30cff9c1bf69 add PyDoc_STR and PyDoc_STRVAR calls as examples for module authors
Skip Montanaro <skip@pobox.com>
parents: 24471
diff changeset
150
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
151 static PyObject *
13499
046799a08057 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
152 xx_foo(PyObject *self, PyObject *args)
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
154 long i, j;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
155 long res;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
156 if (!PyArg_ParseTuple(args, "ll:foo", &i, &j))
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
157 return NULL;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
158 res = i+j; /* XXX Do something here */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
159 return PyLong_FromLong(res);
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 }
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
161
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
162
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
163 /* Function of no arguments returning new Xxo object */
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
164
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
165 static PyObject *
13499
046799a08057 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
166 xx_new(PyObject *self, PyObject *args)
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
168 XxoObject *rv;
23522
2aff12e2a94f Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 22910
diff changeset
169
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
170 if (!PyArg_ParseTuple(args, ":new"))
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
171 return NULL;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
172 rv = newXxoObject(args);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
173 if (rv == NULL)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
174 return NULL;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
175 return (PyObject *)rv;
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
176 }
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
177
4714
0c6c69b0d3e9 Added the example "thin ice" from the extensions manual.
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
178 /* Example with subtle bug from extensions manual ("Thin Ice"). */
0c6c69b0d3e9 Added the example "thin ice" from the extensions manual.
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
179
0c6c69b0d3e9 Added the example "thin ice" from the extensions manual.
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
180 static PyObject *
13499
046799a08057 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
181 xx_bug(PyObject *self, PyObject *args)
4714
0c6c69b0d3e9 Added the example "thin ice" from the extensions manual.
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
182 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
183 PyObject *list, *item;
23522
2aff12e2a94f Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 22910
diff changeset
184
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
185 if (!PyArg_ParseTuple(args, "O:bug", &list))
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
186 return NULL;
23522
2aff12e2a94f Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 22910
diff changeset
187
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
188 item = PyList_GetItem(list, 0);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
189 /* Py_INCREF(item); */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
190 PyList_SetItem(list, 1, PyLong_FromLong(0L));
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
191 PyObject_Print(item, stdout, 0);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
192 printf("\n");
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
193 /* Py_DECREF(item); */
23522
2aff12e2a94f Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 22910
diff changeset
194
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
195 Py_INCREF(Py_None);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
196 return Py_None;
4714
0c6c69b0d3e9 Added the example "thin ice" from the extensions manual.
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
197 }
0c6c69b0d3e9 Added the example "thin ice" from the extensions manual.
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
198
6806
ac1b261f1690 Add a test for a bad format character.
Guido van Rossum <guido@python.org>
parents: 6367
diff changeset
199 /* Test bad format character */
ac1b261f1690 Add a test for a bad format character.
Guido van Rossum <guido@python.org>
parents: 6367
diff changeset
200
ac1b261f1690 Add a test for a bad format character.
Guido van Rossum <guido@python.org>
parents: 6367
diff changeset
201 static PyObject *
13499
046799a08057 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
202 xx_roj(PyObject *self, PyObject *args)
6806
ac1b261f1690 Add a test for a bad format character.
Guido van Rossum <guido@python.org>
parents: 6367
diff changeset
203 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
204 PyObject *a;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
205 long b;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
206 if (!PyArg_ParseTuple(args, "O#:roj", &a, &b))
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
207 return NULL;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
208 Py_INCREF(Py_None);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
209 return Py_None;
6806
ac1b261f1690 Add a test for a bad format character.
Guido van Rossum <guido@python.org>
parents: 6367
diff changeset
210 }
ac1b261f1690 Add a test for a bad format character.
Guido van Rossum <guido@python.org>
parents: 6367
diff changeset
211
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
212
27823
651d1123ed6e Add Str, a subclass of str.
Guido van Rossum <guido@python.org>
parents: 26822
diff changeset
213 /* ---------- */
651d1123ed6e Add Str, a subclass of str.
Guido van Rossum <guido@python.org>
parents: 26822
diff changeset
214
651d1123ed6e Add Str, a subclass of str.
Guido van Rossum <guido@python.org>
parents: 26822
diff changeset
215 static PyTypeObject Str_Type = {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
216 /* The ob_type field must be initialized in the module init function
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
217 * to be portable to Windows without using C++. */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
218 PyVarObject_HEAD_INIT(NULL, 0)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
219 "xxmodule.Str", /*tp_name*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
220 0, /*tp_basicsize*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
221 0, /*tp_itemsize*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
222 /* methods */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
223 0, /*tp_dealloc*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
224 0, /*tp_print*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
225 0, /*tp_getattr*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
226 0, /*tp_setattr*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
227 0, /*tp_reserved*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
228 0, /*tp_repr*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
229 0, /*tp_as_number*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
230 0, /*tp_as_sequence*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
231 0, /*tp_as_mapping*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
232 0, /*tp_hash*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
233 0, /*tp_call*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
234 0, /*tp_str*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
235 0, /*tp_getattro*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
236 0, /*tp_setattro*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
237 0, /*tp_as_buffer*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
238 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
239 0, /*tp_doc*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
240 0, /*tp_traverse*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
241 0, /*tp_clear*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
242 0, /*tp_richcompare*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
243 0, /*tp_weaklistoffset*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
244 0, /*tp_iter*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
245 0, /*tp_iternext*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
246 0, /*tp_methods*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
247 0, /*tp_members*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
248 0, /*tp_getset*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
249 0, /* see PyInit_xx */ /*tp_base*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
250 0, /*tp_dict*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
251 0, /*tp_descr_get*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
252 0, /*tp_descr_set*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
253 0, /*tp_dictoffset*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
254 0, /*tp_init*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
255 0, /*tp_alloc*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
256 0, /*tp_new*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
257 0, /*tp_free*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
258 0, /*tp_is_gc*/
27823
651d1123ed6e Add Str, a subclass of str.
Guido van Rossum <guido@python.org>
parents: 26822
diff changeset
259 };
651d1123ed6e Add Str, a subclass of str.
Guido van Rossum <guido@python.org>
parents: 26822
diff changeset
260
27873
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
261 /* ---------- */
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
262
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
263 static PyObject *
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
264 null_richcompare(PyObject *self, PyObject *other, int op)
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
265 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
266 Py_INCREF(Py_NotImplemented);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
267 return Py_NotImplemented;
27873
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
268 }
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
269
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
270 static PyTypeObject Null_Type = {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
271 /* The ob_type field must be initialized in the module init function
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
272 * to be portable to Windows without using C++. */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
273 PyVarObject_HEAD_INIT(NULL, 0)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
274 "xxmodule.Null", /*tp_name*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
275 0, /*tp_basicsize*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
276 0, /*tp_itemsize*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
277 /* methods */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
278 0, /*tp_dealloc*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
279 0, /*tp_print*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
280 0, /*tp_getattr*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
281 0, /*tp_setattr*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
282 0, /*tp_reserved*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
283 0, /*tp_repr*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
284 0, /*tp_as_number*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
285 0, /*tp_as_sequence*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
286 0, /*tp_as_mapping*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
287 0, /*tp_hash*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
288 0, /*tp_call*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
289 0, /*tp_str*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
290 0, /*tp_getattro*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
291 0, /*tp_setattro*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
292 0, /*tp_as_buffer*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
293 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
294 0, /*tp_doc*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
295 0, /*tp_traverse*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
296 0, /*tp_clear*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
297 null_richcompare, /*tp_richcompare*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
298 0, /*tp_weaklistoffset*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
299 0, /*tp_iter*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
300 0, /*tp_iternext*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
301 0, /*tp_methods*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
302 0, /*tp_members*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
303 0, /*tp_getset*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
304 0, /* see PyInit_xx */ /*tp_base*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
305 0, /*tp_dict*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
306 0, /*tp_descr_get*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
307 0, /*tp_descr_set*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
308 0, /*tp_dictoffset*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
309 0, /*tp_init*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
310 0, /*tp_alloc*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
311 0, /* see PyInit_xx */ /*tp_new*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
312 0, /*tp_free*/
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
313 0, /*tp_is_gc*/
27873
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
314 };
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
315
27823
651d1123ed6e Add Str, a subclass of str.
Guido van Rossum <guido@python.org>
parents: 26822
diff changeset
316
651d1123ed6e Add Str, a subclass of str.
Guido van Rossum <guido@python.org>
parents: 26822
diff changeset
317 /* ---------- */
651d1123ed6e Add Str, a subclass of str.
Guido van Rossum <guido@python.org>
parents: 26822
diff changeset
318
651d1123ed6e Add Str, a subclass of str.
Guido van Rossum <guido@python.org>
parents: 26822
diff changeset
319
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
320 /* List of functions defined in the module */
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
321
3845
d19338fd38eb Converted to new style
Guido van Rossum <guido@python.org>
parents: 2377
diff changeset
322 static PyMethodDef xx_methods[] = {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
323 {"roj", xx_roj, METH_VARARGS,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
324 PyDoc_STR("roj(a,b) -> None")},
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
325 {"foo", xx_foo, METH_VARARGS,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
326 xx_foo_doc},
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
327 {"new", xx_new, METH_VARARGS,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
328 PyDoc_STR("new() -> new Xx object")},
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
329 {"bug", xx_bug, METH_VARARGS,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
330 PyDoc_STR("bug(o) -> None")},
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
331 {NULL, NULL} /* sentinel */
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
332 };
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
333
24804
30cff9c1bf69 add PyDoc_STR and PyDoc_STRVAR calls as examples for module authors
Skip Montanaro <skip@pobox.com>
parents: 24471
diff changeset
334 PyDoc_STRVAR(module_doc,
30cff9c1bf69 add PyDoc_STR and PyDoc_STRVAR calls as examples for module authors
Skip Montanaro <skip@pobox.com>
parents: 24471
diff changeset
335 "This is a template module just for instruction.");
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
336
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 44351
diff changeset
337 /* Initialization function for the module (*must* be called PyInit_xx) */
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 44351
diff changeset
338
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 44351
diff changeset
339
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 44351
diff changeset
340 static struct PyModuleDef xxmodule = {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
341 PyModuleDef_HEAD_INIT,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
342 "xx",
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
343 module_doc,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
344 -1,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
345 xx_methods,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
346 NULL,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
347 NULL,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
348 NULL,
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
349 NULL
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 44351
diff changeset
350 };
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
351
24471
f66b3a3509c7 Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents: 24283
diff changeset
352 PyMODINIT_FUNC
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 44351
diff changeset
353 PyInit_xx(void)
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
354 {
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
355 PyObject *m = NULL;
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
356
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
357 /* Due to cross platform compiler issues the slots must be filled
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
358 * here. It's required for portability to Windows without requiring
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
359 * C++. */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
360 Null_Type.tp_base = &PyBaseObject_Type;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
361 Null_Type.tp_new = PyType_GenericNew;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
362 Str_Type.tp_base = &PyUnicode_Type;
43898
b91fd74f32d8 I'm using the xxmodule and xxsubtype to test the msvccompiler on Windows. I'm having trouble to compile the module with VS 2008 cl.exe because "initializer is not a constant".
Christian Heimes <christian@cheimes.de>
parents: 42800
diff changeset
363
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
364 /* Finalize the type object including setting type of the new type
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
365 * object; doing it here is required for portability, too. */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
366 if (PyType_Ready(&Xxo_Type) < 0)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
367 goto fail;
10202
e1da290acc5f Use the portable form of initializing the ob_type field for new types.
Fred Drake <fdrake@acm.org>
parents: 9588
diff changeset
368
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
369 /* Create the module and add the functions */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
370 m = PyModule_Create(&xxmodule);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
371 if (m == NULL)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
372 goto fail;
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
373
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
374 /* Add some symbolic constants to the module */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
375 if (ErrorObject == NULL) {
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
376 ErrorObject = PyErr_NewException("xx.error", NULL, NULL);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
377 if (ErrorObject == NULL)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
378 goto fail;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
379 }
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
380 Py_INCREF(ErrorObject);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
381 PyModule_AddObject(m, "error", ErrorObject);
27823
651d1123ed6e Add Str, a subclass of str.
Guido van Rossum <guido@python.org>
parents: 26822
diff changeset
382
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
383 /* Add Str */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
384 if (PyType_Ready(&Str_Type) < 0)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
385 goto fail;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
386 PyModule_AddObject(m, "Str", (PyObject *)&Str_Type);
27873
88a42a7c238a Another dummy type.
Guido van Rossum <guido@python.org>
parents: 27823
diff changeset
387
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
388 /* Add Null */
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
389 if (PyType_Ready(&Null_Type) < 0)
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
390 goto fail;
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
391 PyModule_AddObject(m, "Null", (PyObject *)&Null_Type);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
392 return m;
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 44351
diff changeset
393 fail:
61466
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
394 Py_XDECREF(m);
cab14be0ada1 Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51271
diff changeset
395 return NULL;
923
72aceed365d4 * Makefile adapted to changes below.
Guido van Rossum <guido@python.org>
parents:
diff changeset
396 }