| #include <Python.h> |
| |
| typedef struct { |
| PyObject_HEAD |
| /* Type-specific fields go here. */ |
| } noddy_NoddyObject; |
| |
| static PyTypeObject noddy_NoddyType = { |
| PyObject_HEAD_INIT(NULL) |
| 0, /*ob_size*/ |
| "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); |
| } |