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