1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| #include <Python.h>
|
| typedef struct {
| PyObject_HEAD
| /* Type-specific fields go here. */
| } CustomObject;
|
| static PyTypeObject CustomType = {
| PyVarObject_HEAD_INIT(NULL, 0)
| .tp_name = "custom.Custom",
| .tp_doc = "Custom objects",
| .tp_basicsize = sizeof(CustomObject),
| .tp_itemsize = 0,
| .tp_flags = Py_TPFLAGS_DEFAULT,
| .tp_new = PyType_GenericNew,
| };
|
| static PyModuleDef custommodule = {
| PyModuleDef_HEAD_INIT,
| .m_name = "custom",
| .m_doc = "Example module that creates an extension type.",
| .m_size = -1,
| };
|
| PyMODINIT_FUNC
| PyInit_custom(void)
| {
| PyObject *m;
| if (PyType_Ready(&CustomType) < 0)
| return NULL;
|
| m = PyModule_Create(&custommodule);
| if (m == NULL)
| return NULL;
|
| Py_INCREF(&CustomType);
| PyModule_AddObject(m, "Custom", (PyObject *) &CustomType);
| return m;
| }
|
|