]> gitweb.factorcode.org Git - factor.git/blob - basis/glib/ffi/ffi.factor
Merge branch 'gtk' into gtk-image-loader
[factor.git] / basis / glib / ffi / ffi.factor
1 ! Copyright (C) 2009 Anton Gorenko.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors alien alien.c-types alien.destructors
4 alien.libraries alien.strings alien.syntax combinators
5 gobject-introspection io.encodings.utf8 kernel system
6 vocabs.parser words ;
7 IN: glib.ffi
8
9 <<
10 "glib" {
11     { [ os winnt? ] [ "libglib-2.0-0.dll" cdecl add-library ] }
12     { [ os macosx? ] [ "/opt/local/lib/libglib-2.0.0.dylib" cdecl add-library ] }
13     { [ os unix? ] [ "libglib-2.0.so" cdecl add-library ] }
14 } cond
15 >>
16
17 TYPEDEF: char gchar
18 TYPEDEF: uchar guchar
19 TYPEDEF: short gshort
20 TYPEDEF: ushort gushort
21 TYPEDEF: long glong
22 TYPEDEF: ulong gulong
23 TYPEDEF: int gint
24 TYPEDEF: uint guint
25
26 <<
27 int c-type clone
28     [ >c-bool ] >>unboxer-quot
29     [ c-bool> ] >>boxer-quot
30     object >>boxed-class
31 "gboolean" current-vocab create typedef
32 >>
33
34 TYPEDEF: char gint8
35 TYPEDEF: uchar guint8
36 TYPEDEF: short gint16
37 TYPEDEF: ushort guint16
38 TYPEDEF: int gint32
39 TYPEDEF: uint guint32
40 TYPEDEF: longlong gint64
41 TYPEDEF: ulonglong guint64
42
43 TYPEDEF: float gfloat
44 TYPEDEF: double gdouble
45
46 TYPEDEF: long ssize_t
47 TYPEDEF: long time_t
48 TYPEDEF: size_t gsize
49 TYPEDEF: ssize_t gssize
50 TYPEDEF: size_t GType
51
52 TYPEDEF: void* gpointer
53 TYPEDEF: void* gconstpointer
54
55 TYPEDEF: guint8 GDateDay
56 TYPEDEF: guint16 GDateYear
57 TYPEDEF: gint GPid
58 TYPEDEF: guint32 GQuark
59 TYPEDEF: gint32 GTime
60 TYPEDEF: glong gintptr
61 TYPEDEF: gint64 goffset
62 TYPEDEF: gulong guintptr
63 TYPEDEF: guint32 gunichar
64 TYPEDEF: guint16 gunichar2
65
66 TYPEDEF: gpointer pointer
67
68 REPLACE-C-TYPE: long\sdouble double
69 REPLACE-C-TYPE: any gpointer
70
71 IMPLEMENT-STRUCTS: GError GPollFD GSource GSourceFuncs ;
72
73 GIR: vocab:glib/GLib-2.0.gir
74
75 DESTRUCTOR: g_source_unref
76 DESTRUCTOR: g_free
77
78 CALLBACK: gboolean GSourceFuncsPrepareFunc ( GSource* source, gint* timeout_ ) ;
79 CALLBACK: gboolean GSourceFuncsCheckFunc ( GSource* source ) ;
80 CALLBACK: gboolean GSourceFuncsDispatchFunc ( GSource* source, GSourceFunc callback, gpointer user_data ) ;
81
82 ERROR: g-error domain code message ;
83
84 : GError>g-error ( GError -- g-error )
85     [ domain>> g_quark_to_string utf8 alien>string ]
86     [ code>> ]
87     [ message>> utf8 alien>string ] tri
88     \ g-error boa ;
89
90 : handle-GError ( GError/f -- )
91     [
92         [ GError>g-error ]
93         [ g_error_free ] bi
94         throw
95     ] when* ;