summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2011-04-14 06:24:37 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2011-04-14 06:24:37 +0200
commitb960e00f5d165c659c7dc827b65ff8b563e84f10 (patch)
treed1d4131e635a1b2f5389586c0ac34701bcecc651
parent38a8992822c638ded9db7e3b1ae5aa28dee38fab (diff)
downloadffi-efl-b960e00f5d165c659c7dc827b65ff8b563e84f10.zip
ffi-efl-b960e00f5d165c659c7dc827b65ff8b563e84f10.tar.gz
update evas, use ffi_helper and FFI::Enum
-rw-r--r--lib/e17/evas.rb37
-rw-r--r--spec/evas_spec.rb14
2 files changed, 26 insertions, 25 deletions
diff --git a/lib/e17/evas.rb b/lib/e17/evas.rb
index 7a8d488..07c5924 100644
--- a/lib/e17/evas.rb
+++ b/lib/e17/evas.rb
@@ -1,44 +1,33 @@
#! /usr/bin/env ruby
# -*- coding: UTF-8 -*-
#
-require 'ffi'
+require 'e17/ffi_helper'
#
module E17
module EVAS
#
+ extend FFIHelper
extend FFI::Library
#
+ ffi_lib 'evas'
+ #
+ enum :evas_alloc_error, [:none,0,:fatal,:recovered]
+ #
callback :evas_async_events_put_cb, [:pointer, :int, :pointer], :void
#
- ffi_lib 'evas'
- [
+ @fcts = [
# http://docs.enlightenment.org/auto/evas/group__Evas__Group.html
[ :evas_init, [], :int],
[ :evas_shutdown, [], :int],
- [ :evas_alloc_error, [], :int],
+ [ :evas_alloc_error, [], :evas_alloc_error],
[ :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
+ ]
+ #
+ attach_fcts
+ #
+ create_aliases 'evas_'.length
#
end
end
diff --git a/spec/evas_spec.rb b/spec/evas_spec.rb
index a708833..f26b29c 100644
--- a/spec/evas_spec.rb
+++ b/spec/evas_spec.rb
@@ -19,9 +19,21 @@ describe E17::EVAS do
EVAS.shutdown.should eql 0
end
#
+ it "evas alloc error enum is ok" do
+ EVAS.enum_value(:none).should eql 0
+ EVAS.enum_value(:fatal).should eql 1
+ EVAS.enum_value(:recovered).should eql 2
+ EVAS.enum_type(:evas_alloc_error)[0].should eql :none
+ EVAS.enum_type(:evas_alloc_error)[1].should eql :fatal
+ EVAS.enum_type(:evas_alloc_error)[2].should eql :recovered
+ EVAS.enum_type(:evas_alloc_error)[:none].should eql 0
+ EVAS.enum_type(:evas_alloc_error)[:fatal].should eql 1
+ EVAS.enum_type(:evas_alloc_error)[:recovered].should eql 2
+ end
+ #
it "should have no memory allocation error occured" do
EVAS.init
- EVAS.alloc_error.should eql EVAS::ALLOC_ERROR_NONE
+ EVAS.alloc_error.should eql :none
EVAS.shutdown
end
#