17db96d56Sopenharmony_ci#define PY_SSIZE_T_CLEAN 27db96d56Sopenharmony_ci#include <Python.h> 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_citypedef struct { 57db96d56Sopenharmony_ci PyObject_HEAD 67db96d56Sopenharmony_ci /* Type-specific fields go here. */ 77db96d56Sopenharmony_ci} CustomObject; 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_cistatic PyTypeObject CustomType = { 107db96d56Sopenharmony_ci PyVarObject_HEAD_INIT(NULL, 0) 117db96d56Sopenharmony_ci .tp_name = "custom.Custom", 127db96d56Sopenharmony_ci .tp_doc = PyDoc_STR("Custom objects"), 137db96d56Sopenharmony_ci .tp_basicsize = sizeof(CustomObject), 147db96d56Sopenharmony_ci .tp_itemsize = 0, 157db96d56Sopenharmony_ci .tp_flags = Py_TPFLAGS_DEFAULT, 167db96d56Sopenharmony_ci .tp_new = PyType_GenericNew, 177db96d56Sopenharmony_ci}; 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_cistatic PyModuleDef custommodule = { 207db96d56Sopenharmony_ci PyModuleDef_HEAD_INIT, 217db96d56Sopenharmony_ci .m_name = "custom", 227db96d56Sopenharmony_ci .m_doc = "Example module that creates an extension type.", 237db96d56Sopenharmony_ci .m_size = -1, 247db96d56Sopenharmony_ci}; 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ciPyMODINIT_FUNC 277db96d56Sopenharmony_ciPyInit_custom(void) 287db96d56Sopenharmony_ci{ 297db96d56Sopenharmony_ci PyObject *m; 307db96d56Sopenharmony_ci if (PyType_Ready(&CustomType) < 0) 317db96d56Sopenharmony_ci return NULL; 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_ci m = PyModule_Create(&custommodule); 347db96d56Sopenharmony_ci if (m == NULL) 357db96d56Sopenharmony_ci return NULL; 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci Py_INCREF(&CustomType); 387db96d56Sopenharmony_ci if (PyModule_AddObject(m, "Custom", (PyObject *) &CustomType) < 0) { 397db96d56Sopenharmony_ci Py_DECREF(&CustomType); 407db96d56Sopenharmony_ci Py_DECREF(m); 417db96d56Sopenharmony_ci return NULL; 427db96d56Sopenharmony_ci } 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci return m; 457db96d56Sopenharmony_ci} 46