Commit | Line | Data |
---|---|---|
920dae64 AT |
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 | |
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 | } |