X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=module_sigrokdecode.c;h=cb43372932bec4808e9a1cff88dd0252245bb526;hp=d2ffb0767487576de20672710038baec76fa2b55;hb=87998e973f16206be1391f87ccae7c2756baf353;hpb=e97b6ef569f73e387b2597dfa144c01838c0e27c diff --git a/module_sigrokdecode.c b/module_sigrokdecode.c index d2ffb07..cb43372 100644 --- a/module_sigrokdecode.c +++ b/module_sigrokdecode.c @@ -21,6 +21,12 @@ #include "sigrokdecode-internal.h" #include "config.h" + +/* When initialized, a reference to this module inside the python interpreter + * lives here. + */ +PyObject *mod_sigrokdecode = NULL; + /* lives in type_logic.c */ extern PyTypeObject srd_logic_type; @@ -187,23 +193,19 @@ static PyMethodDef Decoder_methods[] = { }; -typedef struct { - PyObject_HEAD -} sigrok_Decoder_object; - -static PyTypeObject srd_Decoder_type = { +PyTypeObject srd_Decoder_type = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "sigrokdecode.Decoder", - .tp_basicsize = sizeof(sigrok_Decoder_object), + .tp_basicsize = sizeof(srd_Decoder), .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - .tp_doc = "Sigrok Decoder object", + .tp_doc = "Sigrok Decoder base class", .tp_methods = Decoder_methods, }; static struct PyModuleDef sigrokdecode_module = { PyModuleDef_HEAD_INIT, .m_name = "sigrokdecode", - .m_doc = "sigrokdecode base class", + .m_doc = "sigrokdecode module", .m_size = -1, .m_methods = no_methods, }; @@ -230,16 +232,18 @@ PyMODINIT_FUNC PyInit_sigrokdecode(void) return NULL; /* expose output types as symbols in the sigrokdecode module */ - if(PyModule_AddObject(mod, "SRD_OUTPUT_ANN", + if(PyModule_AddObject(mod, "OUTPUT_ANN", PyLong_FromLong(SRD_OUTPUT_ANN)) == -1) return NULL; - if(PyModule_AddObject(mod, "SRD_OUTPUT_PROTO", + if(PyModule_AddObject(mod, "OUTPUT_PROTO", PyLong_FromLong(SRD_OUTPUT_PROTO)) == -1) return NULL; - if(PyModule_AddObject(mod, "SRD_OUTPUT_BINARY", + if(PyModule_AddObject(mod, "OUTPUT_BINARY", PyLong_FromLong(SRD_OUTPUT_BINARY)) == -1) return NULL; + mod_sigrokdecode = mod; + return mod; }