X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=module_sigrokdecode.c;h=cb43372932bec4808e9a1cff88dd0252245bb526;hp=a3872ab53a260d92efa65fdff17e8cb25a44df69;hb=451680f192b97d652fb02186f5201efa0d668a2a;hpb=94d43b37bd34263f5ed9f7135aac5fe7413c7f07 diff --git a/module_sigrokdecode.c b/module_sigrokdecode.c index a3872ab..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; @@ -56,7 +62,7 @@ static int convert_pyobj(struct srd_decoder_instance *di, PyObject *obj, } ann_id = PyLong_AsLong(py_tmp); - if (!(pdo = g_slist_nth_data(di->decoder->annotation, ann_id))) { + if (!(pdo = g_slist_nth_data(di->decoder->annotations, ann_id))) { srd_err("Protocol decoder %s submitted data to non-existent annotation format %d", di->decoder->name, ann_id); return SRD_ERR_PYTHON; @@ -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; }