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.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries alien.syntax combinators kernel
system
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
USING: atk.ffi ;
IN: atk

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.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.destructors alien.syntax alien.libraries cairo.ffi
combinators kernel system
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
USING: gdk.ffi ;
IN: gdk

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.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.libraries combinators kernel
system vocabs.parser words
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
USING: gdk.gl.ffi ;
IN: gdk.gl

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.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system
gir glib gobject gio gmodule ;
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
USING: gdk.pixbuf.ffi ;
IN: gdk.pixbuf

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.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system
gir glib gobject ;
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
USING: gio.ffi ;
IN: gio

View File

@ -7,9 +7,6 @@ CONSTANT: ffi-vocab "ffi"
SYMBOL: current-lib
SYMBOL: lib-aliases
lib-aliases [ H{ } ] initialize
SYMBOL: type-infos
type-infos [ H{ } ] initialize
@ -18,6 +15,3 @@ aliases [ H{ } ] initialize
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 )
{
[ return>> c-type>> string>c-type ]
[ drop current-lib get ]
[ drop current-lib get-global ]
[ identifier>> ]
[ parameters>> [ c-type>> string>c-type ] map ]
[ varargs?>> [ void* suffix ] when ]
@ -61,7 +61,7 @@ IN: gir.ffi
[ void* swap typedef ] keep dup
] keep
[ 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 ;
: define-ffi-signals ( signals class -- )
@ -161,7 +161,7 @@ IN: gir.ffi
[ define-ffi-interface-content ] each ;
: get-type-invoker ( name -- quot )
[ "GType" current-lib get ] dip
[ "GType" current-lib get-global ] dip
{ } \ alien-invoke 5 narray >quotation ;
: define-ffi-class ( class -- word )
@ -211,11 +211,6 @@ IN: gir.ffi
: define-ffi-aliases ( aliases -- )
[ 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 -- )
{
[ aliases>> define-ffi-aliases ]
@ -238,6 +233,5 @@ IN: gir.ffi
} cleave ;
: define-ffi-repository ( repository -- )
[ prepare-vocab ]
[ namespace>> define-ffi-namespace ] bi ;
namespace>> define-ffi-namespace ;

View File

@ -1,7 +1,7 @@
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
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
: with-child-vocab ( name quot -- )
@ -9,20 +9,18 @@ IN: gir
[ swap "." glue set-current-vocab call ] keep
set-current-vocab ; inline
:: define-gir-vocab ( vocab-name file-name -- )
:: define-gir-vocab ( file-name -- )
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
{
[
namespace>> name>> vocab-name swap
lib-aliases get set-at
]
[ ffi-vocab [ define-ffi-repository ] with-child-vocab ]
[ define-ffi-repository ]
} cleave
f implement-structs set-global ;
SYNTAX: IN-GIR: scan scan define-gir-vocab ;
SYNTAX: GIR: scan define-gir-vocab ;
SYNTAX: IMPLEMENT-STRUCTS:
";" parse-tokens implement-structs set-global ;

View File

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

View File

@ -132,5 +132,5 @@ PREDICATE: interface-type < type get-type-info interface-info? ;
dup {
[ namespace>> ] [ simple-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.
! 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 ;
<<
"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
USING: glib.ffi ;
IN: glib

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.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system
gir glib ;
<<
"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
USING: gmodule.ffi ;
IN: gmodule

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.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax alien.destructors
alien.libraries combinators kernel literals math system
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 ]
USING: gobject.ffi ;
IN: gobject

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.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax alien.libraries combinators
kernel system
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
USING: gst.ffi ;
IN: gst

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.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.libraries combinators kernel system
gir glib gobject gio gmodule gdk.pixbuf gdk gdk.gl gtk gtk.ffi ;
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
USING: gtk.gl.ffi ;
IN: gtk.gl

View File

@ -1,26 +1,5 @@
! 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 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
USING: gtk.ffi ;
IN: gtk

View File

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

View File

@ -1,27 +1,5 @@
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.data alien.libraries
alien.syntax cairo.ffi combinators kernel system
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 ) ;
USING: cairo.pango.ffi ;
IN: pango.cairo

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.
! 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 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
USING: pango.ffi ;
IN: pango

View File

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

View File

@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types alien.strings fry byte-arrays classes.struct
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
! CONSTANT: uri "http://www.xiph.org/vorbis/listen/compilation-ogg-q4.ogg"

View File

@ -1,6 +1,6 @@
! Copyright (C) 2010 Anton Gorenko.
! 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 ;
IN: gir.samples.lowlevel.hello-world

View File

@ -1,7 +1,7 @@
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
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
gir.samples.lowlevel.hello-world
gir.samples.lowlevel.opengl

View File

@ -1,6 +1,6 @@
! Copyright (C) 2010 Anton Gorenko.
! 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 ;
IN: gir.samples.lowlevel.opengl