1#include <Python.h> 2 3typedef struct { 4 PyObject_HEAD 5 /* Type-specific fields go here. */ 6} noddy_NoddyObject; 7 8static PyTypeObject noddy_NoddyType = { 9 PyVarObject_HEAD_INIT(NULL, 0) 10 "noddy.Noddy", /* tp_name */ 11 sizeof(noddy_NoddyObject), /* tp_basicsize */ 12 0, /* tp_itemsize */ 13 0, /* tp_dealloc */ 14 0, /* tp_print */ 15 0, /* tp_getattr */ 16 0, /* tp_setattr */ 17 0, /* tp_reserved */ 18 0, /* tp_repr */ 19 0, /* tp_as_number */ 20 0, /* tp_as_sequence */ 21 0, /* tp_as_mapping */ 22 0, /* tp_hash */ 23 0, /* tp_call */ 24 0, /* tp_str */ 25 0, /* tp_getattro */ 26 0, /* tp_setattro */ 27 0, /* tp_as_buffer */ 28 Py_TPFLAGS_DEFAULT, /* tp_flags */ 29 "Noddy objects", /* tp_doc */ 30}; 31 32static PyModuleDef noddymodule = { 33 PyModuleDef_HEAD_INIT, 34 "noddy", 35 "Example module that creates an extension type.", 36 -1, 37 NULL, NULL, NULL, NULL, NULL 38}; 39 40PyMODINIT_FUNC 41PyInit_noddy(void) 42{ 43 PyObject* m; 44 45 noddy_NoddyType.tp_new = PyType_GenericNew; 46 if (PyType_Ready(&noddy_NoddyType) < 0) 47 return NULL; 48 49 m = PyModule_Create(&noddymodule); 50 if (m == NULL) 51 return NULL; 52 53 Py_INCREF(&noddy_NoddyType); 54 PyModule_AddObject(m, "Noddy", (PyObject *)&noddy_NoddyType); 55 return m; 56} 57