#include typedef struct { PyObject_HEAD } matmulObject; static void matmulType_dealloc(PyObject *self) { Py_TYPE(self)->tp_free(self); } static PyNumberMethods matmulType_as_number; static PyTypeObject matmulType = { PyVarObject_HEAD_INIT(NULL, 0) "matmulType", sizeof(matmulObject), /* tp_basicsize */ 0, /* tp_itemsize */ matmulType_dealloc, /* destructor tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_reserved */ 0, /* tp_repr */ &matmulType_as_number, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ 0, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ PyObject_GenericSetAttr, /* tp_setattro */ 0, /* tp_as_buffer */ 0, /* tp_flags */ "C level type with matrix operations defined", 0, /* traverseproc tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, 0, 0, 0, 0, 0, 0, 0, PyType_GenericNew, /* tp_new */ PyObject_Del, /* tp_free */ }; static struct PyModuleDef _testmodule = { PyModuleDef_HEAD_INIT, "mytest", NULL, -1, NULL, NULL, NULL, NULL, NULL }; PyMODINIT_FUNC PyInit_mytest(void) { PyObject *m; m = PyModule_Create(&_testmodule); if (m == NULL) return NULL; if (PyType_Ready(&matmulType) < 0) return NULL; Py_INCREF(&matmulType); PyModule_AddObject(m, "matmulType", (PyObject *)&matmulType); return m; }