Python: Restrict code to stable ABI subset
authorDaniel Elstner <daniel.kitta@gmail.com>
Sun, 4 Oct 2015 23:53:43 +0000 (01:53 +0200)
committerDaniel Elstner <daniel.kitta@gmail.com>
Tue, 6 Oct 2015 21:25:36 +0000 (23:25 +0200)
commit201a85a8ea071d37f4fda2668c0a1c488d852f4e
treef407560b61fc126291ee932d6c897a80dea79a30
parentbd0e7d2e71e7a05b2bb0686a86a75b8fcb92fd54
Python: Restrict code to stable ABI subset

Limit usage of the Python C API to the stable ABI subset as defined
by PEP 384. This removes some type definitions and functions which
libsigrokdecode made use of. Convert all affected code to suitable
API alternatives. Also fix a few leaks that became apparent while
working on the code.

The most visible change is that PyTypeObject is now an opaque type.
Thus, the custom Decoder and srd_logic types are now created on the
heap via an alternative API. Unfortunately, since tp_name is now
inaccessible, type names had to be removed from the log output.

Stack traces after Python exceptions are now formatted by calling
into Python, since the trace object C API is no longer available.
decoder.c
exception.c
instance.c
libsigrokdecode-internal.h
module_sigrokdecode.c
type_decoder.c
type_logic.c
util.c