| #include <Python.h> | |
| typedef struct { | |
| PyObject_HEAD | |
| /* Type-specific fields go here. */ | |
| } noddy_NoddyObject; | |
| static PyTypeObject noddy_NoddyType = { | |
| PyVarObject_HEAD_INIT(NULL, 0) | |
| "noddy.Noddy", /* tp_name */ | |
| sizeof(noddy_NoddyObject), /* tp_basicsize */ | |
| 0, /* tp_itemsize */ | |
| 0, /* 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 */ | |
| 0, /* tp_call */ | |
| 0, /* tp_str */ | |
| 0, /* tp_getattro */ | |
| 0, /* tp_setattro */ | |
| 0, /* tp_as_buffer */ | |
| Py_TPFLAGS_DEFAULT, /* tp_flags */ | |
| "Noddy objects", /* tp_doc */ | |
| }; | |
| static PyMethodDef noddy_methods[] = { | |
| {NULL} /* Sentinel */ | |
| }; | |
| #ifndef PyMODINIT_FUNC /* declarations for DLL import/export */ | |
| #define PyMODINIT_FUNC void | |
| #endif | |
| PyMODINIT_FUNC | |
| initnoddy(void) | |
| { | |
| PyObject* m; | |
| noddy_NoddyType.tp_new = PyType_GenericNew; | |
| if (PyType_Ready(&noddy_NoddyType) < 0) | |
| return; | |
| m = Py_InitModule3("noddy", noddy_methods, | |
| "Example module that creates an extension type."); | |
| Py_INCREF(&noddy_NoddyType); | |
| PyModule_AddObject(m, "Noddy", (PyObject *)&noddy_NoddyType); | |
| } |