summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/efl/ecore.rb23
-rw-r--r--spec/ecore_spec.rb23
2 files changed, 40 insertions, 6 deletions
diff --git a/lib/efl/ecore.rb b/lib/efl/ecore.rb
index 5583a5a..c1599aa 100644
--- a/lib/efl/ecore.rb
+++ b/lib/efl/ecore.rb
@@ -8,17 +8,26 @@ module EFL
#
extend FFI::Library
#
- callback:ecore_select_function, [ :int, :pointer, :pointer, :pointer, :pointer], :int
+ callback :ecore_pipe_cb, [:pointer, :pointer, :int], :void
+ callback :ecore_select_function, [:int, :pointer, :pointer, :pointer, :pointer], :int
#
ffi_lib 'ecore'
- functions = [
- [ :ecore_init, [ ], :int ],
- [ :ecore_shutdown, [], :int ],
+ [
+ # http://docs.enlightenment.org/auto/ecore/group__Ecore__Group.html
+ [ :ecore_init, [ ], :int],
+ [ :ecore_shutdown, [], :int],
+ [ :ecore_pipe_add, [:ecore_pipe_cb, :pointer], :pointer],
+ [ :ecore_pipe_del, [:pointer], :pointer],
+ [ :ecore_pipe_read_close, [:pointer], :void],
+ [ :ecore_pipe_write_close, [:pointer], :void],
+ [ :ecore_pipe_write, [:pointer, :pointer, :int], :bool],
+ # http://docs.enlightenment.org/auto/ecore/group__Ecore__Main__Loop__Group.html
[ :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
@@ -30,6 +39,12 @@ module EFL
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
diff --git a/spec/ecore_spec.rb b/spec/ecore_spec.rb
index e1260fc..8d7f4bf 100644
--- a/spec/ecore_spec.rb
+++ b/spec/ecore_spec.rb
@@ -20,8 +20,27 @@ describe EFL::ECORE do
end
#
it "should run a single iteration of the mainloop" do
- ECORE.init.should eql 1
+ ECORE.init
ECORE.main_loop_iterate
- ECORE.shutdown.should eql 0
+ ECORE.shutdown
+ end
+ #
+ it 'should write and read data from pipe' do
+ ECORE.init
+ cb = Proc.new do |data,buffer,bytes|
+ data.read_string.should eql 'none'
+ buffer.read_string.should eql 'hello world'
+ bytes.should eql 12
+ end
+ data = FFI::MemoryPointer.from_string("none")
+ pipe = ECORE.pipe_add cb, data
+ buffer = FFI::MemoryPointer.new(:string,128)
+ buffer.write_string 'hello world'
+ ECORE.pipe_write pipe, buffer, 12
+ ECORE.main_loop_iterate
+ ECORE.pipe_read_close pipe
+ ECORE.pipe_write_close pipe
+ ECORE.pipe_del pipe
+ ECORE.shutdown
end
end