diff options
Diffstat (limited to 'lib/e17')
-rw-r--r-- | lib/e17/ecore.rb | 58 | ||||
-rw-r--r-- | lib/e17/ecore/event.rb | 59 | ||||
-rw-r--r-- | lib/e17/edje.rb | 31 | ||||
-rw-r--r-- | lib/e17/eet.rb | 131 | ||||
-rw-r--r-- | lib/e17/eina.rb | 31 | ||||
-rw-r--r-- | lib/e17/evas.rb | 46 |
6 files changed, 356 insertions, 0 deletions
diff --git a/lib/e17/ecore.rb b/lib/e17/ecore.rb new file mode 100644 index 0000000..12c505c --- /dev/null +++ b/lib/e17/ecore.rb @@ -0,0 +1,58 @@ +#! /usr/bin/env ruby +# -*- coding: UTF-8 -*- +# +require 'ffi' +# +module E17 + module ECORE + # + extend FFI::Library + # + callback :ecore_pipe_cb, [:pointer, :pointer, :int], :void + callback :ecore_select_function, [:int, :pointer, :pointer, :pointer, :pointer], :int + # + ffi_lib 'ecore' + [ + # 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 + rescue Object => e + puts "Could not attach #{func} #{e.message}" + end + end + # + 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 + # + end +end +# +# EOF diff --git a/lib/e17/ecore/event.rb b/lib/e17/ecore/event.rb new file mode 100644 index 0000000..e536875 --- /dev/null +++ b/lib/e17/ecore/event.rb @@ -0,0 +1,59 @@ +#! /usr/bin/env ruby +# -*- coding: UTF-8 -*- +# +require 'ffi' +# +module E17 + module ECORE + # + extend FFI::Library + # + EVENT_NONE = 0 + EVENT_SIGNAL_USER = 1 # User signal event + EVENT_SIGNAL_HUP = 2 # Hup signal event + EVENT_SIGNAL_EXIT = 3 # Exit signal event + EVENT_SIGNAL_POWER = 4 # Power signal event + EVENT_SIGNAL_REALTIME = 5 # Realtime signal event + EVENT_COUNT = 6 + callback :ecore_event_handler_cb, [:pointer, :int, :pointer], :bool + callback :ecore_end_cb, [:pointer, :pointer], :void + callback :ecore_data_cb, [:pointer], :pointer + callback :ecore_filter_cb, [:pointer, :pointer, :int, :pointer], :bool + # + ffi_lib 'ecore' + functions = [ + [ :ecore_event_handler_add, [:int, :ecore_event_handler_cb, :pointer], :pointer ], + [ :ecore_event_handler_del, [:pointer], :void ], + [ :ecore_event_add, [:int, :pointer, :ecore_end_cb, :pointer], :pointer ], + [ :ecore_event_del, [:pointer], :void ], + [ :ecore_event_handler_data_get, [:pointer], :pointer ], + [ :ecore_event_handler_data_set, [:pointer,:pointer], :void ], + [ :ecore_event_type_new, [], :int ], + [ :ecore_event_filter_add, [:ecore_data_cb, :ecore_filter_cb, :ecore_end_cb, :pointer], :pointer ], + [ :ecore_event_filter_del, [:pointer], :void ], + [ :ecore_event_current_type_get, [], :int ], + [ :ecore_event_current_event_get, [], :pointer], + ].each do |func| + begin + attach_function *func + rescue Object => e + puts "Could not attach #{func} #{e.message}" + end + end + # + class << self + alias event_handler_add ecore_event_handler_add + alias event_handler_del ecore_event_handler_del + alias event_add ecore_event_add + alias event_del ecore_event_del + alias event_handler_data_get ecore_event_handler_data_get + alias event_handler_data_set ecore_event_handler_data_set + alias event_type_new ecore_event_type_new + alias event_current_type_get ecore_event_current_type_get + alias event_current_event_get ecore_event_current_event_get + end + # + end +end +# +# EOF diff --git a/lib/e17/edje.rb b/lib/e17/edje.rb new file mode 100644 index 0000000..4abeb0b --- /dev/null +++ b/lib/e17/edje.rb @@ -0,0 +1,31 @@ +#! /usr/bin/env ruby +# -*- coding: UTF-8 -*- +# +require 'ffi' +# +module E17 + module EDJE + # + extend FFI::Library + # + ffi_lib 'edje' + [ + [ :edje_init, [], :int], + [ :edje_shutdown, [], :int], + ].each do |func| + begin + attach_function *func + rescue Object => e + puts "Could not attach #{func} #{e.message}" + end + end + # + class << self + alias init edje_init + alias shutdown edje_shutdown + end + # + end +end +# +# EOF diff --git a/lib/e17/eet.rb b/lib/e17/eet.rb new file mode 100644 index 0000000..929a0f8 --- /dev/null +++ b/lib/e17/eet.rb @@ -0,0 +1,131 @@ +#! /usr/bin/env ruby +# -*- coding: UTF-8 -*- +# +require 'ffi' +# +module E17 + module EET + # + extend FFI::Library + # + ffi_lib 'eet' + [ + [ :eet_init, [], :int], + [ :eet_shutdown, [], :int], + [ :eet_clearcache, [], :void], + [ :eet_open, [:string, :int], :pointer], + [ :eet_mode_get, [:pointer], :int], + [ :eet_close, [:pointer], :int], + [ :eet_write, [:pointer, :string, :pointer, :int, :int], :int], + [ :eet_read, [:pointer, :string, :pointer], :pointer], + ].each do |func| + begin + attach_function *func + rescue Object => e + puts "Could not attach #{func} #{e.message}" + end + end + # + FILE_MODE_INVALID = -1 + FILE_MODE_READ = 0 + FILE_MODE_WRITE = 1 + FILE_MODE_READ_WRITE = 2 + # + class << self + # + alias init eet_init + alias shutdown eet_shutdown + alias clearcache eet_clearcache + # + def open path, mode=FILE_MODE_READ, &blk + if blk + f = eet_open path, mode + raise Exception.new "Unable to open file #{path}" if f.nil? + yield EETFile.new f + eet_close f + else + f = eet_open path, mode + return EETFile.new f unless f.nil? + end + end + end + # + class EETFile + # + def initialize ptr + @ptr=ptr + end + private :initialize + # + def close + EET.eet_close @ptr + @ptr=nil + end + # + def mode_get + EET.eet_mode_get @ptr + end + # + def write key, data, compress=false + EET.eet_write @ptr, key, FFI::MemoryPointer.from_string(data), data.bytesize, ( compress ? 1 : 0 ) + end + # + def read key + ptr = FFI::MemoryPointer.new(:int) + data = EET.eet_read @ptr, key, ptr + s = ptr.read_int + ptr.free + return nil if s==0 + ( data.null? ? nil : data.read_string[0..s-1] ) + end + # + end + # + class Error < Exception + ERROR_NONE=0 + ERROR_BAD_OBJECT=1 + ERROR_EMPTY=2 + ERROR_NOT_WRITABLE=3 + ERROR_OUT_OF_MEMORY=4 + ERROR_WRITE_ERROR=5 + ERROR_WRITE_ERROR_FILE_TOO_BIG=6 + ERROR_WRITE_ERROR_IO_ERROR=7 + ERROR_WRITE_ERROR_OUT_OF_SPACE=8 + ERROR_WRITE_ERROR_FILE_CLOSED=9 + ERROR_MMAP_FAILED=10 + ERROR_X509_ENCODING_FAILED=11 + ERROR_SIGNATURE_FAILED=12 + ERROR_INVALID_SIGNATURE=13 + ERROR_NOT_SIGNED=14 + ERROR_NOT_IMPLEMENTED=15 + ERROR_PRNG_NOT_SEEDED=16 + ERROR_ENCRYPT_FAILED=17 + ERROR_DECRYPT_FAILED=18 + # + MSGS = { + 0=>'No error, it\'s all fine!', + 1=>' Given object or handle is NULL or invalid', + 2=>'There was nothing to do', + 3=>'Could not write to file or fine is #FILE_MODE_READ', + 4=>'Could not allocate memory', + 5=>'Failed to write data to destination', + 6=>'Failed to write file since it is too big', + 7=>'Failed to write since generic Input/Output error', + 8=>'Failed to write due out of space', + 9=>'Failed to write because file was closed', + 10=>'Could not mmap file', + 11=>'Could not encode using X509', + 12=>'Could not validate signature', + 13=>'Signature is invalid', + 14=>'File or contents are not signed', + 15=>'Function is not implemented', + 16=>'Could not introduce random seed', + 17=>'Could not encrypt contents', + 18=>'Could not decrypt contents', + } + # + end + end +end +# +# EOF diff --git a/lib/e17/eina.rb b/lib/e17/eina.rb new file mode 100644 index 0000000..bdb3522 --- /dev/null +++ b/lib/e17/eina.rb @@ -0,0 +1,31 @@ +#! /usr/bin/env ruby +# -*- coding: UTF-8 -*- +# +require 'ffi' +# +module E17 + module EINA + # + extend FFI::Library + # + ffi_lib 'eina' + [ + [ :eina_init, [], :int], + [ :eina_shutdown, [], :int], + ].each do |func| + begin + attach_function *func + rescue Object => e + puts "Could not attach #{func} #{e.message}" + end + end + # + class << self + alias init eina_init + alias shutdown eina_shutdown + end + # + end +end +# +# EOF diff --git a/lib/e17/evas.rb b/lib/e17/evas.rb new file mode 100644 index 0000000..7a8d488 --- /dev/null +++ b/lib/e17/evas.rb @@ -0,0 +1,46 @@ +#! /usr/bin/env ruby +# -*- coding: UTF-8 -*- +# +require 'ffi' +# +module E17 + module EVAS + # + extend FFI::Library + # + callback :evas_async_events_put_cb, [:pointer, :int, :pointer], :void + # + ffi_lib 'evas' + [ + # http://docs.enlightenment.org/auto/evas/group__Evas__Group.html + [ :evas_init, [], :int], + [ :evas_shutdown, [], :int], + [ :evas_alloc_error, [], :int], + [ :evas_async_events_fd_get, [], :int], + [ :evas_async_events_process, [], :int], + [ :evas_async_events_put, [:pointer, :int, :pointer, :evas_async_events_put_cb], :bool], + ].each do |func| + begin + attach_function *func + rescue Object => e + puts "Could not attach #{func} #{e.message}" + end + end + # + ALLOC_ERROR_NONE = 0 + ALLOC_ERROR_FATAL = 1 + ALLOC_ERROR_RECOVERED = 2 + # + class << self + alias init evas_init + alias shutdown evas_shutdown + alias alloc_error evas_alloc_error + alias async_events_fd_get evas_async_events_fd_get + alias async_events_process evas_async_events_process + alias async_events_put evas_async_events_put + end + # + end +end +# +# EOF |