blob: 139b8786412a1958db7092a5b07e966e8984b3f8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#ifndef __PYGI_INVOKE_STATE_STRUCT_H__
#define __PYGI_INVOKE_STATE_STRUCT_H__
#include <Python.h>
#include <girepository.h>
G_BEGIN_DECLS
typedef struct _PyGIInvokeState
{
PyObject *py_in_args;
gssize n_py_in_args;
gssize current_arg;
GType implementor_gtype;
GIArgument **args;
GIArgument *in_args;
/* Array of pointers allocated to the same length as args which holds from_py
* marshaler cleanup data.
*/
gpointer *args_cleanup_data;
/* Out args and out values
* In order to pass a parameter and get something back out in C
* we need to pass a pointer to the value, e.g.
* int *out_integer;
*
* so while out_args == out_integer, out_value == *out_integer
* or in other words out_args = &out_values
*
* We do all of our processing on out_values but we pass out_args to
* the actual function.
*/
GIArgument *out_args;
GIArgument *out_values;
GIArgument return_arg;
GError *error;
gboolean failed;
gpointer user_data;
} PyGIInvokeState;
G_END_DECLS
#endif
|