diff options
Diffstat (limited to 'lib/efl')
-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 |
3 files changed, 45 insertions, 40 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 |