factor/basis/glib/ffi/ffi.factor

55 lines
1.6 KiB
Factor

! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien alien.destructors alien.libraries
alien.strings alien.syntax combinators gobject-introspection
gobject-introspection.standard-types io.encodings.utf8 kernel
system ;
IN: glib.ffi
LIBRARY: glib
<< "glib" {
{ [ os windows? ] [ "libglib-2.0-0.dll" ] }
{ [ os macosx? ] [ "libglib-2.0.0.dylib" ] }
{ [ os unix? ] [ "libglib-2.0.so" ] }
} cond cdecl add-library >>
IMPLEMENT-STRUCTS: GError GPollFD GSource GSourceFuncs ;
CONSTANT: G_MININT8 -0x80
CONSTANT: G_MAXINT8 0x7f
CONSTANT: G_MAXUINT8 0xff
CONSTANT: G_MININT16 -0x8000
CONSTANT: G_MAXINT16 0x7fff
CONSTANT: G_MAXUINT16 0xffff
CONSTANT: G_MININT32 -0x80000000
CONSTANT: G_MAXINT32 0x7fffffff
CONSTANT: G_MAXUINT32 0xffffffff
CONSTANT: G_MININT64 -0x8000000000000000
CONSTANT: G_MAXINT64 0x7fffffffffffffff
CONSTANT: G_MAXUINT64 0xffffffffffffffff
GIR: vocab:glib/GLib-2.0.gir
DESTRUCTOR: g_source_unref
DESTRUCTOR: g_free
CALLBACK: gboolean GSourceFuncsPrepareFunc ( GSource* source, gint* timeout_ )
CALLBACK: gboolean GSourceFuncsCheckFunc ( GSource* source )
CALLBACK: gboolean GSourceFuncsDispatchFunc ( GSource* source, GSourceFunc callback, gpointer user_data )
ERROR: g-error domain code message ;
: GError>g-error ( GError -- g-error )
[ domain>> g_quark_to_string utf8 alien>string ]
[ code>> ]
[ message>> utf8 alien>string ] tri
\ g-error boa ;
: handle-GError ( GError/f -- )
[
[ GError>g-error ]
[ g_error_free ] bi
throw
] when* ;