aboutsummaryrefslogtreecommitdiffstats
path: root/lang/python/helpers.h
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-06-08 15:56:33 +0000
committerJustus Winter <[email protected]>2016-06-16 12:19:17 +0000
commit616929b6edf00b4a774b727385d39b785a112b90 (patch)
treec39e618d99d3257888ac68d2fed08b70fab81435 /lang/python/helpers.h
parentpython: Add properties to wrapped object. (diff)
downloadgpgme-616929b6edf00b4a774b727385d39b785a112b90.tar.gz
gpgme-616929b6edf00b4a774b727385d39b785a112b90.zip
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 <[email protected]>
Diffstat (limited to '')
-rw-r--r--lang/python/helpers.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/lang/python/helpers.h b/lang/python/helpers.h
index 24502631..37362aee 100644
--- a/lang/python/helpers.h
+++ b/lang/python/helpers.h
@@ -1,4 +1,5 @@
/*
+# Copyright (C) 2016 g10 Code GmbH
# Copyright (C) 2004 Igor Belyi <[email protected]>
# Copyright (C) 2002 John Goerzen <[email protected]>
#
@@ -30,7 +31,8 @@ gpgme_error_t pygpgme_exception2code(void);
PyObject *object_to_gpgme_t(PyObject *input, const char *objtype, int argnum);
PyObject *object_to_gpgme_data_t(PyObject *input, int argnum,
- PyObject **wrapper);
+ gpgme_data_t *wrapper,
+ PyObject **bytesio, Py_buffer *view);
void pygpgme_clear_generic_cb(PyObject **cb);
PyObject *pygpgme_raise_callback_exception(PyObject *self);
@@ -47,3 +49,6 @@ gpgme_error_t pyEditCb(void *opaque, gpgme_status_code_t status,
gpgme_error_t pygpgme_data_new_from_cbs(gpgme_data_t *r_data,
PyObject *pycbs,
PyObject **freelater);
+
+/* SWIG support for helpers.c */
+PyObject *pygpgme_wrap_gpgme_data_t(gpgme_data_t data);