67 lines
1.5 KiB
C
67 lines
1.5 KiB
C
#include <Python.h>
|
|
|
|
staticforward PyTypeObject noddy_NoddyType;
|
|
|
|
typedef struct {
|
|
PyObject_HEAD
|
|
/* Type-specific fields go here. */
|
|
} noddy_NoddyObject;
|
|
|
|
static PyObject*
|
|
noddy_new_noddy(PyObject* self, PyObject* args)
|
|
{
|
|
noddy_NoddyObject* noddy;
|
|
|
|
noddy = PyObject_New(noddy_NoddyObject, &noddy_NoddyType);
|
|
|
|
/* Initialize type-specific fields here. */
|
|
|
|
return (PyObject*)noddy;
|
|
}
|
|
|
|
static void
|
|
noddy_noddy_dealloc(PyObject* self)
|
|
{
|
|
/* Free any external resources here;
|
|
* if the instance owns references to any Python
|
|
* objects, call Py_DECREF() on them here.
|
|
*/
|
|
PyObject_Del(self);
|
|
}
|
|
|
|
statichere PyTypeObject noddy_NoddyType = {
|
|
PyObject_HEAD_INIT(NULL)
|
|
0,
|
|
"Noddy",
|
|
sizeof(noddy_NoddyObject),
|
|
0,
|
|
noddy_noddy_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
0, /*tp_getattr*/
|
|
0, /*tp_setattr*/
|
|
0, /*tp_compare*/
|
|
0, /*tp_repr*/
|
|
0, /*tp_as_number*/
|
|
0, /*tp_as_sequence*/
|
|
0, /*tp_as_mapping*/
|
|
0, /*tp_hash */
|
|
};
|
|
|
|
static PyMethodDef noddy_methods[] = {
|
|
{"new_noddy", noddy_new_noddy, METH_NOARGS,
|
|
"Create a new Noddy object."},
|
|
|
|
{NULL} /* Sentinel */
|
|
};
|
|
|
|
DL_EXPORT(void)
|
|
initnoddy(void)
|
|
{
|
|
noddy_NoddyType.ob_type = &PyType_Type;
|
|
if (PyType_Ready(&noddy_NoddyType))
|
|
return;
|
|
|
|
Py_InitModule3("noddy", noddy_methods
|
|
"Example module that creates an extension type.");
|
|
}
|