python: Move helper function.
* lang/python/gpgme.i (object_to_gpgme_t): Move... * lang/python/helpers.c: ... here. * lang/python/helpers.h (object_to_gpgme_t): New prototype. Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
parent
89eb0cd4d6
commit
26c3accc95
@ -79,37 +79,6 @@
|
|||||||
%typemap(newfree) char * "free($1);";
|
%typemap(newfree) char * "free($1);";
|
||||||
%newobject gpgme_data_release_and_get_mem;
|
%newobject gpgme_data_release_and_get_mem;
|
||||||
|
|
||||||
%{
|
|
||||||
/* Convert object to a pointer to gpgme type */
|
|
||||||
PyObject* object_to_gpgme_t(PyObject* input, const char* objtype, int argnum) {
|
|
||||||
PyObject *pyname = NULL, *pypointer = NULL;
|
|
||||||
pyname = PyObject_CallMethod(input, "_getctype", NULL);
|
|
||||||
if (pyname && PyUnicode_Check(pyname))
|
|
||||||
{
|
|
||||||
if (strcmp(PyUnicode_AsUTF8(pyname), objtype) != 0)
|
|
||||||
{
|
|
||||||
PyErr_Format(PyExc_TypeError,
|
|
||||||
"arg %d: Expected value of type %s, but got %s",
|
|
||||||
argnum, objtype, PyUnicode_AsUTF8(pyname));
|
|
||||||
Py_DECREF(pyname);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
Py_DECREF(pyname);
|
|
||||||
pypointer = PyObject_GetAttrString(input, "wrapped");
|
|
||||||
if (pypointer == NULL) {
|
|
||||||
PyErr_Format(PyExc_TypeError,
|
|
||||||
"arg %d: Use of uninitialized Python object %s",
|
|
||||||
argnum, objtype);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return pypointer;
|
|
||||||
}
|
|
||||||
%}
|
|
||||||
|
|
||||||
%typemap(arginit) gpgme_key_t [] {
|
%typemap(arginit) gpgme_key_t [] {
|
||||||
$1 = NULL;
|
$1 = NULL;
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,43 @@ PyObject *pygpgme_raise_callback_exception(PyObject *self)
|
|||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
#undef EXCINFO
|
#undef EXCINFO
|
||||||
|
|
||||||
|
/* Argument conversion. */
|
||||||
|
|
||||||
|
/* Convert object to a pointer to gpgme type, generic version. */
|
||||||
|
PyObject *
|
||||||
|
object_to_gpgme_t(PyObject *input, const char *objtype, int argnum)
|
||||||
|
{
|
||||||
|
PyObject *pyname = NULL, *pypointer = NULL;
|
||||||
|
pyname = PyObject_CallMethod(input, "_getctype", NULL);
|
||||||
|
if (pyname && PyUnicode_Check(pyname))
|
||||||
|
{
|
||||||
|
if (strcmp(PyUnicode_AsUTF8(pyname), objtype) != 0)
|
||||||
|
{
|
||||||
|
PyErr_Format(PyExc_TypeError,
|
||||||
|
"arg %d: Expected value of type %s, but got %s",
|
||||||
|
argnum, objtype, PyUnicode_AsUTF8(pyname));
|
||||||
|
Py_DECREF(pyname);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
Py_DECREF(pyname);
|
||||||
|
pypointer = PyObject_GetAttrString(input, "wrapped");
|
||||||
|
if (pypointer == NULL) {
|
||||||
|
PyErr_Format(PyExc_TypeError,
|
||||||
|
"arg %d: Use of uninitialized Python object %s",
|
||||||
|
argnum, objtype);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return pypointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Callback support. */
|
||||||
static gpgme_error_t pyPassphraseCb(void *hook,
|
static gpgme_error_t pyPassphraseCb(void *hook,
|
||||||
const char *uid_hint,
|
const char *uid_hint,
|
||||||
const char *passphrase_info,
|
const char *passphrase_info,
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
void pygpgme_exception_init(void);
|
void pygpgme_exception_init(void);
|
||||||
gpgme_error_t pygpgme_exception2code(void);
|
gpgme_error_t pygpgme_exception2code(void);
|
||||||
|
|
||||||
|
PyObject *object_to_gpgme_t(PyObject *input, const char *objtype, int argnum);
|
||||||
|
|
||||||
void pygpgme_clear_generic_cb(PyObject **cb);
|
void pygpgme_clear_generic_cb(PyObject **cb);
|
||||||
PyObject *pygpgme_raise_callback_exception(PyObject *self);
|
PyObject *pygpgme_raise_callback_exception(PyObject *self);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user