2007-08-15 11:28:22 -03:00
|
|
|
#include <Python.h>
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
PyListObject list;
|
|
|
|
int state;
|
|
|
|
} Shoddy;
|
|
|
|
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
Shoddy_increment(Shoddy *self, PyObject *unused)
|
|
|
|
{
|
|
|
|
self->state++;
|
2007-12-02 10:31:20 -04:00
|
|
|
return PyLong_FromLong(self->state);
|
2007-08-15 11:28:22 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static PyMethodDef Shoddy_methods[] = {
|
|
|
|
{"increment", (PyCFunction)Shoddy_increment, METH_NOARGS,
|
|
|
|
PyDoc_STR("increment state counter")},
|
|
|
|
{NULL, NULL},
|
|
|
|
};
|
|
|
|
|
|
|
|
static int
|
|
|
|
Shoddy_init(Shoddy *self, PyObject *args, PyObject *kwds)
|
|
|
|
{
|
|
|
|
if (PyList_Type.tp_init((PyObject *)self, args, kwds) < 0)
|
|
|
|
return -1;
|
|
|
|
self->state = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static PyTypeObject ShoddyType = {
|
|
|
|
PyObject_HEAD_INIT(NULL)
|
|
|
|
"shoddy.Shoddy", /* tp_name */
|
|
|
|
sizeof(Shoddy), /* tp_basicsize */
|
|
|
|
0, /* tp_itemsize */
|
|
|
|
0, /* tp_dealloc */
|
|
|
|
0, /* tp_print */
|
|
|
|
0, /* tp_getattr */
|
|
|
|
0, /* tp_setattr */
|
2009-02-02 17:29:40 -04:00
|
|
|
0, /* tp_reserved */
|
2007-08-15 11:28:22 -03:00
|
|
|
0, /* tp_repr */
|
|
|
|
0, /* tp_as_number */
|
|
|
|
0, /* tp_as_sequence */
|
|
|
|
0, /* tp_as_mapping */
|
|
|
|
0, /* tp_hash */
|
|
|
|
0, /* tp_call */
|
|
|
|
0, /* tp_str */
|
|
|
|
0, /* tp_getattro */
|
|
|
|
0, /* tp_setattro */
|
|
|
|
0, /* tp_as_buffer */
|
|
|
|
Py_TPFLAGS_DEFAULT |
|
2008-12-05 11:12:15 -04:00
|
|
|
Py_TPFLAGS_BASETYPE, /* tp_flags */
|
2007-08-15 11:28:22 -03:00
|
|
|
0, /* tp_doc */
|
|
|
|
0, /* tp_traverse */
|
|
|
|
0, /* tp_clear */
|
|
|
|
0, /* tp_richcompare */
|
|
|
|
0, /* tp_weaklistoffset */
|
|
|
|
0, /* tp_iter */
|
|
|
|
0, /* tp_iternext */
|
|
|
|
Shoddy_methods, /* tp_methods */
|
|
|
|
0, /* tp_members */
|
|
|
|
0, /* tp_getset */
|
|
|
|
0, /* tp_base */
|
|
|
|
0, /* tp_dict */
|
|
|
|
0, /* tp_descr_get */
|
|
|
|
0, /* tp_descr_set */
|
|
|
|
0, /* tp_dictoffset */
|
|
|
|
(initproc)Shoddy_init, /* tp_init */
|
|
|
|
0, /* tp_alloc */
|
|
|
|
0, /* tp_new */
|
|
|
|
};
|
|
|
|
|
2008-12-05 11:12:15 -04:00
|
|
|
static PyModuleDef shoddymodule = {
|
|
|
|
PyModuleDef_HEAD_INIT,
|
|
|
|
"shoddy",
|
|
|
|
"Shoddy module",
|
|
|
|
-1,
|
|
|
|
NULL, NULL, NULL, NULL, NULL
|
|
|
|
};
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
PyMODINIT_FUNC
|
2008-12-05 11:12:15 -04:00
|
|
|
PyInit_shoddy(void)
|
2007-08-15 11:28:22 -03:00
|
|
|
{
|
|
|
|
PyObject *m;
|
|
|
|
|
|
|
|
ShoddyType.tp_base = &PyList_Type;
|
|
|
|
if (PyType_Ready(&ShoddyType) < 0)
|
2008-12-05 11:12:15 -04:00
|
|
|
return NULL;
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2008-12-05 11:12:15 -04:00
|
|
|
m = PyModule_Create(&shoddymodule);
|
2007-08-15 11:28:22 -03:00
|
|
|
if (m == NULL)
|
2008-12-05 11:12:15 -04:00
|
|
|
return NULL;
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Py_INCREF(&ShoddyType);
|
|
|
|
PyModule_AddObject(m, "Shoddy", (PyObject *) &ShoddyType);
|
Merged revisions 74613,74615,74619-74620,74622 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
r74613 | georg.brandl | 2009-09-01 09:34:27 +0200 (Di, 01 Sep 2009) | 1 line
#6814: remove traces of xrange().
................
r74615 | georg.brandl | 2009-09-01 09:42:40 +0200 (Di, 01 Sep 2009) | 9 lines
Recorded merge of revisions 74614 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74614 | georg.brandl | 2009-09-01 09:40:54 +0200 (Di, 01 Sep 2009) | 1 line
#6813: better documentation for numberless string formats.
........
................
r74619 | georg.brandl | 2009-09-01 10:02:03 +0200 (Di, 01 Sep 2009) | 1 line
#6754: remove old struct member nb_inplace_divide.
................
r74620 | georg.brandl | 2009-09-01 10:03:26 +0200 (Di, 01 Sep 2009) | 1 line
#6732: fix return value of module init function in example.
................
r74622 | georg.brandl | 2009-09-01 10:11:14 +0200 (Di, 01 Sep 2009) | 73 lines
Merged revisions 74542,74544-74548,74550,74554-74555,74578,74588,74590,74603,74616-74618,74621 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74542 | georg.brandl | 2009-08-23 23:28:56 +0200 (So, 23 Aug 2009) | 1 line
Restore alphabetic order.
........
r74544 | georg.brandl | 2009-08-24 19:12:30 +0200 (Mo, 24 Aug 2009) | 1 line
#6775: fix python.org URLs in README.
........
r74545 | georg.brandl | 2009-08-24 19:14:29 +0200 (Mo, 24 Aug 2009) | 1 line
#6772: mention utf-8 as utf8 alias.
........
r74546 | georg.brandl | 2009-08-24 19:20:40 +0200 (Mo, 24 Aug 2009) | 1 line
#6725: spell "namespace" consistently.
........
r74547 | georg.brandl | 2009-08-24 19:22:05 +0200 (Mo, 24 Aug 2009) | 1 line
#6718: fix example.
........
r74548 | georg.brandl | 2009-08-24 19:24:27 +0200 (Mo, 24 Aug 2009) | 1 line
#6677: mention "deleting" as an alias for removing files.
........
r74550 | georg.brandl | 2009-08-24 19:48:40 +0200 (Mo, 24 Aug 2009) | 1 line
#6677: note that rmdir only removes empty directories.
........
r74554 | georg.brandl | 2009-08-27 20:59:02 +0200 (Do, 27 Aug 2009) | 1 line
Typo fix.
........
r74555 | georg.brandl | 2009-08-27 21:02:43 +0200 (Do, 27 Aug 2009) | 1 line
#6787: reference fix.
........
r74578 | tarek.ziade | 2009-08-29 15:33:21 +0200 (Sa, 29 Aug 2009) | 1 line
fixed #6801: symmetric_difference_update also accepts pipe
........
r74588 | georg.brandl | 2009-08-30 10:35:01 +0200 (So, 30 Aug 2009) | 1 line
#6803: fix old name.
........
r74590 | georg.brandl | 2009-08-30 13:51:53 +0200 (So, 30 Aug 2009) | 1 line
#6801: fix copy-paste oversight.
........
r74603 | georg.brandl | 2009-08-31 08:38:29 +0200 (Mo, 31 Aug 2009) | 1 line
other -> others where multiple arguments are accepted.
........
r74616 | georg.brandl | 2009-09-01 09:46:26 +0200 (Di, 01 Sep 2009) | 1 line
#6808: clarification.
........
r74617 | georg.brandl | 2009-09-01 09:53:37 +0200 (Di, 01 Sep 2009) | 1 line
#6765: hint that log(x, base) is not very sophisticated.
........
r74618 | georg.brandl | 2009-09-01 10:00:47 +0200 (Di, 01 Sep 2009) | 1 line
#6810: add a link to the section about frame objects instead of just a description where to find it.
........
r74621 | georg.brandl | 2009-09-01 10:06:03 +0200 (Di, 01 Sep 2009) | 1 line
#6638: fix wrong parameter name and markup a class.
........
................
2009-09-01 05:13:16 -03:00
|
|
|
return m;
|
2007-08-15 11:28:22 -03:00
|
|
|
}
|