summaryrefslogtreecommitdiffstats
path: root/lib/e17
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2011-04-14 08:01:38 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2011-04-14 08:01:38 +0200
commit350843476bf1156881a0dd45131f5f6e4efee77f (patch)
tree487f02ccb4ea66551e48edda143ebe34f088dae8 /lib/e17
parent6a98ff745ba0e8ddb71375396465b5add8e736c9 (diff)
downloadffi-efl-350843476bf1156881a0dd45131f5f6e4efee77f.zip
ffi-efl-350843476bf1156881a0dd45131f5f6e4efee77f.tar.gz
update ecore, use FFIHelper
Diffstat (limited to 'lib/e17')
-rw-r--r--lib/e17/ecore.rb54
1 files changed, 25 insertions, 29 deletions
diff --git a/lib/e17/ecore.rb b/lib/e17/ecore.rb
index 12c505c..95a6d04 100644
--- a/lib/e17/ecore.rb
+++ b/lib/e17/ecore.rb
@@ -1,20 +1,23 @@
#! /usr/bin/env ruby
# -*- coding: UTF-8 -*-
#
-require 'ffi'
+require 'e17/ffi_helper'
#
module E17
module ECORE
#
+ extend FFIHelper
extend FFI::Library
#
+ ffi_lib 'ecore'
+ #
callback :ecore_pipe_cb, [:pointer, :pointer, :int], :void
callback :ecore_select_function, [:int, :pointer, :pointer, :pointer, :pointer], :int
+ callback :ecore_fd_prep_cb, [:pointer, :pointer], :void
#
- ffi_lib 'ecore'
- [
+ fcts = [
# http://docs.enlightenment.org/auto/ecore/group__Ecore__Group.html
- [ :ecore_init, [ ], :int],
+ [ :ecore_init, [], :int],
[ :ecore_shutdown, [], :int],
[ :ecore_pipe_add, [:ecore_pipe_cb, :pointer], :pointer],
[ :ecore_pipe_del, [:pointer], :pointer],
@@ -25,33 +28,26 @@ module E17
[ :ecore_main_loop_iterate, [], :void],
[ :ecore_main_loop_begin, [], :void],
[ :ecore_main_loop_quit, [], :void],
- [ :ecore_main_loop_select_func_set, [], :void], # TODO spec
- [ :ecore_main_loop_select_func_get, [], :void], # TODO spec
-# EAPI void ecore_main_fd_handler_prepare_callback_set (Ecore_Fd_Handler *fd_handler, Ecore_Fd_Prep_Cb func, const void *data) # TODO
- ].each do |func|
- begin
- attach_function *func
- rescue Object => e
- puts "Could not attach #{func} #{e.message}"
- end
- end
+ [ :ecore_main_loop_select_func_set, [:ecore_select_function], :void], # TODO spec
+ [ :ecore_main_loop_select_func_get, [], :ecore_select_function], # TODO spec
+ [ :ecore_main_fd_handler_prepare_callback_set, [:pointer, :ecore_fd_prep_cb, :pointer], :void], # TODO spec
+ ]
#
- class << self
- alias init ecore_init
- alias shutdown ecore_shutdown
- alias pipe_add ecore_pipe_add
- alias pipe_del ecore_pipe_del
- alias pipe_read_close ecore_pipe_read_close
- alias pipe_write_close ecore_pipe_write_close
- alias pipe_write ecore_pipe_write
- #
- alias main_loop_iterate ecore_main_loop_iterate
- alias main_loop_begin ecore_main_loop_begin
- alias main_loop_quit ecore_main_loop_quit
- alias main_loop_select_func_set ecore_main_loop_select_func_set
- alias main_loop_select_func_get ecore_main_loop_select_func_get
- end
+ attach_fcts fcts
+ #
+ create_aliases 'ecore_'.length, fcts
#
+ class EcorePipe
+ def initialize cb, data
+ @ptr = ECORE.ecore_pipe_add cb, data
+ end
+ def del; ECORE.ecore_pipe_del @ptr; end
+ def read_close; ECORE.ecore_pipe_read_close @ptr; end
+ def write_close; ECORE.ecore_pipe_write_close @ptr; end
+ def write data
+ ECORE.ecore_pipe_write @ptr, FFI::MemoryPointer.from_string(data.to_s), data.to_s.length+1
+ end
+ end
end
end
#