diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2011-04-29 14:45:08 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2011-04-29 14:45:08 +0200 |
commit | 0ed32396a0fd63625ea94c4da86c2df3829acc72 (patch) | |
tree | 853b116cacf2ced99799a69868745f60ead8e254 | |
parent | 7d9d18850322a11f0f40913a5442b7a981b47c0a (diff) | |
download | ffi-efl-0ed32396a0fd63625ea94c4da86c2df3829acc72.zip ffi-efl-0ed32396a0fd63625ea94c4da86c2df3829acc72.tar.gz |
update efl/eina* and specs
-rw-r--r-- | lib/efl/eina.rb | 8 | ||||
-rw-r--r-- | lib/efl/eina_hash.rb (renamed from lib/efl/eina/eina_hash.rb) | 39 | ||||
-rw-r--r-- | lib/efl/eina_list.rb (renamed from lib/efl/eina/eina_list.rb) | 38 | ||||
-rw-r--r-- | spec/eina_hash_spec.rb (renamed from spec/eina/eina_hash_spec.rb) | 96 | ||||
-rw-r--r-- | spec/eina_list_spec.rb (renamed from spec/eina/eina_list_spec.rb) | 29 |
5 files changed, 108 insertions, 102 deletions
diff --git a/lib/efl/eina.rb b/lib/efl/eina.rb index e5fcc67..dfa266c 100644 --- a/lib/efl/eina.rb +++ b/lib/efl/eina.rb @@ -3,4 +3,12 @@ # require 'efl/ffi/eina' # +module Efl + # + module Eina + # + end + # +end +# # EOF diff --git a/lib/efl/eina/eina_hash.rb b/lib/efl/eina_hash.rb index 76cd5d2..03619dc 100644 --- a/lib/efl/eina/eina_hash.rb +++ b/lib/efl/eina_hash.rb @@ -1,40 +1,39 @@ #! /usr/bin/env ruby # -*- coding: UTF-8 -*- # -require 'efl/eina' -require 'efl/ffi/eina/eina_hash' +require 'efl/ffi/eina_hash' # class Hash def self.from_eina_hash o - if o.is_a? Efl::Eina::EinaHash + if o.is_a? Efl::EinaHash::REinaHash o.to_h - elsif o.is_a? ::FFI::Pointer - Efl::Eina::EinaHash.new(o).to_h + elsif o.is_a? FFI::Pointer + Efl::EinaHash::REinaHash.new(o).to_h else raise ArgumentError.new " wrong argument #{o.class.name}" end end end module Efl - module Eina + module EinaHash # - class EinaHash - include Efl::Helper + class REinaHash include Enumerable - @func_prefixes = [ 'eina_hash_' ].freeze + include Efl::ClassHelper + @func_prefixes = [ [Efl::EinaHash,'eina_hash_'] ].freeze def initialize o=nil, &block - cstr = ( block_given? ? block : Proc.new { Efl::FFI.eina_hash_string_djb2_new ::FFI::Pointer::NULL } ) + cstr = ( block_given? ? block : Proc.new { Efl::EinaHash.eina_hash_string_djb2_new FFI::Pointer::NULL } ) @ptr = ( case o - when ::FFI::Pointer - ( o==::FFI::Pointer::NULL ? cstr.call : o ) + when FFI::Pointer + ( o==FFI::Pointer::NULL ? cstr.call : o ) when NilClass cstr.call when self.class o.ptr when Hash ptr = cstr.call - o.each do |k,v| Efl::FFI.eina_hash_add ptr, k, v end + o.each do |k,v| Efl::EinaHash.eina_hash_add ptr, k, v end ptr else raise ArgumentError.new "#{ptr.class} valid argument" @@ -42,12 +41,12 @@ module Efl ) end def free - return if @ptr==::FFI::Pointer::NULL - @ptr = Efl::FFI.eina_hash_free @ptr + return if @ptr==FFI::Pointer::NULL + @ptr = Efl::EinaHash.eina_hash_free @ptr end - def each data=::FFI::Pointer::NULL, &block + def each data=FFI::Pointer::NULL, &block return if not block_given? - Efl::FFI::eina_hash_foreach @ptr, Proc.new{|h,k,v,d| block.call(k,v) }, data + Efl::EinaHash::eina_hash_foreach @ptr, Proc.new{|h,k,v,d| block.call(k,v) }, data end def to_h rh = {} @@ -65,13 +64,13 @@ module Efl end # for fun and tests def add k, v - Efl::FFI.eina_hash_add @ptr, k, v + Efl::EinaHash.eina_hash_add @ptr, k, v v end alias :[]= :add def find k - r = Efl::FFI.eina_hash_find @ptr, k - return ( r==::FFI::Pointer::NULL ? nil : r ) + r = Efl::EinaHash.eina_hash_find @ptr, k + return ( r==FFI::Pointer::NULL ? nil : r ) end alias :[] :find end diff --git a/lib/efl/eina/eina_list.rb b/lib/efl/eina_list.rb index fdbc176..ecd0e20 100644 --- a/lib/efl/eina/eina_list.rb +++ b/lib/efl/eina_list.rb @@ -1,60 +1,58 @@ #! /usr/bin/env ruby # -*- coding: UTF-8 -*- # -require 'efl/eina' -require 'efl/ffi/eina/eina_list' +require 'efl/ffi/eina_list' # class Array def self.from_eina_list o - if o.is_a? Efl::Eina::EinaList + if o.is_a? Efl::EinaList::REinaList o.to_ary - elsif o.is_a? ::FFI::Pointer - Efl::Eina::EinaList.new(o).to_ary + elsif o.is_a? FFI::Pointer + Efl::EinaList::REinaList.new(o).to_ary else raise ArgumentError.new " wrong argument #{o.class.name}" end end end module Efl - module FFI - class EinaList < ::FFI::Struct + module EinaList + # + class EinaListStruct < FFI::Struct layout :data, :pointer, :next, :pointer, :prev, :pointer, :accounting, :pointer, :magic, :uint, end - end - module Eina # - class EinaList - include Efl::Helper + class REinaList include Enumerable - @func_prefixes = [ 'eina_list_' ].freeze + include Efl::ClassHelper + @search_paths = [ [Efl::EinaList,'eina_list_'] ].freeze def initialize o=nil @ptr = ( case o - when ::FFI::Pointer + when FFI::Pointer o when NilClass - ::FFI::Pointer::NULL + FFI::Pointer::NULL when self.class o.ptr when Array - o.inject(::FFI::Pointer::NULL) { |p,e| Efl::FFI::eina_list_append p, e } + o.inject(FFI::Pointer::NULL) { |p,e| Efl::EinaList.eina_list_append p, e } else raise ArgumentError.new "#{ptr.class} valid argument" end ) end def free - return if @ptr==::FFI::Pointer::NULL - @ptr = Efl::FFI.eina_list_free @ptr + return if @ptr==FFI::Pointer::NULL + @ptr = Efl::EinaList.eina_list_free @ptr end def each p = @ptr while p!=::FFI::Pointer::NULL - l = Efl::FFI::EinaList.new p + l = Efl::EinaList::EinaListStruct.new p yield l[:data] p = l[:next] end @@ -64,11 +62,11 @@ module Efl end # for fun and tests def append p - @ptr = Efl::FFI.eina_list_append @ptr, p + @ptr = Efl::EinaList.eina_list_append @ptr, p end alias :<< :append def prepend p - @ptr = Efl::FFI.eina_list_prepend @ptr, p + @ptr = Efl::EinaList.eina_list_prepend @ptr, p end alias :unshift :prepend end diff --git a/spec/eina/eina_hash_spec.rb b/spec/eina_hash_spec.rb index 3cd5504..5efc062 100644 --- a/spec/eina/eina_hash_spec.rb +++ b/spec/eina_hash_spec.rb @@ -1,24 +1,24 @@ #! /usr/bin/env ruby # -*- coding: UTF-8 -*- # -require 'efl/eina/eina_hash' +require 'efl/eina_hash' # -describe Efl::Eina::EinaHash do +describe Efl::EinaHash do # before(:all) { - EinaHash = Efl::Eina::EinaHash + REinaHash = Efl::EinaHash::REinaHash Efl::Eina.init.should eql 1 - @d0 = ::FFI::MemoryPointer.from_string "D0" - @d1 = ::FFI::MemoryPointer.from_string "D1" - @d2 = ::FFI::MemoryPointer.from_string "D2" - @d3 = ::FFI::MemoryPointer.from_string "D3" + @d0 = FFI::MemoryPointer.from_string "D0" + @d1 = FFI::MemoryPointer.from_string "D1" + @d2 = FFI::MemoryPointer.from_string "D2" + @d3 = FFI::MemoryPointer.from_string "D3" } after(:all) { Efl::Eina.shutdown.should eql 0 } # it "should append prepend and fetch" do - h = EinaHash.new + h = REinaHash.new h.add 'k2', @d2 h.add 'k1', @d1 h['k3']=@d3 @@ -37,29 +37,29 @@ describe Efl::Eina::EinaHash do end # it "should be able to convert into ruby Hash from NULL pointer" do - h = Hash.from_eina_hash ::FFI::Pointer::NULL + h = Hash.from_eina_hash FFI::Pointer::NULL h.empty?.should be_true h.is_a?(Hash).should be_true end # - it "should be able to convert into ruby Hash from empty EinaHash" do - h = Hash.from_eina_hash EinaHash.new + it "should be able to convert into ruby Hash from empty REinaHash" do + h = Hash.from_eina_hash REinaHash.new h.empty?.should be_true h.is_a?(Hash).should be_true end # - it "should be able to convert into ruby Hash from empty EinaHash pointer" do - h = Hash.from_eina_hash EinaHash.new.ptr + it "should be able to convert into ruby Hash from empty REinaHash pointer" do + h = Hash.from_eina_hash REinaHash.new.to_ptr h.empty?.should be_true h.is_a?(Hash).should be_true end # - it "should be able to convert into ruby Hash from non empty EinaHash" do - h = EinaHash.new - d0 = ::FFI::MemoryPointer.from_string "D0" - d1 = ::FFI::MemoryPointer.from_string "D1" - d2 = ::FFI::MemoryPointer.from_string "D2" - d3 = ::FFI::MemoryPointer.from_string "D3" + it "should be able to convert into ruby Hash from non empty REinaHash" do + h = REinaHash.new + d0 = FFI::MemoryPointer.from_string "D0" + d1 = FFI::MemoryPointer.from_string "D1" + d2 = FFI::MemoryPointer.from_string "D2" + d3 = FFI::MemoryPointer.from_string "D3" h.add 'k2', d2 h.add 'k1', d1 h['k3']=d3 @@ -89,12 +89,12 @@ describe Efl::Eina::EinaHash do h.free end # - it "should be able to convert into ruby Hash from non empty EinaHash pointer" do - h = EinaHash.new - d0 = ::FFI::MemoryPointer.from_string "D0" - d1 = ::FFI::MemoryPointer.from_string "D1" - d2 = ::FFI::MemoryPointer.from_string "D2" - d3 = ::FFI::MemoryPointer.from_string "D3" + it "should be able to convert into ruby Hash from non empty REinaHash pointer" do + h = REinaHash.new + d0 = FFI::MemoryPointer.from_string "D0" + d1 = FFI::MemoryPointer.from_string "D1" + d2 = FFI::MemoryPointer.from_string "D2" + d3 = FFI::MemoryPointer.from_string "D3" h.add 'k2', d2 h.add 'k1', d1 h['k3']=d3 @@ -103,17 +103,17 @@ describe Efl::Eina::EinaHash do h['k1'].read_string.should eql "D1" h['k2'].read_string.should eql "D2" h['k3'].read_string.should eql "D3" - rh = Hash.from_eina_hash h.ptr + rh = Hash.from_eina_hash h.to_ptr rh.length.should eql 4 h.free end # - it "should be able to convert into ruby Hash from non empty EinaHash pointer, with key from string" do - h = EinaHash.new - d0 = ::FFI::MemoryPointer.from_string "D0" - d1 = ::FFI::MemoryPointer.from_string "D1" - d2 = ::FFI::MemoryPointer.from_string "D2" - d3 = ::FFI::MemoryPointer.from_string "D3" + it "should be able to convert into ruby Hash from non empty REinaHash pointer, with key from string" do + h = REinaHash.new + d0 = FFI::MemoryPointer.from_string "D0" + d1 = FFI::MemoryPointer.from_string "D1" + d2 = FFI::MemoryPointer.from_string "D2" + d3 = FFI::MemoryPointer.from_string "D3" h.add 'k2', d2 h.add 'k1', d1 h['k3']=d3 @@ -131,12 +131,12 @@ describe Efl::Eina::EinaHash do h.free end # - it "should be able to convert into ruby Hash from non empty EinaHash pointer, with key from string block" do - h = EinaHash.new - d0 = ::FFI::MemoryPointer.from_string "D0" - d1 = ::FFI::MemoryPointer.from_string "D1" - d2 = ::FFI::MemoryPointer.from_string "D2" - d3 = ::FFI::MemoryPointer.from_string "D3" + it "should be able to convert into ruby Hash from non empty REinaHash pointer, with key from string block" do + h = REinaHash.new + d0 = FFI::MemoryPointer.from_string "D0" + d1 = FFI::MemoryPointer.from_string "D1" + d2 = FFI::MemoryPointer.from_string "D2" + d3 = FFI::MemoryPointer.from_string "D3" h.add 'k2', d2 h.add 'k1', d1 h['k3']=d3 @@ -158,19 +158,19 @@ describe Efl::Eina::EinaHash do # it "should be able to build from ruby Hash" do rh = {} - k0 = ::FFI::MemoryPointer.from_string "0" - k1 = ::FFI::MemoryPointer.from_string "1" - k2 = ::FFI::MemoryPointer.from_string "2" - k3 = ::FFI::MemoryPointer.from_string "3" - d0 = ::FFI::MemoryPointer.from_string "D0" - d1 = ::FFI::MemoryPointer.from_string "D1" - d2 = ::FFI::MemoryPointer.from_string "D2" - d3 = ::FFI::MemoryPointer.from_string "D3" + k0 = FFI::MemoryPointer.from_string "0" + k1 = FFI::MemoryPointer.from_string "1" + k2 = FFI::MemoryPointer.from_string "2" + k3 = FFI::MemoryPointer.from_string "3" + d0 = FFI::MemoryPointer.from_string "D0" + d1 = FFI::MemoryPointer.from_string "D1" + d2 = FFI::MemoryPointer.from_string "D2" + d3 = FFI::MemoryPointer.from_string "D3" rh[k0]=d0 rh[k1]=d1 rh[k2]=d2 rh[k3]=d3 - h = EinaHash.new rh + h = REinaHash.new rh h[k0].read_string.should eql "D0" h[k1].read_string.should eql "D1" h[k2].read_string.should eql "D2" @@ -180,7 +180,7 @@ describe Efl::Eina::EinaHash do # it "alternate constructor should work" do cstr_cnt = 0 - h = EinaHash.new { cstr_cnt+=1; Efl::FFI.eina_hash_string_superfast_new ::FFI::Pointer::NULL } + h = REinaHash.new { cstr_cnt+=1; Efl::EinaHash.eina_hash_string_superfast_new FFI::Pointer::NULL } cstr_cnt.should eql 1 end end diff --git a/spec/eina/eina_list_spec.rb b/spec/eina_list_spec.rb index 2522256..74f89c5 100644 --- a/spec/eina/eina_list_spec.rb +++ b/spec/eina_list_spec.rb @@ -1,12 +1,13 @@ #! /usr/bin/env ruby # -*- coding: UTF-8 -*- # -require 'efl/eina/eina_list' +require 'efl/eina' +require 'efl/eina_list' # -describe Efl::Eina::EinaList do +describe Efl::EinaList do # before(:all) { - EinaList = Efl::Eina::EinaList + REinaList = Efl::EinaList::REinaList Efl::Eina.init.should eql 1 } after(:all) { @@ -14,7 +15,7 @@ describe Efl::Eina::EinaList do } # it "should append prepend and fetch" do - l = EinaList.new + l = REinaList.new d1 = ::FFI::MemoryPointer.from_string "D0" d2 = ::FFI::MemoryPointer.from_string "D1" d3 = ::FFI::MemoryPointer.from_string "D2" @@ -36,20 +37,20 @@ describe Efl::Eina::EinaList do ary.is_a?(Array).should be_true end # - it "should be able to convert into ruby Array from empty EinaList" do - ary = Array.from_eina_list EinaList.new + it "should be able to convert into ruby Array from empty REinaList" do + ary = Array.from_eina_list REinaList.new ary.empty?.should be_true ary.is_a?(Array).should be_true end # - it "should be able to convert into ruby Array from empty EinaList pointer" do - ary = Array.from_eina_list EinaList.new.ptr + it "should be able to convert into ruby Array from empty REinaList pointer" do + ary = Array.from_eina_list REinaList.new.to_ptr ary.empty?.should be_true ary.is_a?(Array).should be_true end # - it "should be able to convert into ruby Array from non empty EinaList" do - l = EinaList.new + it "should be able to convert into ruby Array from non empty REinaList" do + l = REinaList.new d1 = ::FFI::MemoryPointer.from_string "D0" d2 = ::FFI::MemoryPointer.from_string "D1" d3 = ::FFI::MemoryPointer.from_string "D2" @@ -66,8 +67,8 @@ describe Efl::Eina::EinaList do l.free end # - it "should be able to convert into ruby Array from non empty EinaList pointer" do - l = EinaList.new + it "should be able to convert into ruby Array from non empty REinaList pointer" do + l = REinaList.new d1 = ::FFI::MemoryPointer.from_string "D0" d2 = ::FFI::MemoryPointer.from_string "D1" d3 = ::FFI::MemoryPointer.from_string "D2" @@ -76,7 +77,7 @@ describe Efl::Eina::EinaList do l.prepend d2 l << d4 l.unshift d1 - ary = Array.from_eina_list l.ptr + ary = Array.from_eina_list l.to_ptr ary.length.should eql 4 0.upto 3 do |i| ary[i].read_string.should eql "D#{i}" @@ -90,7 +91,7 @@ describe Efl::Eina::EinaList do a << ::FFI::MemoryPointer.from_string("D1") a << ::FFI::MemoryPointer.from_string("D2") a << ::FFI::MemoryPointer.from_string("D3") - l = EinaList.new a + l = REinaList.new a 0.upto 3 do |i| l.nth(i).read_string.should eql "D#{i}" end |