]> gitweb.factorcode.org Git - factor.git/blob - basis/glib/ffi/ffi.factor
30f681203ef38fff279ab5d3ba4493ce3bc28f10
[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 <<
12 "glib" {
13     { [ os winnt? ] [ "libglib-2.0-0.dll" cdecl add-library ] }
14     { [ os macosx? ] [ "/opt/local/lib/libglib-2.0.0.dylib" cdecl add-library ] }
15     { [ os unix? ] [ drop ] }
16 } cond
17 >>
18
19 IMPLEMENT-STRUCTS: GError GPollFD GSource GSourceFuncs ;
20
21 CONSTANT: G_MININT8   HEX: -80
22 CONSTANT: G_MAXINT8   HEX:  7f
23 CONSTANT: G_MAXUINT8  HEX:  ff
24 CONSTANT: G_MININT16  HEX: -8000
25 CONSTANT: G_MAXINT16  HEX:  7fff
26 CONSTANT: G_MAXUINT16 HEX:  ffff
27 CONSTANT: G_MININT32  HEX: -80000000
28 CONSTANT: G_MAXINT32  HEX:  7fffffff
29 CONSTANT: G_MAXUINT32 HEX:  ffffffff
30 CONSTANT: G_MININT64  HEX: -8000000000000000
31 CONSTANT: G_MAXINT64  HEX:  7fffffffffffffff
32 CONSTANT: G_MAXUINT64 HEX:  ffffffffffffffff
33
34 GIR: vocab:glib/GLib-2.0.gir
35
36 DESTRUCTOR: g_source_unref
37 DESTRUCTOR: g_free
38
39 CALLBACK: gboolean GSourceFuncsPrepareFunc ( GSource* source, gint* timeout_ ) ;
40 CALLBACK: gboolean GSourceFuncsCheckFunc ( GSource* source ) ;
41 CALLBACK: gboolean GSourceFuncsDispatchFunc ( GSource* source, GSourceFunc callback, gpointer user_data ) ;
42
43 ERROR: g-error domain code message ;
44
45 : GError>g-error ( GError -- g-error )
46     [ domain>> g_quark_to_string utf8 alien>string ]
47     [ code>> ]
48     [ message>> utf8 alien>string ] tri
49     \ g-error boa ;
50
51 : handle-GError ( GError/f -- )
52     [
53         [ GError>g-error ]
54         [ g_error_free ] bi
55         throw
56     ] when* ;