python: Wrap objects implementing the buffer protocol.
authorJustus Winter <justus@g10code.com>
Wed, 8 Jun 2016 15:56:33 +0000 (17:56 +0200)
committerJustus Winter <justus@g10code.com>
Thu, 16 Jun 2016 12:19:17 +0000 (14:19 +0200)
commit616929b6edf00b4a774b727385d39b785a112b90
treec39e618d99d3257888ac68d2fed08b70fab81435
parent5464060baef2da8f5ea377118758e451c55e3787
python: Wrap objects implementing the buffer protocol.

* lang/python/Makefile.am: Add the toplevel source directory to CFLAGS
when compiling the bindings so that we can use private header files.
* lang/python/gpgme.i (gpgme_data_t): Rework the object wrapping.  Do
not create a Python wrapper object, merely a gpgme_data_t object, and
keep references to buffer objects, if any.  If necessary, update the
buffer after the function call.
(pygpgme_wrap_gpgme_data_t): New function.
* lang/python/helpers.c (object_to_gpgme_data_t): Rework object
wrapping.  Also wrap objects implementing the buffer protocol.
* lang/python/helpers.h (object_to_gpgme_data_t): Update prototype.
(pygpgme_wrap_gpgme_data_t): New prototype.
* lang/python/tests/t-idiomatic.py: Demonstrate this.

Signed-off-by: Justus Winter <justus@g10code.com>
lang/python/Makefile.am
lang/python/gpgme.i
lang/python/helpers.c
lang/python/helpers.h
lang/python/tests/t-idiomatic.py