]> sigrok.org Git - libsigrokdecode.git/blobdiff - module_sigrokdecode.c
srd: clean up module loading/unloading, and the decoder struct
[libsigrokdecode.git] / module_sigrokdecode.c
index 426cf49c28b76c3cb8a0991929cf58c67bb51c43..cb43372932bec4808e9a1cff88dd0252245bb526 100644 (file)
 #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,
 };
@@ -240,6 +242,8 @@ PyMODINIT_FUNC PyInit_sigrokdecode(void)
                        PyLong_FromLong(SRD_OUTPUT_BINARY)) == -1)
                return NULL;
 
+       mod_sigrokdecode = mod;
+
        return mod;
 }