• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <Python.h>
2 
3 typedef struct {
4     PyObject_HEAD
5     /* Type-specific fields go here. */
6 } noddy_NoddyObject;
7 
8 static PyTypeObject noddy_NoddyType = {
9     PyObject_HEAD_INIT(NULL)
10     0,                         /*ob_size*/
11     "noddy.Noddy",             /*tp_name*/
12     sizeof(noddy_NoddyObject), /*tp_basicsize*/
13     0,                         /*tp_itemsize*/
14     0,                         /*tp_dealloc*/
15     0,                         /*tp_print*/
16     0,                         /*tp_getattr*/
17     0,                         /*tp_setattr*/
18     0,                         /*tp_compare*/
19     0,                         /*tp_repr*/
20     0,                         /*tp_as_number*/
21     0,                         /*tp_as_sequence*/
22     0,                         /*tp_as_mapping*/
23     0,                         /*tp_hash */
24     0,                         /*tp_call*/
25     0,                         /*tp_str*/
26     0,                         /*tp_getattro*/
27     0,                         /*tp_setattro*/
28     0,                         /*tp_as_buffer*/
29     Py_TPFLAGS_DEFAULT,        /*tp_flags*/
30     "Noddy objects",           /* tp_doc */
31 };
32 
33 static PyMethodDef noddy_methods[] = {
34     {NULL}  /* Sentinel */
35 };
36 
37 #ifndef PyMODINIT_FUNC	/* declarations for DLL import/export */
38 #define PyMODINIT_FUNC void
39 #endif
40 PyMODINIT_FUNC
initnoddy(void)41 initnoddy(void)
42 {
43     PyObject* m;
44 
45     noddy_NoddyType.tp_new = PyType_GenericNew;
46     if (PyType_Ready(&noddy_NoddyType) < 0)
47         return;
48 
49     m = Py_InitModule3("noddy", noddy_methods,
50                        "Example module that creates an extension type.");
51 
52     Py_INCREF(&noddy_NoddyType);
53     PyModule_AddObject(m, "Noddy", (PyObject *)&noddy_NoddyType);
54 }
55