diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2012-02-29 17:57:38 +0100 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2012-02-29 17:57:38 +0100 |
commit | d13fa37a9b82920febb80805cd29f91e22684bc4 (patch) | |
tree | b324714de21070344f62e773af92d669d0f1e169 | |
parent | b306e3f4a2352246eb8baf7d17a54a89bfd02893 (diff) | |
download | ffi-efl-d13fa37a9b82920febb80805cd29f91e22684bc4.zip ffi-efl-d13fa37a9b82920febb80805cd29f91e22684bc4.tar.gz |
parse elm_store.h, generate elm_store.rb
-rw-r--r-- | lib/efl/elementary_all.rb | 2 | ||||
-rw-r--r-- | lib/efl/elm/elm_store.rb | 43 | ||||
-rw-r--r-- | lib/efl/native/elm/elm_store.rb | 110 | ||||
-rwxr-xr-x | tools/genruby.rb | 2 |
4 files changed, 155 insertions, 2 deletions
diff --git a/lib/efl/elementary_all.rb b/lib/efl/elementary_all.rb index b90db6a..dcaf157 100644 --- a/lib/efl/elementary_all.rb +++ b/lib/efl/elementary_all.rb @@ -69,7 +69,7 @@ require 'efl/elm/elm_separator' require 'efl/elm/elm_slider' require 'efl/elm/elm_slideshow' require 'efl/elm/elm_spinner' -#require 'efl/elm/elm_store' +require 'efl/elm/elm_store' require 'efl/elm/elm_table' require 'efl/elm/elm_theme' require 'efl/elm/elm_thumb' diff --git a/lib/efl/elm/elm_store.rb b/lib/efl/elm/elm_store.rb new file mode 100644 index 0000000..625232a --- /dev/null +++ b/lib/efl/elm/elm_store.rb @@ -0,0 +1,43 @@ +#! /usr/bin/env ruby +# -*- coding: UTF-8 -*- +# +require 'efl' +require 'efl/native/elm/elm_store' +# +module Efl + # + module Elm + # + class ElmStore + # + include Efl::ClassHelper + search_prefixes 'elm_store_' + # + def initialize o=nil, &block + @ptr = ( + case o + when NilClass + FFI::AutoPointer.new Native.elm_store_filesystem_new, ElmStore.method(:release) + when FFI::Pointer + o + else + raise ArgumentError.new "wrong argument #{o.class.name}" + end + ) + instance_eval &block if block + end + def self.release p + Native.elm_store_free p + end + def free + @ptr.autorelease=false if @ptr.is_a? FFI::AutoPointer + ElmStore.release @ptr + @ptr=nil + end + # + end + # + end +end +# +# EOF diff --git a/lib/efl/native/elm/elm_store.rb b/lib/efl/native/elm/elm_store.rb new file mode 100644 index 0000000..5ea990f --- /dev/null +++ b/lib/efl/native/elm/elm_store.rb @@ -0,0 +1,110 @@ +#! /usr/bin/env ruby +# -*- coding: UTF-8 -*- +# +require 'efl/native' +require 'efl/native/elementary' +# +module Efl + # + module ElmStore + # + FCT_PREFIX = 'elm_store_' unless const_defined? :FCT_PREFIX + # + def self.method_missing meth, *args, &block + sym = Efl::MethodResolver.resolve self, meth, FCT_PREFIX + self.send sym, *args, &block + end + # + end + # + module Native + # + ffi_lib 'elementary-ver-pre-svn-09.so.0' + # + # ENUMS + # typedef enum {...} Elm_Store_Item_Mapping_Type; + enum :elm_store_item_mapping_type, [ :elm_store_item_mapping_none, 0, :elm_store_item_mapping_label, 1, :elm_store_item_mapping_state, 2, + :elm_store_item_mapping_icon, 3, :elm_store_item_mapping_photo, 4, :elm_store_item_mapping_custom, 5, :elm_store_item_mapping_last, 6 ] + # + # TYPEDEFS + # typedef struct _Elm_Store Elm_Store; + typedef :pointer, :elm_store + # typedef struct _Elm_Store_Filesystem Elm_Store_Filesystem; + typedef :pointer, :elm_store_filesystem + # typedef struct _Elm_Store_Item Elm_Store_Item; + typedef :pointer, :elm_store_item + # typedef struct _Elm_Store_Item_Filesystem Elm_Store_Item_Filesystem; + typedef :pointer, :elm_store_item_filesystem + # typedef struct _Elm_Store_Item_Info Elm_Store_Item_Info; + typedef :pointer, :elm_store_item_info + # typedef struct _Elm_Store_Item_Info_Filesystem Elm_Store_Item_Info_Filesystem; + typedef :pointer, :elm_store_item_info_filesystem + # typedef struct _Elm_Store_Item_Mapping Elm_Store_Item_Mapping; + typedef :pointer, :elm_store_item_mapping + # typedef struct _Elm_Store_Item_Mapping_Empty Elm_Store_Item_Mapping_Empty; + typedef :pointer, :elm_store_item_mapping_empty + # typedef struct _Elm_Store_Item_Mapping_Icon Elm_Store_Item_Mapping_Icon; + typedef :pointer, :elm_store_item_mapping_icon + # typedef struct _Elm_Store_Item_Mapping_Photo Elm_Store_Item_Mapping_Photo; + typedef :pointer, :elm_store_item_mapping_photo + # typedef struct _Elm_Store_Item_Mapping_Custom Elm_Store_Item_Mapping_Custom; + typedef :pointer, :elm_store_item_mapping_custom + # + # CALLBACKS + # typedef Eina_Bool (*Elm_Store_Item_List_Cb) (void *data, Elm_Store_Item_Info *info); + callback :elm_store_item_list_cb, [ :pointer, :elm_store_item_info ], :bool + # typedef void (*Elm_Store_Item_Fetch_Cb) (void *data, Elm_Store_Item *sti); + callback :elm_store_item_fetch_cb, [ :pointer, :elm_store_item ], :void + # typedef void (*Elm_Store_Item_Unfetch_Cb) (void *data, Elm_Store_Item *sti); + callback :elm_store_item_unfetch_cb, [ :pointer, :elm_store_item ], :void + # typedef void *(*Elm_Store_Item_Mapping_Cb) (void *data, Elm_Store_Item *sti, const char *part); + callback :elm_store_item_mapping_cb, [ :pointer, :elm_store_item, :string ], :pointer + # + # FUNCTIONS + fcts = [ + # EAPI void elm_store_free(Elm_Store *st); + [ :elm_store_free, [ :elm_store ], :void ], + # EAPI Elm_Store *elm_store_filesystem_new(void); + [ :elm_store_filesystem_new, [ ], :elm_store ], + # EAPI void elm_store_filesystem_directory_set(Elm_Store *st, const char *dir); + [ :elm_store_filesystem_directory_set, [ :elm_store, :string ], :void ], + # EAPI const char *elm_store_filesystem_directory_get(const Elm_Store *st); + [ :elm_store_filesystem_directory_get, [ :elm_store ], :string ], + # EAPI const char *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti); + [ :elm_store_item_filesystem_path_get, [ :elm_store_item ], :string ], + # EAPI void elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj); + [ :elm_store_target_genlist_set, [ :elm_store, :evas_object ], :void ], + # EAPI void elm_store_cache_set(Elm_Store *st, int max); + [ :elm_store_cache_set, [ :elm_store, :int ], :void ], + # EAPI int elm_store_cache_get(const Elm_Store *st); + [ :elm_store_cache_get, [ :elm_store ], :int ], + # EAPI void elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data); + [ :elm_store_list_func_set, [ :elm_store, :elm_store_item_list_cb, :pointer ], :void ], + # EAPI void elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data); + [ :elm_store_fetch_func_set, [ :elm_store, :elm_store_item_fetch_cb, :pointer ], :void ], + # EAPI void elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread); + [ :elm_store_fetch_thread_set, [ :elm_store, :bool ], :void ], + # EAPI Eina_Bool elm_store_fetch_thread_get(const Elm_Store *st); + [ :elm_store_fetch_thread_get, [ :elm_store ], :bool ], + # EAPI void elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data); + [ :elm_store_unfetch_func_set, [ :elm_store, :elm_store_item_unfetch_cb, :pointer ], :void ], + # EAPI void elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted); + [ :elm_store_sorted_set, [ :elm_store, :bool ], :void ], + # EAPI Eina_Bool elm_store_sorted_get(const Elm_Store *st); + [ :elm_store_sorted_get, [ :elm_store ], :bool ], + # EAPI void elm_store_item_data_set(Elm_Store_Item *sti, void *data); + [ :elm_store_item_data_set, [ :elm_store_item, :pointer ], :void ], + # EAPI void *elm_store_item_data_get(Elm_Store_Item *sti); + [ :elm_store_item_data_get, [ :elm_store_item ], :pointer ], + # EAPI const Elm_Store *elm_store_item_store_get(const Elm_Store_Item *sti); + [ :elm_store_item_store_get, [ :elm_store_item ], :elm_store ], + # EAPI const Elm_Object_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti); + [ :elm_store_item_genlist_item_get, [ :elm_store_item ], :elm_object_item ], + ] + # + attach_fcts fcts + # + end +end +# +# EOF diff --git a/tools/genruby.rb b/tools/genruby.rb index 1013c92..f72b6f1 100755 --- a/tools/genruby.rb +++ b/tools/genruby.rb @@ -431,7 +431,7 @@ libs << elm_h('elm_separator.h', 'ElmSeparator') libs << elm_h('elm_slider.h', 'ElmSlider') libs << elm_h('elm_slideshow.h', 'ElmSlideshow') libs << elm_h('elm_spinner.h', 'ElmSpinner') -#libs << elm_h('elm_store.h', 'ElmStore') +libs << elm_h('elm_store.h', 'ElmStore') libs << elm_h('elm_table.h', 'ElmTable') libs << elm_h('elm_theme.h', 'ElmTheme') libs << elm_h('elm_thumb.h', 'ElmThumb') |