diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/efl/ecore_evas.rb | 3 | ||||
| -rw-r--r-- | lib/efl/eina_hash.rb | 18 | ||||
| -rw-r--r-- | lib/efl/eina_list.rb | 9 | ||||
| -rw-r--r-- | lib/efl/evas.rb | 6 | 
4 files changed, 23 insertions, 13 deletions
| diff --git a/lib/efl/ecore_evas.rb b/lib/efl/ecore_evas.rb index 6a592dc..6dadd3f 100644 --- a/lib/efl/ecore_evas.rb +++ b/lib/efl/ecore_evas.rb @@ -27,7 +27,8 @@ module Efl                  )                  yield self if block_given?              end -            def free +            def free p=nil +                return Efl::EcoreEvas.ecore_evas_free p unless p.nil?                  Efl::EcoreEvas.ecore_evas_free @ptr                  @ptr=nil              end diff --git a/lib/efl/eina_hash.rb b/lib/efl/eina_hash.rb index 4f4f44d..e47e2c1 100644 --- a/lib/efl/eina_hash.rb +++ b/lib/efl/eina_hash.rb @@ -25,24 +25,30 @@ module Efl                  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 NilClass                          cstr.call +#                        FFI::AutoPointer.new cstr.call, method(:free)                      when self.class -                        o.ptr +                        o.to_ptr +#                    when FFI::AutoPointer +#                        o +                    when FFI::Pointer +                        ( o==FFI::Pointer::NULL ? cstr.call : o ) +#                        FFI::AutoPointer.new ( o==FFI::Pointer::NULL ? cstr.call : o ), method(:free)                      when Hash                          ptr = cstr.call                          o.each do |k,v| Efl::EinaHash.eina_hash_add ptr, k, v end                          ptr +#                        FFI::AutoPointer.new ptr, method(:free)                      else                          raise ArgumentError.new "wrong argument #{o.class.name}"                      end                  )              end -            def free -                return if @ptr==FFI::Pointer::NULL -                @ptr = Efl::EinaHash.eina_hash_free @ptr +            def free p=nil +                return Efl::EinaHash.eina_hash_free p unless p.nil? +                Efl::EinaHash.eina_hash_free @ptr +                @ptr = nil              end              def each data=FFI::Pointer::NULL, &block                  return if not block_given? diff --git a/lib/efl/eina_list.rb b/lib/efl/eina_list.rb index 42395b2..3d3ce83 100644 --- a/lib/efl/eina_list.rb +++ b/lib/efl/eina_list.rb @@ -37,7 +37,7 @@ module Efl                      when NilClass                          FFI::Pointer::NULL                      when self.class -                        o.ptr +                        o.to_ptr                      when Array                          o.inject(FFI::Pointer::NULL) { |p,e| Efl::EinaList.eina_list_append p, e }                      else @@ -45,9 +45,10 @@ module Efl                      end                  )              end -            def free -                return if @ptr==FFI::Pointer::NULL -                @ptr = Efl::EinaList.eina_list_free @ptr +            def free p=nil +                return Efl::EinaList.eina_list_free p unless p.nil? +                Efl::EinaList.eina_list_free @ptr +                @ptr = nil              end              def each                  p = @ptr diff --git a/lib/efl/evas.rb b/lib/efl/evas.rb index d6f476b..56657d3 100644 --- a/lib/efl/evas.rb +++ b/lib/efl/evas.rb @@ -63,7 +63,8 @@ module Efl                  )                  yield self if block_given?              end -            def free +            def free p=nil +                return Efl::Evas.evas_free p unless p.nil?                  Efl::Evas.evas_free @ptr                  @ptr=nil              end @@ -120,7 +121,8 @@ module Efl                  )                  yield self if block_given?              end -            def free +            def free p=nil +                return Efl::Evas.evas_object_del p unless p.nil?                  Efl::Evas.evas_object_del @ptr                  @ptr=nil              end | 
