]> gitweb.factorcode.org Git - factor.git/blob - basis/glib/ffi/ffi.factor
factor: more top level forms.
[factor.git] / basis / glib / ffi / ffi.factor
1 ! Copyright (C) 2010 Anton Gorenko.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors alien alien.destructors alien.libraries
4 alien.strings alien.syntax combinators gobject-introspection
5 gobject-introspection.standard-types io.encodings.utf8 kernel
6 system ;
7 IN: glib.ffi
8
9 LIBRARY: glib
10
11 LIBRARY-UNIX: glib cdecl "libglib-2.0.so"
12 LIBRARY-MACOSX: glib cdecl "libglib-2.0.dylib"
13 LIBRARY-WINDOWS: glib cdecl "libglib-2.0-0.dll"
14
15 IMPLEMENT-STRUCTS: GError GPollFD GSource GSourceFuncs ;
16
17 CONSTANT: G_MININT8   -0x80
18 CONSTANT: G_MAXINT8   0x7f
19 CONSTANT: G_MAXUINT8  0xff
20 CONSTANT: G_MININT16  -0x8000
21 CONSTANT: G_MAXINT16  0x7fff
22 CONSTANT: G_MAXUINT16 0xffff
23 CONSTANT: G_MININT32  -0x80000000
24 CONSTANT: G_MAXINT32  0x7fffffff
25 CONSTANT: G_MAXUINT32 0xffffffff
26 CONSTANT: G_MININT64  -0x8000000000000000
27 CONSTANT: G_MAXINT64  0x7fffffffffffffff
28 CONSTANT: G_MAXUINT64 0xffffffffffffffff
29
30 GIR: vocab:glib/GLib-2.0.gir
31
32 DESTRUCTOR: g_source_unref
33 DESTRUCTOR: g_free
34
35 CALLBACK: gboolean GSourceFuncsPrepareFunc ( GSource* source, gint* timeout_ )
36 CALLBACK: gboolean GSourceFuncsCheckFunc ( GSource* source )
37 CALLBACK: gboolean GSourceFuncsDispatchFunc ( GSource* source, GSourceFunc callback, gpointer user_data )
38
39 ERROR: g-error domain code message ;
40
41 : GError>g-error ( GError -- g-error )
42     [ domain>> g_quark_to_string utf8 alien>string ]
43     [ code>> ]
44     [ message>> utf8 alien>string ] tri
45     \ g-error boa ;
46
47 : handle-GError ( GError/f -- )
48     [
49         [ GError>g-error ]
50         [ g_error_free ] bi
51         throw
52     ] when* ;