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