change directories structure (add */ffi/ffi.factor files)

db4
Anton Gorenko 2010-05-27 00:17:14 +06:00
parent 2677b7b562
commit 17192dee7c
38 changed files with 419 additions and 381 deletions

View File

@ -1,21 +1,5 @@
! Copyright (C) 2009 Anton Gorenko. ! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries alien.syntax combinators kernel USING: atk.ffi ;
system IN: atk
gir glib gobject glib.ffi ;
<<
"atk" {
{ [ os winnt? ] [ "libatk-1.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libatk-1.0.so" cdecl add-library ] }
} cond
>>
IN: atk.ffi
TYPEDEF: guint64 AtkState
TYPEDEF: GSList AtkAttributeSet
IN-GIR: atk vocab:atk/Atk-1.0.gir

20
basis/atk/ffi/ffi.factor Normal file
View File

@ -0,0 +1,20 @@
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries alien.syntax combinators kernel
system
gir glib.ffi gobject.ffi ;
IN: atk.ffi
<<
"atk" {
{ [ os winnt? ] [ "libatk-1.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libatk-1.0.so" cdecl add-library ] }
} cond
>>
TYPEDEF: guint64 AtkState
TYPEDEF: GSList AtkAttributeSet
GIR: vocab:atk/Atk-1.0.gir

30
basis/gdk/ffi/ffi.factor Normal file
View File

@ -0,0 +1,30 @@
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.destructors alien.syntax
alien.libraries cairo.ffi combinators kernel system
gir gdk.pixbuf.ffi gio.ffi glib.ffi gmodule.ffi gobject.ffi
pango.ffi ;
IN: gdk.ffi
<<
"gdk" {
{ [ os winnt? ] [ "libgdk-win32-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgdk-x11-2.0.so" cdecl add-library ] }
} cond
>>
TYPEDEF: guint32 GdkNativeWindow
TYPEDEF: guint32 GdkWChar
IMPLEMENT-STRUCTS: GdkEventAny GdkEventKey GdkEventButton
GdkEventScroll GdkEventMotion GdkEventExpose GdkEventVisibility
GdkEventCrossing GdkEventFocus GdkEventConfigure GdkEventProperty
GdkEventSelection GdkEventDND GdkEventProximity GdkEventClient
GdkEventNoExpose GdkEventWindowState GdkEventSetting
GdkEventOwnerChange GdkEventGrabBroken ;
GIR: vocab:gdk/Gdk-2.0.gir
DESTRUCTOR: gdk_cursor_unref

View File

@ -1,33 +1,5 @@
! Copyright (C) 2009 Anton Gorenko. ! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.destructors alien.syntax alien.libraries cairo.ffi USING: gdk.ffi ;
combinators kernel system IN: gdk
gir glib gobject gio gmodule gdk.pixbuf glib.ffi ;
EXCLUDE: alien.c-types => pointer ;
<<
"gdk" {
{ [ os winnt? ] [ "libgdk-win32-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgdk-x11-2.0.so" cdecl add-library ] }
} cond
>>
IN: gdk.ffi
TYPEDEF: guint32 GdkNativeWindow
TYPEDEF: guint32 GdkWChar
IMPLEMENT-STRUCTS: GdkEventAny GdkEventKey GdkEventButton
GdkEventScroll GdkEventMotion GdkEventExpose GdkEventVisibility
GdkEventCrossing GdkEventFocus GdkEventConfigure GdkEventProperty
GdkEventSelection GdkEventDND GdkEventProximity GdkEventClient
GdkEventNoExpose GdkEventWindowState GdkEventSetting
GdkEventOwnerChange GdkEventGrabBroken ;
IN-GIR: gdk vocab:gdk/Gdk-2.0.gir
IN: gdk.ffi
DESTRUCTOR: gdk_cursor_unref

View File

@ -0,0 +1,20 @@
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.libraries combinators kernel
system vocabs.parser words
gir gdk.ffi gdk.pixbuf.ffi gio.ffi glib.ffi gmodule.ffi
gobject.ffi pango.ffi ;
IN: gdk.gl.ffi
<<
"gdk.gl" {
{ [ os winnt? ] [ drop ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgdkglext-x11-1.0.so" cdecl add-library ] }
} cond
>>
<< ulong "unsigned long" current-vocab create typedef >>
GIR: vocab:gdk/gl/GdkGL-1.0.gir

View File

@ -1,20 +1,5 @@
! Copyright (C) 2010 Anton Gorenko. ! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.libraries combinators kernel USING: gdk.gl.ffi ;
system vocabs.parser words IN: gdk.gl
gir glib gobject gio gmodule gdk gdk.ffi gdk.pixbuf ;
<<
"gdk.gl" {
{ [ os winnt? ] [ drop ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgdkglext-x11-1.0.so" cdecl add-library ] }
} cond
>>
IN: gdk.gl.ffi
<< ulong "unsigned long" current-vocab create typedef >>
IN-GIR: gdk.gl vocab:gdk/gl/GdkGL-1.0.gir

View File

@ -0,0 +1,17 @@
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system
gir gio.ffi glib.ffi gmodule.ffi gobject.ffi ;
EXCLUDE: alien.c-types => pointer ;
IN: gdk.pixbuf.ffi
<<
"gdk.pixbuf" {
{ [ os winnt? ] [ "libgdk_pixbuf-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgdk_pixbuf-2.0.so" cdecl add-library ] }
} cond
>>
GIR: vocab:gdk/pixbuf/GdkPixbuf-2.0.gir

View File

@ -1,16 +1,5 @@
! Copyright (C) 2009 Anton Gorenko. ! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system USING: gdk.pixbuf.ffi ;
gir glib gobject gio gmodule ; IN: gdk.pixbuf
EXCLUDE: alien.c-types => pointer ;
<<
"gdk.pixbuf" {
{ [ os winnt? ] [ "libgdk_pixbuf-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgdk_pixbuf-2.0.so" cdecl add-library ] }
} cond
>>
IN-GIR: gdk.pixbuf vocab:gdk/pixbuf/GdkPixbuf-2.0.gir

17
basis/gio/ffi/ffi.factor Normal file
View File

@ -0,0 +1,17 @@
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system
gir glib.ffi gobject.ffi ;
EXCLUDE: alien.c-types => pointer ;
IN: gio.ffi
<<
"gio" {
{ [ os winnt? ] [ "libgio-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgio-2.0.so" cdecl add-library ] }
} cond
>>
GIR: vocab:gio/Gio-2.0.gir

View File

@ -1,16 +1,5 @@
! Copyright (C) 2009 Anton Gorenko. ! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system USING: gio.ffi ;
gir glib gobject ; IN: gio
EXCLUDE: alien.c-types => pointer ;
<<
"gio" {
{ [ os winnt? ] [ "libgio-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgio-2.0.so" cdecl add-library ] }
} cond
>>
IN-GIR: gio vocab:gio/Gio-2.0.gir

View File

@ -7,9 +7,6 @@ CONSTANT: ffi-vocab "ffi"
SYMBOL: current-lib SYMBOL: current-lib
SYMBOL: lib-aliases
lib-aliases [ H{ } ] initialize
SYMBOL: type-infos SYMBOL: type-infos
type-infos [ H{ } ] initialize type-infos [ H{ } ] initialize
@ -18,6 +15,3 @@ aliases [ H{ } ] initialize
SYMBOL: implement-structs SYMBOL: implement-structs
: get-lib-alias ( lib -- alias )
lib-aliases get-global at ;

View File

@ -16,7 +16,7 @@ IN: gir.ffi
: ffi-invoker ( func -- quot ) : ffi-invoker ( func -- quot )
{ {
[ return>> c-type>> string>c-type ] [ return>> c-type>> string>c-type ]
[ drop current-lib get ] [ drop current-lib get-global ]
[ identifier>> ] [ identifier>> ]
[ parameters>> [ c-type>> string>c-type ] map ] [ parameters>> [ c-type>> string>c-type ] map ]
[ varargs?>> [ void* suffix ] when ] [ varargs?>> [ void* suffix ] when ]
@ -61,7 +61,7 @@ IN: gir.ffi
[ void* swap typedef ] keep dup [ void* swap typedef ] keep dup
] keep ] keep
[ signal-ffi-effect "callback-effect" set-word-prop ] [ signal-ffi-effect "callback-effect" set-word-prop ]
[ drop current-lib get "callback-library" set-word-prop ] [ drop current-lib get-global "callback-library" set-word-prop ]
[ signal-ffi-invoker (( quot -- alien )) define-inline ] 2tri ; [ signal-ffi-invoker (( quot -- alien )) define-inline ] 2tri ;
: define-ffi-signals ( signals class -- ) : define-ffi-signals ( signals class -- )
@ -161,7 +161,7 @@ IN: gir.ffi
[ define-ffi-interface-content ] each ; [ define-ffi-interface-content ] each ;
: get-type-invoker ( name -- quot ) : get-type-invoker ( name -- quot )
[ "GType" current-lib get ] dip [ "GType" current-lib get-global ] dip
{ } \ alien-invoke 5 narray >quotation ; { } \ alien-invoke 5 narray >quotation ;
: define-ffi-class ( class -- word ) : define-ffi-class ( class -- word )
@ -211,11 +211,6 @@ IN: gir.ffi
: define-ffi-aliases ( aliases -- ) : define-ffi-aliases ( aliases -- )
[ define-ffi-alias ] each ; [ define-ffi-alias ] each ;
: prepare-vocab ( repository -- )
includes>> lib-aliases get '[ _ at ] map sift
[ ffi-vocab "." glue ] map
[ dup using-vocab? [ drop ] [ use-vocab ] if ] each ;
: define-ffi-namespace ( namespace -- ) : define-ffi-namespace ( namespace -- )
{ {
[ aliases>> define-ffi-aliases ] [ aliases>> define-ffi-aliases ]
@ -238,6 +233,5 @@ IN: gir.ffi
} cleave ; } cleave ;
: define-ffi-repository ( repository -- ) : define-ffi-repository ( repository -- )
[ prepare-vocab ] namespace>> define-ffi-namespace ;
[ namespace>> define-ffi-namespace ] bi ;

View File

@ -1,7 +1,7 @@
! Copyright (C) 2009 Anton Gorenko. ! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs combinators gir.common gir.ffi gir.loader USING: accessors assocs combinators gir.common gir.ffi gir.loader
kernel lexer locals namespaces sequences vocabs.parser xml ; kernel lexer locals math namespaces sequences vocabs.parser xml ;
IN: gir IN: gir
: with-child-vocab ( name quot -- ) : with-child-vocab ( name quot -- )
@ -9,20 +9,18 @@ IN: gir
[ swap "." glue set-current-vocab call ] keep [ swap "." glue set-current-vocab call ] keep
set-current-vocab ; inline set-current-vocab ; inline
:: define-gir-vocab ( vocab-name file-name -- ) :: define-gir-vocab ( file-name -- )
file-name file>xml xml>repository file-name file>xml xml>repository
vocab-name [ set-current-vocab ] [ current-lib set ] bi current-vocab name>> dup ffi-vocab tail?
[ ffi-vocab length 1 + head* current-lib set-global ]
[ drop ] if ! throw the error
{ {
[ [ define-ffi-repository ]
namespace>> name>> vocab-name swap
lib-aliases get set-at
]
[ ffi-vocab [ define-ffi-repository ] with-child-vocab ]
} cleave } cleave
f implement-structs set-global ; f implement-structs set-global ;
SYNTAX: IN-GIR: scan scan define-gir-vocab ; SYNTAX: GIR: scan define-gir-vocab ;
SYNTAX: IMPLEMENT-STRUCTS: SYNTAX: IMPLEMENT-STRUCTS:
";" parse-tokens implement-structs set-global ; ";" parse-tokens implement-structs set-global ;

View File

@ -32,7 +32,7 @@ SYMBOL: namespace-PREFIX
: full-type-name>type ( name -- type ) : full-type-name>type ( name -- type )
[ type new ] dip [ type new ] dip
camel>factor "." split1 dup [ swap ] unless camel>factor "." split1 dup [ swap ] unless
[ get-lib-alias >>namespace ] [ >>name ] bi* absolute-type ; [ >>namespace ] [ >>name ] bi* absolute-type ;
: node>type ( xml -- type ) : node>type ( xml -- type )
"name" attr full-type-name>type ; "name" attr full-type-name>type ;
@ -254,7 +254,7 @@ SYMBOL: namespace-PREFIX
: xml>namespace ( xml -- namespace ) : xml>namespace ( xml -- namespace )
[ namespace new ] dip { [ namespace new ] dip {
[ "name" attr camel>factor dup current-lib set >>name ] [ "name" attr camel>factor >>name ]
[ "prefix" attr [ set-prefix ] keep >>prefix ] [ "prefix" attr [ set-prefix ] keep >>prefix ]
[ "alias" tags-named [ xml>alias ] map >>aliases ] [ "alias" tags-named [ xml>alias ] map >>aliases ]
[ "record" tags-named [ xml>record ] map >>records ] [ "record" tags-named [ xml>record ] map >>records ]
@ -265,8 +265,7 @@ SYMBOL: namespace-PREFIX
[ "constant" tags-named [ xml>const ] map >>consts ] [ "constant" tags-named [ xml>const ] map >>consts ]
[ "enumeration" tags-named [ xml>enum ] map >>enums ] [ "enumeration" tags-named [ xml>enum ] map >>enums ]
[ "bitfield" tags-named [ xml>enum ] map >>bitfields ] [ "bitfield" tags-named [ xml>enum ] map >>bitfields ]
[ "function" load-functions >>functions [ "function" load-functions >>functions ]
]
} cleave ; } cleave ;
: xml>repository ( xml -- repository ) : xml>repository ( xml -- repository )

View File

@ -132,5 +132,5 @@ PREDICATE: interface-type < type get-type-info interface-info? ;
dup { dup {
[ namespace>> ] [ simple-type? ] [ namespace>> ] [ simple-type? ]
[ utf8-type? ] [ none-type? ] [ utf8-type? ] [ none-type? ]
} 1|| [ current-lib get >>namespace ] unless ; } 1|| [ current-lib get-global >>namespace ] unless ;

70
basis/glib/ffi/ffi.factor Normal file
View File

@ -0,0 +1,70 @@
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien alien.c-types alien.libraries alien.syntax
combinators compiler.units gir kernel system vocabs.parser words ;
IN: glib.ffi
<<
"glib" {
{ [ os winnt? ] [ "libglib-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ "/opt/local/lib/libglib-2.0.0.dylib" cdecl add-library ] }
{ [ os unix? ] [ "libglib-2.0.so" cdecl add-library ] }
} cond
>>
<< double "long double" current-vocab create typedef >>
TYPEDEF: char gchar
TYPEDEF: uchar guchar
TYPEDEF: short gshort
TYPEDEF: ushort gushort
TYPEDEF: long glong
TYPEDEF: ulong gulong
TYPEDEF: int gint
TYPEDEF: uint guint
<<
int c-type clone
[ >c-bool ] >>unboxer-quot
[ c-bool> ] >>boxer-quot
object >>boxed-class
"gboolean" current-vocab create typedef
>>
TYPEDEF: char gint8
TYPEDEF: uchar guint8
TYPEDEF: short gint16
TYPEDEF: ushort guint16
TYPEDEF: int gint32
TYPEDEF: uint guint32
TYPEDEF: longlong gint64
TYPEDEF: ulonglong guint64
TYPEDEF: float gfloat
TYPEDEF: double gdouble
TYPEDEF: long ssize_t
TYPEDEF: long time_t
TYPEDEF: size_t gsize
TYPEDEF: ssize_t gssize
TYPEDEF: size_t GType
TYPEDEF: void* gpointer
TYPEDEF: void* gconstpointer
TYPEDEF: guint8 GDateDay
TYPEDEF: guint16 GDateYear
TYPEDEF: gint GPid
TYPEDEF: guint32 GQuark
TYPEDEF: gint32 GTime
TYPEDEF: glong gintptr
TYPEDEF: gint64 goffset
TYPEDEF: gulong guintptr
TYPEDEF: guint32 gunichar
TYPEDEF: guint16 gunichar2
TYPEDEF: gpointer pointer
TYPEDEF: gpointer any
GIR: vocab:glib/GLib-2.0.gir

View File

@ -1,73 +1,5 @@
! Copyright (C) 2009 Anton Gorenko. ! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien alien.c-types alien.libraries alien.syntax USING: glib.ffi ;
combinators compiler.units gir kernel system vocabs.parser words ; IN: glib
<<
"glib" {
{ [ os winnt? ] [ "libglib-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ "/opt/local/lib/libglib-2.0.0.dylib" cdecl add-library ] }
{ [ os unix? ] [ "libglib-2.0.so" cdecl add-library ] }
} cond
>>
IN: glib.ffi
<< double "long double" current-vocab create typedef >>
TYPEDEF: char gchar
TYPEDEF: uchar guchar
TYPEDEF: short gshort
TYPEDEF: ushort gushort
TYPEDEF: long glong
TYPEDEF: ulong gulong
TYPEDEF: int gint
TYPEDEF: uint guint
SYMBOL: gboolean
<<
gint c-type clone
[ >c-bool ] >>unboxer-quot
[ c-bool> ] >>boxer-quot
object >>boxed-class
gboolean typedef
>>
TYPEDEF: char gint8
TYPEDEF: uchar guint8
TYPEDEF: short gint16
TYPEDEF: ushort guint16
TYPEDEF: int gint32
TYPEDEF: uint guint32
TYPEDEF: longlong gint64
TYPEDEF: ulonglong guint64
TYPEDEF: float gfloat
TYPEDEF: double gdouble
TYPEDEF: long ssize_t
TYPEDEF: long time_t
TYPEDEF: size_t gsize
TYPEDEF: ssize_t gssize
TYPEDEF: size_t GType
TYPEDEF: void* gpointer
TYPEDEF: void* gconstpointer
TYPEDEF: guint8 GDateDay
TYPEDEF: guint16 GDateYear
TYPEDEF: gint GPid
TYPEDEF: guint32 GQuark
TYPEDEF: gint32 GTime
TYPEDEF: glong gintptr
TYPEDEF: gint64 goffset
TYPEDEF: gulong guintptr
TYPEDEF: guint32 gunichar
TYPEDEF: guint16 gunichar2
! Разобраться, почему в .gir есть такие типы
TYPEDEF: gpointer pointer
TYPEDEF: gpointer any
IN-GIR: glib vocab:glib/GLib-2.0.gir

View File

@ -0,0 +1,16 @@
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system
gir glib.ffi ;
IN: gmodule.ffi
<<
"gmodule" {
{ [ os winnt? ] [ "libgmodule-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgmodule-2.0.so" cdecl add-library ] }
} cond
>>
GIR: vocab:gmodule/GModule-2.0.gir

View File

@ -1,15 +1,5 @@
! Copyright (C) 2009 Anton Gorenko. ! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system USING: gmodule.ffi ;
gir glib ; IN: gmodule
<<
"gmodule" {
{ [ os winnt? ] [ "libgmodule-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgmodule-2.0.so" cdecl add-library ] }
} cond
>>
IN-GIR: gmodule vocab:gmodule/GModule-2.0.gir

View File

@ -0,0 +1,56 @@
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax alien.destructors alien.libraries
combinators kernel literals math system
gir glib.ffi ;
EXCLUDE: alien.c-types => pointer ;
IN: gobject.ffi
<<
"gobject" {
{ [ os winnt? ] [ "libobject-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ "/opt/local/lib/libgobject-2.0.0.dylib" cdecl add-library ] }
{ [ os unix? ] [ "libgobject-2.0.so" cdecl add-library ] }
} cond
>>
TYPEDEF: void* GSignalCMarshaller
TYPEDEF: void GStrv
TYPEDEF: gchar* gchararray
IMPLEMENT-STRUCTS: GValue ;
GIR: vocab:gobject/GObject-2.0.gir
IN: gobject.ffi
FORGET: GIOCondition
FUNCTION: void g_object_unref ( GObject* self ) ;
DESTRUCTOR: g_object_unref
TYPEDEF: GParamSpec GParam
CONSTANT: G_TYPE_INVALID $[ 0 2 shift ]
CONSTANT: G_TYPE_NONE $[ 1 2 shift ]
CONSTANT: G_TYPE_INTERFACE $[ 2 2 shift ]
CONSTANT: G_TYPE_CHAR $[ 3 2 shift ]
CONSTANT: G_TYPE_UCHAR $[ 4 2 shift ]
CONSTANT: G_TYPE_BOOLEAN $[ 5 2 shift ]
CONSTANT: G_TYPE_INT $[ 6 2 shift ]
CONSTANT: G_TYPE_UINT $[ 7 2 shift ]
CONSTANT: G_TYPE_LONG $[ 8 2 shift ]
CONSTANT: G_TYPE_ULONG $[ 9 2 shift ]
CONSTANT: G_TYPE_INT64 $[ 10 2 shift ]
CONSTANT: G_TYPE_UINT64 $[ 11 2 shift ]
CONSTANT: G_TYPE_ENUM $[ 12 2 shift ]
CONSTANT: G_TYPE_FLAGS $[ 13 2 shift ]
CONSTANT: G_TYPE_FLOAT $[ 14 2 shift ]
CONSTANT: G_TYPE_DOUBLE $[ 15 2 shift ]
CONSTANT: G_TYPE_STRING $[ 16 2 shift ]
CONSTANT: G_TYPE_POINTER $[ 17 2 shift ]
CONSTANT: G_TYPE_BOXED $[ 18 2 shift ]
CONSTANT: G_TYPE_PARAM $[ 19 2 shift ]
CONSTANT: G_TYPE_OBJECT $[ 20 2 shift ]

View File

@ -1,60 +1,5 @@
! Copyright (C) 2009 Anton Gorenko. ! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax alien.destructors USING: gobject.ffi ;
alien.libraries combinators kernel literals math system IN: gobject
gir glib glib.ffi ;
EXCLUDE: alien.c-types => pointer ;
<<
"gobject" {
{ [ os winnt? ] [ "libobject-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ "/opt/local/lib/libgobject-2.0.0.dylib" cdecl add-library ] }
{ [ os unix? ] [ "libgobject-2.0.so" cdecl add-library ] }
} cond
>>
IN: gobject.ffi
TYPEDEF: void* GSignalCMarshaller
TYPEDEF: void GStrv
! есть alias
TYPEDEF: gchar* gchararray
IMPLEMENT-STRUCTS: GValue ;
IN-GIR: gobject vocab:gobject/GObject-2.0.gir
IN: gobject.ffi
FORGET: GIOCondition
FUNCTION: void g_object_unref ( GObject* self ) ;
DESTRUCTOR: g_object_unref
! Исправление неправильного типа параметра для GtkWidget-child-notify
! (разобраться)
TYPEDEF: GParamSpec GParam
CONSTANT: G_TYPE_INVALID $[ 0 2 shift ]
CONSTANT: G_TYPE_NONE $[ 1 2 shift ]
CONSTANT: G_TYPE_INTERFACE $[ 2 2 shift ]
CONSTANT: G_TYPE_CHAR $[ 3 2 shift ]
CONSTANT: G_TYPE_UCHAR $[ 4 2 shift ]
CONSTANT: G_TYPE_BOOLEAN $[ 5 2 shift ]
CONSTANT: G_TYPE_INT $[ 6 2 shift ]
CONSTANT: G_TYPE_UINT $[ 7 2 shift ]
CONSTANT: G_TYPE_LONG $[ 8 2 shift ]
CONSTANT: G_TYPE_ULONG $[ 9 2 shift ]
CONSTANT: G_TYPE_INT64 $[ 10 2 shift ]
CONSTANT: G_TYPE_UINT64 $[ 11 2 shift ]
CONSTANT: G_TYPE_ENUM $[ 12 2 shift ]
CONSTANT: G_TYPE_FLAGS $[ 13 2 shift ]
CONSTANT: G_TYPE_FLOAT $[ 14 2 shift ]
CONSTANT: G_TYPE_DOUBLE $[ 15 2 shift ]
CONSTANT: G_TYPE_STRING $[ 16 2 shift ]
CONSTANT: G_TYPE_POINTER $[ 17 2 shift ]
CONSTANT: G_TYPE_BOXED $[ 18 2 shift ]
CONSTANT: G_TYPE_PARAM $[ 19 2 shift ]
CONSTANT: G_TYPE_OBJECT $[ 20 2 shift ]

27
basis/gst/ffi/ffi.factor Normal file
View File

@ -0,0 +1,27 @@
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax alien.libraries combinators kernel
system
gir glib.ffi gmodule.ffi gobject.ffi ;
EXCLUDE: alien.c-types => pointer ;
IN: gst.ffi
<<
"gst" {
{ [ os winnt? ] [ drop ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
} cond
>>
TYPEDEF: gpointer GstClockID
TYPEDEF: guint64 GstClockTime
TYPEDEF: gint64 GstClockTimeDiff
! Временное исправление отсутвующих типов libxml2
TYPEDEF: void* xmlNodePtr
TYPEDEF: void* xmlDocPtr
TYPEDEF: void* xmlNsPtr
GIR: vocab:gst/Gst-0.10.gir

View File

@ -1,28 +1,5 @@
! Copyright (C) 2010 Anton Gorenko. ! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax alien.libraries combinators USING: gst.ffi ;
kernel system IN: gst
gir glib glib.ffi gobject gmodule ;
EXCLUDE: alien.c-types => pointer ;
<<
"gst" {
{ [ os winnt? ] [ drop ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
} cond
>>
IN: gst.ffi
TYPEDEF: gpointer GstClockID
TYPEDEF: guint64 GstClockTime
TYPEDEF: gint64 GstClockTimeDiff
! Временное исправление отсутвующих типов libxml2
TYPEDEF: void* xmlNodePtr
TYPEDEF: void* xmlDocPtr
TYPEDEF: void* xmlNsPtr
IN-GIR: gst vocab:gst/Gst-0.10.gir

26
basis/gtk/ffi/ffi.factor Normal file
View File

@ -0,0 +1,26 @@
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax alien.libraries cairo.ffi combinators
kernel system
gir atk.ffi gdk.ffi gdk.pixbuf.ffi gio.ffi glib.ffi gmodule.ffi
gobject.ffi pango.ffi ;
EXCLUDE: alien.c-types => pointer ;
IN: gtk.ffi
<<
"gtk" {
{ [ os winnt? ] [ "libgtk-win32-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgtk-x11-2.0.so" cdecl add-library ] }
} cond
>>
TYPEDEF: void GtkAllocation
TYPEDEF: void GtkEnumValue
TYPEDEF: void GtkFlagValue
TYPEDEF: GType GtkType
IMPLEMENT-STRUCTS: GtkTreeIter ;
GIR: vocab:gtk/Gtk-2.0.gir

View File

@ -0,0 +1,18 @@
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system
gir gdk.ffi gdk.pixbuf.ffi gdk.gl.ffi gio.ffi glib.ffi
gmodule.ffi gobject.ffi gtk.ffi ;
EXCLUDE: alien.c-types => pointer ;
IN: gtk.gl.ffi
<<
"gtk.gl" {
{ [ os winnt? ] [ drop ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgtkglext-x11-1.0.so" cdecl add-library ] }
} cond
>>
GIR: vocab:gtk/gl/GtkGL-1.0.gir

View File

@ -1,16 +1,5 @@
! Copyright (C) 2010 Anton Gorenko. ! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system USING: gtk.gl.ffi ;
gir glib gobject gio gmodule gdk.pixbuf gdk gdk.gl gtk gtk.ffi ; IN: gtk.gl
EXCLUDE: alien.c-types => pointer ;
<<
"gtk.gl" {
{ [ os winnt? ] [ drop ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgtkglext-x11-1.0.so" cdecl add-library ] }
} cond
>>
IN-GIR: gtk.gl vocab:gtk/gl/GtkGL-1.0.gir

View File

@ -1,26 +1,5 @@
! Copyright (C) 2009 Anton Gorenko. ! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax alien.libraries cairo.ffi combinators USING: gtk.ffi ;
kernel system IN: gtk
gir glib glib.ffi gobject gio gmodule gdk.pixbuf gdk atk ;
EXCLUDE: alien.c-types => pointer ;
<<
"gtk" {
{ [ os winnt? ] [ "libgtk-win32-2.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ drop ] }
{ [ os unix? ] [ "libgtk-x11-2.0.so" cdecl add-library ] }
} cond
>>
IN: gtk.ffi
TYPEDEF: void GtkAllocation
TYPEDEF: void GtkEnumValue
TYPEDEF: void GtkFlagValue
TYPEDEF: GType GtkType
IMPLEMENT-STRUCTS: GtkTreeIter ;
IN-GIR: gtk vocab:gtk/Gtk-2.0.gir

View File

@ -1,7 +1,7 @@
! Copyright (C) 2010 Anton Gorenko. ! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.strings io.encodings.ascii USING: alien alien.strings io.encodings.ascii
gdk.gl gdk.gl.ffi ; gdk.gl.ffi ;
IN: opengl.gl.gtk IN: opengl.gl.gtk
: gl-function-context ( -- context ) : gl-function-context ( -- context )

View File

@ -1,27 +1,5 @@
! Copyright (C) 2010 Anton Gorenko. ! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.data alien.libraries USING: cairo.pango.ffi ;
alien.syntax cairo.ffi combinators kernel system IN: pango.cairo
gir pango pango.ffi ;
<<
"pango.cairo" {
{ [ os winnt? ] [ "libpangocairo-1.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ "/opt/local/lib/libpangocairo-1.0.0.dylib" cdecl add-library ] }
{ [ os unix? ] [ "libpangocairo-1.0.so" cdecl add-library ] }
} cond
>>
IN-GIR: pango.cairo vocab:pango/cairo/PangoCairo-1.0.gir
IN: pango.cairo.ffi
FUNCTION: void
pango_cairo_update_layout ( cairo_t* cr, PangoLayout* layout ) ;
FUNCTION: void
pango_cairo_show_layout ( cairo_t* cr, PangoLayout* layout ) ;
FUNCTION: PangoLayout*
pango_cairo_create_layout ( cairo_t* cr ) ;

View File

@ -0,0 +1,26 @@
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.libraries alien.syntax cairo.ffi
combinators kernel system
gir pango.ffi ;
IN: pango.cairo.ffi
<<
"pango.cairo" {
{ [ os winnt? ] [ "libpangocairo-1.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ "/opt/local/lib/libpangocairo-1.0.0.dylib" cdecl add-library ] }
{ [ os unix? ] [ "libpangocairo-1.0.so" cdecl add-library ] }
} cond
>>
GIR: vocab:pango/cairo/PangoCairo-1.0.gir
FUNCTION: void
pango_cairo_update_layout ( cairo_t* cr, PangoLayout* layout ) ;
FUNCTION: void
pango_cairo_show_layout ( cairo_t* cr, PangoLayout* layout ) ;
FUNCTION: PangoLayout*
pango_cairo_create_layout ( cairo_t* cr ) ;

View File

@ -0,0 +1,25 @@
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.destructors alien.libraries
alien.syntax combinators kernel system
gir glib.ffi ;
IN: pango.ffi
<<
"pango" {
{ [ os winnt? ] [ "libpango-1.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ "/opt/local/lib/libpango-1.0.0.dylib" cdecl add-library ] }
{ [ os unix? ] [ "libpango-1.0.so" cdecl add-library ] }
} cond
>>
TYPEDEF: void PangoLayoutRun ! не совсем верно
TYPEDEF: guint32 PangoGlyph
IMPLEMENT-STRUCTS: PangoRectangle ;
GIR: vocab:pango/Pango-1.0.gir
DESTRUCTOR: pango_font_description_free
DESTRUCTOR: pango_layout_iter_free

View File

@ -1,28 +1,5 @@
! Copyright (C) 2009 Anton Gorenko. ! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.destructors alien.libraries USING: pango.ffi ;
alien.syntax combinators kernel system IN: pango
gir glib glib.ffi ;
<<
"pango" {
{ [ os winnt? ] [ "libpango-1.0-0.dll" cdecl add-library ] }
{ [ os macosx? ] [ "/opt/local/lib/libpango-1.0.0.dylib" cdecl add-library ] }
{ [ os unix? ] [ "libpango-1.0.so" cdecl add-library ] }
} cond
>>
IN: pango.ffi
TYPEDEF: void PangoLayoutRun ! не совсем верно
TYPEDEF: guint32 PangoGlyph
IMPLEMENT-STRUCTS: PangoRectangle ;
IN-GIR: pango vocab:pango/Pango-1.0.gir
IN: pango.ffi
DESTRUCTOR: pango_font_description_free
DESTRUCTOR: pango_layout_iter_free

View File

@ -5,8 +5,7 @@ classes.struct combinators.short-circuit command-line destructors
io.encodings.utf8 kernel literals locals math math.bitwise io.encodings.utf8 kernel literals locals math math.bitwise
namespaces sequences strings ui ui.backend ui.clipboards ui.event-loop namespaces sequences strings ui ui.backend ui.clipboards ui.event-loop
ui.gadgets ui.gadgets.private ui.gadgets.worlds ui.gestures ui.private ui.gadgets ui.gadgets.private ui.gadgets.worlds ui.gestures ui.private
glib glib.ffi gobject gobject.ffi gtk gtk.ffi gdk gdk.ffi glib.ffi gobject.ffi gtk.ffi gdk.ffi gdk.gl.ffi gtk.gl.ffi ;
gdk.gl gtk.gl gdk.gl.ffi gtk.gl.ffi ;
IN: ui.backend.gtk IN: ui.backend.gtk
SINGLETON: gtk-ui-backend SINGLETON: gtk-ui-backend
@ -276,14 +275,14 @@ M:: gtk-ui-backend (open-window) ( world -- )
GTK_WINDOW_TOPLEVEL gtk_window_new :> win GTK_WINDOW_TOPLEVEL gtk_window_new :> win
world [ window-loc>> win swap first2 gtk_window_move ] world [ window-loc>> win swap first2 gtk_window_move ]
[ dim>> win swap first2 gtk_window_set_default_size ] bi [ dim>> win swap first2 gtk_window_set_default_size ] bi
win enable-gl drop ! сделать проверку на доступность OpenGL win enable-gl drop ! сделать проверку на доступность OpenGL
win connect-signals win connect-signals
win gtk_widget_realize win gtk_widget_realize
win world window-controls>> configure-window-controls win world window-controls>> configure-window-controls
win <window-handle> world handle<< win <window-handle> world handle<<
world win register-window world win register-window

View File

@ -4,7 +4,7 @@ USING: accessors alien.c-types alien.strings arrays assocs cache cairo
cairo.ffi classes.struct combinators destructors fonts fry cairo.ffi classes.struct combinators destructors fonts fry
init io.encodings.utf8 kernel math math.rectangles math.vectors init io.encodings.utf8 kernel math math.rectangles math.vectors
memoize namespaces sequences ui.text ui.text.private memoize namespaces sequences ui.text ui.text.private
gobject gobject.ffi pango pango.ffi pango.cairo pango.cairo.ffi ; gobject.ffi pango.ffi pango.cairo.ffi ;
IN: ui.text.pango IN: ui.text.pango
: pango>float ( n -- x ) PANGO_SCALE /f ; inline : pango>float ( n -- x ) PANGO_SCALE /f ; inline

View File

@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types alien.strings fry byte-arrays classes.struct USING: alien.c-types alien.strings fry byte-arrays classes.struct
io.encodings.utf8 kernel locals math prettyprint io.encodings.utf8 kernel locals math prettyprint
gst gst.ffi glib.ffi gobject.ffi gtk gtk.ffi ; gst.ffi glib.ffi gobject.ffi gtk.ffi ;
IN: gir.samples.lowlevel.gstreamer IN: gir.samples.lowlevel.gstreamer
! CONSTANT: uri "http://www.xiph.org/vorbis/listen/compilation-ogg-q4.ogg" ! CONSTANT: uri "http://www.xiph.org/vorbis/listen/compilation-ogg-q4.ogg"

View File

@ -1,6 +1,6 @@
! Copyright (C) 2010 Anton Gorenko. ! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.strings gtk gobject.ffi gtk.ffi io.encodings.utf8 USING: alien.strings gobject.ffi gtk.ffi io.encodings.utf8
kernel locals ; kernel locals ;
IN: gir.samples.lowlevel.hello-world IN: gir.samples.lowlevel.hello-world

View File

@ -1,7 +1,7 @@
! Copyright (C) 2010 Anton Gorenko. ! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types alien.strings byte-arrays classes.struct USING: alien.c-types alien.strings byte-arrays classes.struct
gtk glib.ffi gobject.ffi gtk.ffi io.encodings.utf8 kernel glib.ffi gobject.ffi gtk.ffi io.encodings.utf8 kernel
literals locals make math prettyprint sequences specialized-arrays literals locals make math prettyprint sequences specialized-arrays
gir.samples.lowlevel.hello-world gir.samples.lowlevel.hello-world
gir.samples.lowlevel.opengl gir.samples.lowlevel.opengl

View File

@ -1,6 +1,6 @@
! Copyright (C) 2010 Anton Gorenko. ! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.enums alien.strings gtk gobject.ffi gtk.ffi gdk.gl gtk.gl gdk.gl.ffi USING: alien.enums alien.strings gobject.ffi gtk.ffi gdk.gl.ffi
gtk.gl.ffi io.encodings.utf8 kernel locals math opengl.gl prettyprint ; gtk.gl.ffi io.encodings.utf8 kernel locals math opengl.gl prettyprint ;
IN: gir.samples.lowlevel.opengl IN: gir.samples.lowlevel.opengl