summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2012-02-29 17:57:38 +0100
committerJérémy Zurcher <jeremy@asynk.ch>2012-02-29 17:57:38 +0100
commitd13fa37a9b82920febb80805cd29f91e22684bc4 (patch)
treeb324714de21070344f62e773af92d669d0f1e169
parentb306e3f4a2352246eb8baf7d17a54a89bfd02893 (diff)
downloadffi-efl-d13fa37a9b82920febb80805cd29f91e22684bc4.zip
ffi-efl-d13fa37a9b82920febb80805cd29f91e22684bc4.tar.gz
parse elm_store.h, generate elm_store.rb
-rw-r--r--lib/efl/elementary_all.rb2
-rw-r--r--lib/efl/elm/elm_store.rb43
-rw-r--r--lib/efl/native/elm/elm_store.rb110
-rwxr-xr-xtools/genruby.rb2
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')