summaryrefslogtreecommitdiffstats
path: root/lib/efl/eina
diff options
context:
space:
mode:
Diffstat (limited to 'lib/efl/eina')
-rw-r--r--lib/efl/eina/eina_hash.rb81
-rw-r--r--lib/efl/eina/eina_list.rb78
2 files changed, 0 insertions, 159 deletions
diff --git a/lib/efl/eina/eina_hash.rb b/lib/efl/eina/eina_hash.rb
deleted file mode 100644
index 76cd5d2..0000000
--- a/lib/efl/eina/eina_hash.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-#! /usr/bin/env ruby
-# -*- coding: UTF-8 -*-
-#
-require 'efl/eina'
-require 'efl/ffi/eina/eina_hash'
-#
-class Hash
- def self.from_eina_hash o
- if o.is_a? Efl::Eina::EinaHash
- o.to_h
- elsif o.is_a? ::FFI::Pointer
- Efl::Eina::EinaHash.new(o).to_h
- else
- raise ArgumentError.new " wrong argument #{o.class.name}"
- end
- end
-end
-module Efl
- module Eina
- #
- class EinaHash
- include Efl::Helper
- include Enumerable
- @func_prefixes = [ 'eina_hash_' ].freeze
- def initialize o=nil, &block
- cstr = ( block_given? ? block : Proc.new { Efl::FFI.eina_hash_string_djb2_new ::FFI::Pointer::NULL } )
- @ptr = (
- case 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
- ptr
- else
- raise ArgumentError.new "#{ptr.class} valid argument"
- end
- )
- end
- def free
- return if @ptr==::FFI::Pointer::NULL
- @ptr = Efl::FFI.eina_hash_free @ptr
- end
- 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
- end
- def to_h
- rh = {}
- each { |k,v| rh[k]=v; true }
- rh
- end
- def to_h_conv &block
- rh = {}
- if block_given?
- each { |k,v| rh[block.call(k)]=v; true }
- else
- each { |k,v| rh[k.read_string]=v; true }
- end
- rh
- end
- # for fun and tests
- def add k, v
- Efl::FFI.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 )
- end
- alias :[] :find
- end
- end
-end
-#
-# EOF
diff --git a/lib/efl/eina/eina_list.rb b/lib/efl/eina/eina_list.rb
deleted file mode 100644
index fdbc176..0000000
--- a/lib/efl/eina/eina_list.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-#! /usr/bin/env ruby
-# -*- coding: UTF-8 -*-
-#
-require 'efl/eina'
-require 'efl/ffi/eina/eina_list'
-#
-class Array
- def self.from_eina_list o
- if o.is_a? Efl::Eina::EinaList
- o.to_ary
- elsif o.is_a? ::FFI::Pointer
- Efl::Eina::EinaList.new(o).to_ary
- else
- raise ArgumentError.new " wrong argument #{o.class.name}"
- end
- end
-end
-module Efl
- module FFI
- class EinaList < ::FFI::Struct
- layout :data, :pointer,
- :next, :pointer,
- :prev, :pointer,
- :accounting, :pointer,
- :magic, :uint,
- end
- end
- module Eina
- #
- class EinaList
- include Efl::Helper
- include Enumerable
- @func_prefixes = [ 'eina_list_' ].freeze
- def initialize o=nil
- @ptr = (
- case o
- when ::FFI::Pointer
- o
- when NilClass
- ::FFI::Pointer::NULL
- when self.class
- o.ptr
- when Array
- o.inject(::FFI::Pointer::NULL) { |p,e| Efl::FFI::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
- end
- def each
- p = @ptr
- while p!=::FFI::Pointer::NULL
- l = Efl::FFI::EinaList.new p
- yield l[:data]
- p = l[:next]
- end
- end
- def to_ary
- inject([]) { |s,e| s<<e }
- end
- # for fun and tests
- def append p
- @ptr = Efl::FFI.eina_list_append @ptr, p
- end
- alias :<< :append
- def prepend p
- @ptr = Efl::FFI.eina_list_prepend @ptr, p
- end
- alias :unshift :prepend
- end
- end
-end
-#
-# EOF