pygi-marshal-from-py.h 9.24 KB
Newer Older
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
/* -*- Mode: C; c-basic-offset: 4 -*-
 * vim: tabstop=4 shiftwidth=4 expandtab
 *
 * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
 * USA
 */

#ifndef __PYGI_MARSHAL_from_py_PY_H__
#define __PYGI_MARSHAL_from_py_PY_H__

#include <Python.h>

#include <girepository.h>

#include "pygi-private.h"

G_BEGIN_DECLS

David Malcolm's avatar
David Malcolm committed
33 34 35
gboolean _pygi_marshal_from_py_ssize_t     (PyGIArgCache      *arg_cache,
                                            Py_ssize_t         size,
                                            GIArgument        *arg);
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
gboolean _pygi_marshal_from_py_void        (PyGIInvokeState   *state,
                                            PyGICallableCache *callable_cache,
                                            PyGIArgCache      *arg_cache,
                                            PyObject          *py_arg,
                                            GIArgument        *arg);
gboolean _pygi_marshal_from_py_array       (PyGIInvokeState   *state,
                                            PyGICallableCache *callable_cache,
                                            PyGIArgCache      *arg_cache,
                                            PyObject          *py_arg,
                                            GIArgument        *arg);
gboolean _pygi_marshal_from_py_glist       (PyGIInvokeState   *state,
                                            PyGICallableCache *callable_cache,
                                            PyGIArgCache      *arg_cache,
                                            PyObject          *py_arg,
                                            GIArgument        *arg);
gboolean _pygi_marshal_from_py_gslist      (PyGIInvokeState   *state,
                                            PyGICallableCache *callable_cache,
                                            PyGIArgCache      *arg_cache,
                                            PyObject          *py_arg,
                                            GIArgument        *arg);
gboolean _pygi_marshal_from_py_ghash       (PyGIInvokeState   *state,
                                            PyGICallableCache *callable_cache,
                                            PyGIArgCache      *arg_cache,
                                            PyObject          *py_arg,
                                            GIArgument        *arg);
gboolean _pygi_marshal_from_py_gerror      (PyGIInvokeState   *state,
                                            PyGICallableCache *callable_cache,
                                            PyGIArgCache      *arg_cache,
                                            PyObject          *py_arg,
                                            GIArgument        *arg);
gboolean _pygi_marshal_from_py_interface_callback (PyGIInvokeState   *state,
                                                   PyGICallableCache *callable_cache,
                                                   PyGIArgCache      *arg_cache,
                                                   PyObject          *py_arg,
                                                   GIArgument        *arg);
gboolean _pygi_marshal_from_py_interface_enum     (PyGIInvokeState   *state,
                                                   PyGICallableCache *callable_cache,
                                                   PyGIArgCache      *arg_cache,
                                                   PyObject          *py_arg,
                                                   GIArgument        *arg);
gboolean _pygi_marshal_from_py_interface_flags    (PyGIInvokeState   *state,
                                                   PyGICallableCache *callable_cache,
                                                   PyGIArgCache      *arg_cache,
                                                   PyObject          *py_arg,
                                                   GIArgument        *arg);
81 82 83 84 85
gboolean _pygi_marshal_from_py_interface_struct_cache_adapter   (PyGIInvokeState   *state,
                                                                 PyGICallableCache *callable_cache,
                                                                 PyGIArgCache      *arg_cache,
                                                                 PyObject          *py_arg,
                                                                 GIArgument        *arg);
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
gboolean _pygi_marshal_from_py_interface_interface(PyGIInvokeState   *state,
                                                   PyGICallableCache *callable_cache,
                                                   PyGIArgCache      *arg_cache,
                                                   PyObject          *py_arg,
                                                   GIArgument        *arg);
gboolean _pygi_marshal_from_py_interface_boxed    (PyGIInvokeState   *state,
                                                   PyGICallableCache *callable_cache,
                                                   PyGIArgCache      *arg_cache,
                                                   PyObject          *py_arg,
                                                   GIArgument        *arg);
gboolean _pygi_marshal_from_py_interface_object   (PyGIInvokeState   *state,
                                                   PyGICallableCache *callable_cache,
                                                   PyGIArgCache      *arg_cache,
                                                   PyObject          *py_arg,
                                                   GIArgument        *arg);
gboolean _pygi_marshal_from_py_interface_union    (PyGIInvokeState   *state,
                                                   PyGICallableCache *callable_cache,
                                                   PyGIArgCache      *arg_cache,
                                                   PyObject          *py_arg,
                                                   GIArgument        *arg);
gboolean _pygi_marshal_from_py_interface_instance (PyGIInvokeState   *state,
                                                   PyGICallableCache *callable_cache,
                                                   PyGIArgCache      *arg_cache,
                                                   PyObject          *py_arg,
                                                   GIArgument        *arg);

112
/* Simplified marshalers shared between vfunc/closure and direct function calls. */
113 114 115 116
gboolean _pygi_marshal_from_py_basic_type (PyObject   *object,   /* in */
                                           GIArgument *arg,      /* out */
                                           GITypeTag   type_tag,
                                           GITransfer  transfer);
117 118 119 120 121
gboolean _pygi_marshal_from_py_basic_type_cache_adapter  (PyGIInvokeState   *state,
                                                          PyGICallableCache *callable_cache,
                                                          PyGIArgCache      *arg_cache,
                                                          PyObject          *py_arg,
                                                          GIArgument        *arg);
122

123 124 125
gboolean _pygi_marshal_from_py_gobject (PyObject *py_arg, /*in*/
                                        GIArgument *arg,  /*out*/
                                        GITransfer transfer);
126 127 128
gboolean _pygi_marshal_from_py_gobject_out_arg (PyObject *py_arg, /*in*/
                                                GIArgument *arg,  /*out*/
                                                GITransfer transfer);
129

130 131 132 133
gboolean _pygi_marshal_from_py_gvalue (PyObject *py_arg, /*in*/
                                       GIArgument *arg,  /*out*/
                                       GITransfer transfer,
                                       gboolean is_allocated);
134

135 136
gboolean _pygi_marshal_from_py_gclosure(PyObject *py_arg, /*in*/
                                        GIArgument *arg); /*out*/
137

138 139 140 141 142 143 144 145
gboolean _pygi_marshal_from_py_interface_struct (PyObject *py_arg,
                                                 GIArgument *arg,
                                                 const gchar *arg_name,
                                                 GIBaseInfo *interface_info,
                                                 GITypeInfo *type_info,
                                                 GType g_type,
                                                 PyObject *py_type,
                                                 GITransfer transfer,
146 147 148
                                                gboolean is_allocated,
                                                gboolean is_foreign);

149 150 151
G_END_DECLS

#endif /* __PYGI_MARSHAL_from_py_PY__ */