1 /* -*- Mode: C; c-basic-offset: 4 -*-
2  * pygtk- Python bindings for the GTK toolkit.
3  * Copyright (C) 1998-2003  James Henstridge
4  *               2004-2008  Johan Dahlin
5  *   pyginterface.c: wrapper for the gobject library.
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
19  */
20 
21 #ifndef __PYGI_TYPE_H__
22 #define __PYGI_TYPE_H__
23 
24 #include <Python.h>
25 #include <glib-object.h>
26 #include <girepository.h>
27 #include "pygobject-internal.h"
28 
29 extern PyTypeObject PyGTypeWrapper_Type;
30 
31 typedef PyObject *(* fromvaluefunc)(const GValue *value);
32 typedef int (*tovaluefunc)(GValue *value, PyObject *obj);
33 
34 typedef struct {
35     fromvaluefunc fromvalue;
36     tovaluefunc tovalue;
37 } PyGTypeMarshal;
38 
39 PyGTypeMarshal *pyg_type_lookup(GType type);
40 
41 gboolean pyg_gtype_is_custom (GType gtype);
42 
43 void pyg_register_gtype_custom(GType gtype,
44                                fromvaluefunc from_func,
45                                tovaluefunc to_func);
46 
47 int pygi_type_register_types(PyObject *d);
48 
49 PyObject *pyg_object_descr_doc_get(void);
50 PyObject *pyg_type_wrapper_new (GType type);
51 GType     pyg_type_from_object_strict (PyObject *obj, gboolean strict);
52 GType     pyg_type_from_object (PyObject *obj);
53 
54 int pyg_pyobj_to_unichar_conv (PyObject* py_obj, void* ptr);
55 
56 GClosure *pyg_closure_new(PyObject *callback, PyObject *extra_args, PyObject *swap_data);
57 GClosure *pyg_signal_class_closure_get(void);
58 void      pyg_closure_set_exception_handler(GClosure *closure,
59                                             PyClosureExceptionHandler handler);
60 
61 PyObject *pygi_type_import_by_g_type (GType g_type);
62 PyObject *pygi_type_import_by_name (const char *namespace_, const char *name);
63 PyObject *pygi_type_import_by_gi_info (GIBaseInfo *info);
64 PyObject *pygi_type_get_from_g_type (GType g_type);
65 
66 #endif /* __PYGI_TYPE_H__ */
67