]> gitweb.factorcode.org Git - factor.git/commitdiff
gir.ffi, ui.backend.gtk, gir.samples: change enum and bitfield generation from ENUM...
authorAnton Gorenko <ex.rzrjck@gmail.com>
Fri, 18 Jun 2010 17:33:06 +0000 (23:33 +0600)
committerAnton Gorenko <ex.rzrjck@gmail.com>
Fri, 18 Jun 2010 17:33:06 +0000 (23:33 +0600)
basis/gir/ffi/ffi.factor
basis/ui/backend/gtk/gtk.factor
extra/gir/samples/lowlevel/opengl/opengl.factor

index ce33ce7c4b1ec673377957bed32fb662fe158d19..4ee7f35fd27f33853b3a8361766ab386a56f0363 100644 (file)
@@ -1,10 +1,10 @@
 ! Copyright (C) 2009 Anton Gorenko.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien alien.c-types alien.enums alien.parser arrays
-assocs classes.parser classes.struct combinators
-combinators.short-circuit definitions effects fry gir.common gir.types
-kernel locals math.parser namespaces parser quotations sequences
-sequences.generalizations vocabs.parser words words.constant ;
+USING: accessors alien alien.c-types alien.parser arrays
+classes.parser classes.struct combinators combinators.short-circuit
+definitions effects fry gir.common gir.types kernel math.parser
+namespaces parser quotations sequences sequences.generalizations words
+words.constant ;
 IN: gir.ffi
 
 : string>c-type ( str -- c-type )
@@ -78,13 +78,12 @@ IN: gir.ffi
     } case ;
 
 : define-ffi-enum ( enum -- word )
-    [ c-type>> (CREATE-C-TYPE) dup ]
     [
        members>> [
            [ c-identifier>> create-in ]
-           [ value>> ] bi 2array
-       ] map 
-    ] bi int swap define-enum ;
+           [ value>> ] bi define-constant
+       ] each 
+    ] [ c-type>> (CREATE-C-TYPE) [ int swap typedef ] keep ] bi ;
 
 : define-ffi-enums ( enums -- )
     [ define-ffi-enum ] define-each ;
@@ -102,7 +101,6 @@ IN: gir.ffi
         [ drop { } ] tri <struct-slot-spec>
     ] map ;
 
-! Сделать для всех типов создание DEFER:
 : define-ffi-record-defer ( record -- word )
     c-type>> create-in void* swap [ typedef ] keep ;
 
@@ -151,7 +149,6 @@ IN: gir.ffi
 : define-ffi-interfaces ( interfaces -- )
     [ define-ffi-interface ] define-each ;
 
-! Доделать
 : define-ffi-interface-content ( interface -- )
     {
         [ methods>> define-ffi-functions ]
index 3d9689f717a0360a064a5e3a8df5b51c69a0d468..285b96a7c239ffa6fa6b65db2e86c32fb40ccf94 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2010 Anton Gorenko, Philipp Brüschweiler.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien.accessors alien.c-types alien.data alien.enums
+USING: accessors alien.accessors alien.c-types alien.data
 alien.strings arrays assocs classes.struct command-line destructors
 gdk.ffi gdk.gl.ffi glib.ffi gobject.ffi gtk.ffi gtk.gl.ffi
 io.backend.unix.multiplexers io.encodings.utf8 io.thread kernel libc
@@ -28,26 +28,26 @@ TUPLE: gtk-clipboard handle ;
 
 C: <gtk-clipboard> gtk-clipboard
 
-PIXEL-FORMAT-ATTRIBUTE-TABLE: gl-config-attribs { $[ GDK_GL_USE_GL enum>number GDK_GL_RGBA enum>number ] } H{
-    { double-buffered { $[ GDK_GL_DOUBLEBUFFER enum>number ] } }
-    { stereo { $[ GDK_GL_STEREO enum>number ] } }
-    ! { offscreen { $[ GDK_GL_DRAWABLE_TYPE enum>number ] 2 } }
-    ! { fullscreen { $[ GDK_GL_DRAWABLE_TYPE enum>number ] 1 } }
-    ! { windowed { $[ GDK_GL_DRAWABLE_TYPE enum>number ] 1 } }
-    { color-bits { $[ GDK_GL_BUFFER_SIZE enum>number ] } }
-    { red-bits { $[ GDK_GL_RED_SIZE enum>number ] } }
-    { green-bits { $[ GDK_GL_GREEN_SIZE enum>number ] } }
-    { blue-bits { $[ GDK_GL_BLUE_SIZE enum>number ] } }
-    { alpha-bits { $[ GDK_GL_ALPHA_SIZE enum>number ] } }
-    { accum-red-bits { $[ GDK_GL_ACCUM_RED_SIZE enum>number ] } }
-    { accum-green-bits { $[ GDK_GL_ACCUM_GREEN_SIZE enum>number ] } }
-    { accum-blue-bits { $[ GDK_GL_ACCUM_BLUE_SIZE enum>number ] } }
-    { accum-alpha-bits { $[ GDK_GL_ACCUM_ALPHA_SIZE enum>number ] } }
-    { depth-bits { $[ GDK_GL_DEPTH_SIZE enum>number ] } }
-    { stencil-bits { $[ GDK_GL_STENCIL_SIZE enum>number ] } }
-    { aux-buffers { $[ GDK_GL_AUX_BUFFERS enum>number ] } }
-    { sample-buffers { $[ GDK_GL_SAMPLE_BUFFERS enum>number ] } }
-    { samples { $[ GDK_GL_SAMPLES enum>number ] } }
+PIXEL-FORMAT-ATTRIBUTE-TABLE: gl-config-attribs ${ GDK_GL_USE_GL GDK_GL_RGBA } H{
+    { double-buffered ${ GDK_GL_DOUBLEBUFFER } }
+    { stereo ${ GDK_GL_STEREO } }
+    ! { offscreen ${ GDK_GL_DRAWABLE_TYPE 2 } }
+    ! { fullscreen ${ GDK_GL_DRAWABLE_TYPE 1 } }
+    ! { windowed ${ GDK_GL_DRAWABLE_TYPE 1 } }
+    { color-bits ${ GDK_GL_BUFFER_SIZE } }
+    { red-bits ${ GDK_GL_RED_SIZE } }
+    { green-bits ${ GDK_GL_GREEN_SIZE } }
+    { blue-bits ${ GDK_GL_BLUE_SIZE } }
+    { alpha-bits ${ GDK_GL_ALPHA_SIZE } }
+    { accum-red-bits ${ GDK_GL_ACCUM_RED_SIZE } }
+    { accum-green-bits ${ GDK_GL_ACCUM_GREEN_SIZE } }
+    { accum-blue-bits ${ GDK_GL_ACCUM_BLUE_SIZE } }
+    { accum-alpha-bits ${ GDK_GL_ACCUM_ALPHA_SIZE } }
+    { depth-bits ${ GDK_GL_DEPTH_SIZE } }
+    { stencil-bits ${ GDK_GL_STENCIL_SIZE } }
+    { aux-buffers ${ GDK_GL_AUX_BUFFERS } }
+    { sample-buffers ${ GDK_GL_SAMPLE_BUFFERS } }
+    { samples ${ GDK_GL_SAMPLES } }
 }
 
 M: gtk-ui-backend (make-pixel-format)
@@ -62,7 +62,7 @@ M: gtk-ui-backend (pixel-format-attribute)
     with-out-parameters ;
 
 CONSTANT: events-mask
-    {
+    flags{
         GDK_POINTER_MOTION_MASK
         GDK_POINTER_MOTION_HINT_MASK
         GDK_ENTER_NOTIFY_MASK
@@ -76,40 +76,40 @@ CONSTANT: events-mask
 
 CONSTANT: modifiers
     {
-        { S+ $[ GDK_SHIFT_MASK enum>number ] }
-        { C+ $[ GDK_CONTROL_MASK enum>number ] }
-        { A+ $[ GDK_MOD1_MASK enum>number ] }
+        { S+ $ GDK_SHIFT_MASK }
+        { C+ $ GDK_CONTROL_MASK }
+        { A+ $ GDK_MOD1_MASK }
     }
 
 CONSTANT: action-key-codes
     H{
-        ${ GDK_BackSpace "BACKSPACE" }
-        ${ GDK_Tab "TAB" }
-        ${ GDK_Return "RET" }
-        ${ GDK_KP_Enter "ENTER" }
-        ${ GDK_Escape "ESC" }
-        ${ GDK_Delete "DELETE" }
-        ${ GDK_Home "HOME" }
-        ${ GDK_Left "LEFT" }
-        ${ GDK_Up "UP" }
-        ${ GDK_Right "RIGHT" }
-        ${ GDK_Down "DOWN" }
-        ${ GDK_Page_Up "PAGE_UP" }
-        ${ GDK_Page_Down "PAGE_DOWN" }
-        ${ GDK_End "END" }
-        ${ GDK_Begin "BEGIN" }
-        ${ GDK_F1 "F1" }
-        ${ GDK_F2 "F2" }
-        ${ GDK_F3 "F3" }
-        ${ GDK_F4 "F4" }
-        ${ GDK_F5 "F5" }
-        ${ GDK_F6 "F6" }
-        ${ GDK_F7 "F7" }
-        ${ GDK_F8 "F8" }
-        ${ GDK_F9 "F9" }
-        ${ GDK_F10 "F10" }
-        ${ GDK_F11 "F11" }
-        ${ GDK_F12 "F12" }
+        { $ GDK_BackSpace "BACKSPACE" }
+        { $ GDK_Tab "TAB" }
+        { $ GDK_Return "RET" }
+        { $ GDK_KP_Enter "ENTER" }
+        { $ GDK_Escape "ESC" }
+        { $ GDK_Delete "DELETE" }
+        { $ GDK_Home "HOME" }
+        { $ GDK_Left "LEFT" }
+        { $ GDK_Up "UP" }
+        { $ GDK_Right "RIGHT" }
+        { $ GDK_Down "DOWN" }
+        { $ GDK_Page_Up "PAGE_UP" }
+        { $ GDK_Page_Down "PAGE_DOWN" }
+        { $ GDK_End "END" }
+        { $ GDK_Begin "BEGIN" }
+        { $ GDK_F1 "F1" }
+        { $ GDK_F2 "F2" }
+        { $ GDK_F3 "F3" }
+        { $ GDK_F4 "F4" }
+        { $ GDK_F5 "F5" }
+        { $ GDK_F6 "F6" }
+        { $ GDK_F7 "F7" }
+        { $ GDK_F8 "F8" }
+        { $ GDK_F9 "F9" }
+        { $ GDK_F10 "F10" }
+        { $ GDK_F11 "F11" }
+        { $ GDK_F12 "F12" }
     }
 
 : event-modifiers ( event -- seq )
@@ -123,10 +123,10 @@ CONSTANT: action-key-codes
 
 : scroll-direction ( event -- pair )
     direction>> {
-        ${ GDK_SCROLL_UP { 0 -1 } }
-        ${ GDK_SCROLL_DOWN { 0 1 } }
-        ${ GDK_SCROLL_LEFT { -1 0 } }
-        ${ GDK_SCROLL_RIGHT { 1 0 } }
+        { $ GDK_SCROLL_UP { 0 -1 } }
+        { $ GDK_SCROLL_DOWN { 0 1 } }
+        { $ GDK_SCROLL_LEFT { -1 0 } }
+        { $ GDK_SCROLL_RIGHT { 1 0 } }
     } at ;
 
 : mouse-event>gesture ( event -- modifiers button loc )
@@ -215,7 +215,7 @@ CONSTANT: action-key-codes
      yield t ;
 
 CONSTANT: poll-fd-events
-    {
+    flags{
         G_IO_IN
         G_IO_OUT
         G_IO_PRI
@@ -227,7 +227,7 @@ CONSTANT: poll-fd-events
 : create-poll-fd ( -- poll-fd )
     GPollFD malloc-struct &free
         mx get fd>> >>fd
-        poll-fd-events [ enum>number ] [ bitor ] map-reduce >>events ;
+        poll-fd-events >>events ;
 
 : init-io-event-source ( -- )
     GSourceFuncs malloc-struct &free
@@ -285,8 +285,7 @@ M: gtk-ui-backend (with-ui)
     f connect-signal-with-data ;
 
 :: connect-signals ( win -- )
-    win events-mask [ enum>number ] [ bitor ] map-reduce
-    gtk_widget_add_events
+    win events-mask gtk_widget_add_events
     
     win "expose-event" [ on-expose yield ]
     GtkWidget:expose-event connect-signal
@@ -392,9 +391,9 @@ M: editor get-cursor-loc&dim
     2drop window handle>> im-context>>
     [ gtk_im_context_focus_out ] [ gtk_im_context_reset ] bi f ;
 
-: im-on-destroy ( sender user-data -- result )
+: im-on-destroy ( sender user-data -- )
     nip [ f gtk_im_context_set_client_window ]
-    [ g_object_unref ] bi ;
+    [ g_object_unref ] bi ;
 
 ! for testing only
 
@@ -442,20 +441,20 @@ editor "input-method" f  {
 CONSTANT: window-controls>decor-flags
     H{
         { close-button 0 }
-        { minimize-button $[ GDK_DECOR_MINIMIZE enum>number ] }
-        { maximize-button $[ GDK_DECOR_MAXIMIZE enum>number ] }
-        { resize-handles $[ GDK_DECOR_RESIZEH enum>number ] }
-        { small-title-bar $[ GDK_DECOR_TITLE enum>number ] }
-        { normal-title-bar $[ GDK_DECOR_TITLE enum>number ] }
+        { minimize-button $ GDK_DECOR_MINIMIZE }
+        { maximize-button $ GDK_DECOR_MAXIMIZE }
+        { resize-handles $ GDK_DECOR_RESIZEH }
+        { small-title-bar $ GDK_DECOR_TITLE }
+        { normal-title-bar $ GDK_DECOR_TITLE }
         { textured-background 0 }
     }
     
 CONSTANT: window-controls>func-flags
     H{
-        { close-button $[ GDK_FUNC_CLOSE enum>number ] }
-        { minimize-button $[ GDK_FUNC_MINIMIZE enum>number ] }
-        { maximize-button $[ GDK_FUNC_MAXIMIZE enum>number ] }
-        { resize-handles $[ GDK_FUNC_RESIZE enum>number ] }
+        { close-button $ GDK_FUNC_CLOSE }
+        { minimize-button $ GDK_FUNC_MINIMIZE }
+        { maximize-button $ GDK_FUNC_MAXIMIZE }
+        { resize-handles $ GDK_FUNC_RESIZE }
         { small-title-bar 0 }
         { normal-title-bar 0 }
         { textured-background 0 }
@@ -469,17 +468,17 @@ CONSTANT: window-controls>func-flags
     ] [
         [ gtk_widget_get_window ] dip
         window-controls>decor-flags symbols>flags
-        GDK_DECOR_BORDER enum>number bitor gdk_window_set_decorations
+        GDK_DECOR_BORDER bitor gdk_window_set_decorations
     ] [
         [ gtk_widget_get_window ] dip
         window-controls>func-flags symbols>flags
-        GDK_FUNC_MOVE enum>number bitor gdk_window_set_functions
+        GDK_FUNC_MOVE bitor gdk_window_set_functions
     ] 2tri ;
 
 : setup-gl ( world -- ? )
     [
         [ handle>> window>> ] [ handle>> ] bi*
-        f t GDK_GL_RGBA_TYPE enum>number gtk_widget_set_gl_capability
+        f t GDK_GL_RGBA_TYPE gtk_widget_set_gl_capability
     ] with-world-pixel-format ;
 
 : auto-position ( win loc -- )
index 304549d321e5a7347c81955ed384543567bfa249..52d658c0b8f8f9c224dfa68af3228bdd9e057916 100644 (file)
@@ -1,10 +1,10 @@
 ! Copyright (C) 2010 Anton Gorenko.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien.enums alien.strings gobject.ffi gtk.ffi gdk.gl.ffi
-gtk.gl.ffi io.encodings.utf8 kernel locals math opengl.gl prettyprint ;
+USING: alien.strings gdk.gl.ffi gobject.ffi gtk.ffi gtk.gl.ffi
+io.encodings.utf8 kernel locals opengl.gl ;
 IN: gir.samples.lowlevel.opengl
 
-! This sample based on
+! This sample is based on
 ! http://code.valaide.org/content/simple-opengl-sample-using-gtkglext
 
 :: on-configure ( sender event user-data -- result )
@@ -49,10 +49,9 @@ IN: gir.samples.lowlevel.opengl
     [ 200 200 gtk_window_set_default_size ]
     [ GTK_WIN_POS_CENTER gtk_window_set_position ] tri
 
-    GDK_GL_MODE_RGBA enum>number
-    gdk_gl_config_new_by_mode :> gl-config
+    GDK_GL_MODE_RGBA gdk_gl_config_new_by_mode :> gl-config
     
-    window gl-config f t GDK_GL_RGBA_TYPE enum>number
+    window gl-config f t GDK_GL_RGBA_TYPE
     gtk_widget_set_gl_capability drop
 
     window "configure-event" utf8 string>alien