ffi-efl 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. data/Changelog +13 -1
  2. data/README.rdoc +24 -14
  3. data/lib/efl/ecore.rb +7 -7
  4. data/lib/efl/ecore_evas.rb +78 -0
  5. data/lib/efl/ecore_getopt.rb +28 -29
  6. data/lib/efl/ecore_input.rb +14 -0
  7. data/lib/efl/edje.rb +47 -1
  8. data/lib/efl/eet.rb +18 -25
  9. data/lib/efl/eina.rb +14 -0
  10. data/lib/efl/eina_hash.rb +84 -0
  11. data/lib/efl/eina_list.rb +77 -0
  12. data/lib/efl/elementary.rb +22 -9
  13. data/lib/efl/evas.rb +67 -25
  14. data/lib/efl/{ecore/ecore-ffi.rb → ffi/ecore.rb} +8 -5
  15. data/lib/efl/{ecore/ecore_evas-ffi.rb → ffi/ecore_evas.rb} +10 -7
  16. data/lib/efl/{ecore/ecore_getopt-ffi.rb → ffi/ecore_getopt.rb} +8 -5
  17. data/lib/efl/{ecore/ecore_input-ffi.rb → ffi/ecore_input.rb} +9 -6
  18. data/lib/efl/{edje/edje-ffi.rb → ffi/edje.rb} +10 -7
  19. data/lib/efl/{eet/eet-ffi.rb → ffi/eet.rb} +8 -5
  20. data/lib/efl/ffi/eina.rb +48 -0
  21. data/lib/efl/ffi/eina_hash.rb +111 -0
  22. data/lib/efl/ffi/eina_list.rb +108 -0
  23. data/lib/efl/{eina/eina_types-ffi.rb → ffi/eina_types.rb} +8 -5
  24. data/lib/efl/{elementary/elementary-ffi.rb → ffi/elementary.rb} +16 -9
  25. data/lib/efl/{evas/evas-ffi.rb → ffi/evas.rb} +153 -150
  26. data/lib/efl/ffi.rb +81 -38
  27. data/lib/efl.rb +9 -4
  28. data/spec/ecore_evas_spec.rb +24 -0
  29. data/spec/ecore_getopt_spec.rb +1 -2
  30. data/spec/ecore_input_spec.rb +24 -0
  31. data/spec/ecore_spec.rb +2 -3
  32. data/spec/edje_spec.rb +1 -1
  33. data/spec/eet_spec.rb +68 -69
  34. data/spec/eina_hash_spec.rb +180 -0
  35. data/spec/eina_list_spec.rb +101 -0
  36. data/spec/eina_spec.rb +20 -0
  37. data/spec/evas_spec.rb +288 -40
  38. data/tasks/ffi.rake +1 -1
  39. data/test/test_edje.rb +141 -0
  40. data/test/test_elm_win.rb +25 -28
  41. data/test/test_elm_win_class.rb +7 -7
  42. data/test/test_evas.rb +106 -0
  43. metadata +30 -17
@@ -2,7 +2,20 @@
2
2
  # -*- coding: UTF-8 -*-
3
3
  #
4
4
  require 'efl/evas'
5
- require 'efl/elementary/elementary-ffi'
5
+ #
6
+ module Efl
7
+ module Elm
8
+ extend Efl::FFIHelper
9
+ steal_ffitype Efl::Evas, :evas_smart_cb
10
+ steal_ffitype Efl::Evas, :evas_load_error
11
+ steal_ffitype Efl::Evas, :evas_callback_type
12
+ steal_ffitype Efl::Evas, :evas_object_box_data_p
13
+ end
14
+ end
15
+ #
16
+ require 'efl/ffi/elementary'
17
+ #
18
+ Efl::Evas::REvasObject.proxy_list << [Efl::Elm,'elm_'].freeze # append not prepend !
6
19
  #
7
20
  module Efl
8
21
  module Elm
@@ -10,30 +23,30 @@ module Efl
10
23
  class << self
11
24
  def init *args
12
25
  a = args.select { |e| e.is_a? String }
13
- return Efl::API.elm_init 0, FFI::MemoryPointer::NULL if a.length==0
26
+ return Efl::Elm.elm_init 0, FFI::MemoryPointer::NULL if a.length==0
14
27
  ptr = FFI::MemoryPointer.new :pointer, a.length
15
28
  a.each_with_index do |s,i|
16
29
  ptr[i].write_pointer FFI::MemoryPointer.from_string(s)
17
30
  end
18
- Efl::API.elm_init a.length, ptr
31
+ Efl::Elm.elm_init a.length, ptr
19
32
  end
20
33
  end
21
34
  #
22
35
  class ElmWin
23
- include Efl::Helper
24
- @func_prefixes = [ 'elm_win_', 'elm_' ].freeze
36
+ include Efl::ClassHelper
37
+ proxy_list [Efl::Elm,'elm_win_'].freeze, [Efl::Elm,'elm_'].freeze
25
38
  def initialize parent, title, type=:elm_win_basic
26
- @evas_object = Evas::EvasObject.new Efl::API.elm_win_add parent, title, type
27
- @ptr = @evas_object.ptr
39
+ @evas_object = Efl::Evas::REvasObject.new Efl::Elm.elm_win_add parent, title, type
40
+ @ptr = @evas_object.to_ptr
28
41
  yield self,@evas_object if block_given?
29
42
  end
30
43
  def add e
31
- eo = Evas::EvasObject.new Efl::API.send "elm_#{e}_add", @ptr
44
+ eo = Efl::Evas::REvasObject.new Efl::Elm.send "elm_#{e}_add", @ptr
32
45
  yield eo if block_given?
33
46
  eo
34
47
  end
35
48
  def smart_callback_add event_str, cb, data=FFI::MemoryPointer::NULL
36
- Efl::API.evas_object_smart_callback_add @ptr, event_str, cb, data
49
+ Efl::Evas.evas_object_smart_callback_add @ptr, event_str, cb, data
37
50
  end
38
51
  end
39
52
  #
data/lib/efl/evas.rb CHANGED
@@ -1,42 +1,80 @@
1
1
  #! /usr/bin/env ruby
2
2
  # -*- coding: UTF-8 -*-
3
3
  #
4
- require 'efl/evas/evas-ffi'
4
+ require 'efl/ffi/evas'
5
5
  #
6
6
  module Efl
7
+ #
7
8
  module Evas
8
9
  #
9
- class Evas
10
- include Efl::Helper
11
- @func_prefixes = [ 'evas_' ].freeze
10
+ EVAS_ENGINE_BUFFER_DEPTH_ARGB32 = 0
11
+ EVAS_ENGINE_BUFFER_DEPTH_BGRA32 = 1
12
+ EVAS_ENGINE_BUFFER_DEPTH_RGB24 = 2
13
+ EVAS_ENGINE_BUFFER_DEPTH_BGR24 = 3
14
+ EVAS_ENGINE_BUFFER_DEPTH_RGB32 = 4
15
+ #
16
+ callback :new_update_region_cb, [:int, :int, :int, :int, :int_p], :pointer
17
+ callback :free_update_region_cb, [:int, :int, :int, :int, :pointer], :void
18
+ #
19
+ class EngineInfoStruct < FFI::Struct
20
+ layout :magic, :int
21
+ end
22
+ class EngineInfoBufferFuncStruct < FFI::Struct
23
+ layout :new_update_region, :new_update_region_cb,
24
+ :free_update_region, :free_update_region_cb
25
+ end
26
+ class EngineInfoBufferInfoStruct < FFI::Struct
27
+ layout :depth_type, :int,
28
+ :dest_buffer, :pointer,
29
+ :dest_buffer_row_bytes, :int,
30
+ :use_color_key, :char,
31
+ :alpha_threshold, :int,
32
+ :color_key_r, :int,
33
+ :color_key_g, :int,
34
+ :color_key_b, :int,
35
+ :func, EngineInfoBufferFuncStruct,
36
+ end
37
+ class EngineInfoBufferStruct < FFI::Struct
38
+ layout :magic, EngineInfoStruct,
39
+ :info, EngineInfoBufferInfoStruct,
40
+ # :func, EvasEngineInfoBufferFunc,
41
+ :mode, :evas_engine_render_mode,
42
+ end
43
+ #
44
+ class REvas
45
+ #
46
+ include Efl::ClassHelper
47
+ proxy_list [Efl::Evas,'evas_'].freeze
48
+ #
12
49
  def initialize o=nil
13
50
  @ptr = (
14
51
  case o
15
52
  when NilClass
16
- FFI::AutoPointer.new Efl::API.evas_new, method(:free)
53
+ FFI::AutoPointer.new Efl::Evas.evas_new, method(:free)
17
54
  when self.class
18
- o.ptr
55
+ o.to_ptr
19
56
  when FFI::AutoPointer
20
57
  o
21
58
  when FFI::Pointer
22
59
  FFI::AutoPointer.new o, method(:free)
23
60
  else
24
- raise ArgumentError.new "#{ptr.class} valid argument"
61
+ raise ArgumentError.new "wrong argument #{o.class.name}"
25
62
  end
26
63
  )
27
64
  yield self if block_given?
28
65
  end
29
- def free
30
- Efl::API.evas_free @ptr
66
+ def free p=nil
67
+ return Efl::Evas.evas_free p unless p.nil?
68
+ Efl::Evas.evas_free @ptr
31
69
  @ptr=nil
32
70
  end
33
- def === o
34
- @ptr === o.ptr
71
+ def object_add t
72
+ Efl::Evas::REvasObject.new Efl::Evas.send "evas_object_#{t}_add", @ptr
35
73
  end
36
74
  def output_size_get
37
75
  x = FFI::MemoryPointer.new :int
38
76
  y = FFI::MemoryPointer.new :int
39
- Efl::API.evas_output_size_get @ptr, x, y
77
+ Efl::Evas.evas_output_size_get @ptr, x, y
40
78
  [ x.read_int, y.read_int ]
41
79
  end
42
80
  def output_viewport_get
@@ -44,45 +82,49 @@ module Efl
44
82
  y = FFI::MemoryPointer.new :int
45
83
  w = FFI::MemoryPointer.new :int
46
84
  h = FFI::MemoryPointer.new :int
47
- Efl::API.evas_output_viewport_get @ptr, x, y, w, h
85
+ Efl::Evas.evas_output_viewport_get @ptr, x, y, w, h
48
86
  [ x.read_int, y.read_int, w.read_int, h.read_int ]
49
87
  end
50
88
  def pointer_output_xy_get
51
89
  x = FFI::MemoryPointer.new :int
52
90
  y = FFI::MemoryPointer.new :int
53
- Efl::API.evas_pointer_output_xy_get @ptr, x, y
91
+ Efl::Evas.evas_pointer_output_xy_get @ptr, x, y
54
92
  [ x.read_int, y.read_int ]
55
93
  end
56
94
  def pointer_canvas_xy_get
57
95
  x = FFI::MemoryPointer.new :int
58
96
  y = FFI::MemoryPointer.new :int
59
- Efl::API.evas_pointer_canvas_xy_get @ptr, x, y
97
+ Efl::Evas.evas_pointer_canvas_xy_get @ptr, x, y
60
98
  [ x.read_int, y.read_int ]
61
99
  end
62
100
  end
63
101
  #
64
- class EvasObject
65
- include Efl::Helper
66
- @func_prefixes = [ 'evas_object_', 'evas_' ].freeze
102
+ class REvasObject
103
+ #
104
+ include Efl::ClassHelper
105
+ proxy_list [Efl::Evas,'evas_object_'].freeze, [Efl::Evas,'evas_'].freeze
106
+ #
67
107
  def initialize o=nil
68
108
  @ptr = (
69
109
  case o
70
110
  when NilClass
71
- FFI::AutoPointer.new Efl::API.evas_new, method(:free)
111
+ FFI::AutoPointer.new Efl::Evas.evas_new, method(:free)
72
112
  when self.class
73
- o.ptr
113
+ o.to_ptr
74
114
  when FFI::AutoPointer
75
115
  o
76
116
  when FFI::Pointer
77
117
  FFI::AutoPointer.new o, method(:free)
78
118
  else
79
- raise ArgumentError.new "#{ptr.class} valid argument"
119
+ raise ArgumentError.new "wrong argument #{o.class.name}"
80
120
  end
81
121
  )
82
122
  yield self if block_given?
83
123
  end
84
- def free
85
- Efl::API.evas_object_del @ptr
124
+ def free p=nil
125
+ return Efl::Evas.evas_object_del p unless p.nil?
126
+ Efl::Evas.evas_object_del @ptr
127
+ @ptr.free
86
128
  @ptr=nil
87
129
  end
88
130
  def geometry_get
@@ -90,7 +132,7 @@ module Efl
90
132
  y = FFI::MemoryPointer.new :int
91
133
  w = FFI::MemoryPointer.new :int
92
134
  h = FFI::MemoryPointer.new :int
93
- Efl::API.evas_object_geometry_get @evas, x, y, w, h
135
+ Efl::Evas.evas_object_geometry_get @evas, x, y, w, h
94
136
  [ x.read_int, y.read_int, w.read_int, h.read_int ]
95
137
  end
96
138
  def color_get
@@ -98,7 +140,7 @@ module Efl
98
140
  g = FFI::MemoryPointer.new :int
99
141
  b = FFI::MemoryPointer.new :int
100
142
  a = FFI::MemoryPointer.new :int
101
- Efl::API.evas_object_color_get @evas, r, g, b, a
143
+ Efl::Evas.evas_object_color_get @evas, r, g, b, a
102
144
  [ r.read_int, g.read_int, b.read_int, a.read_int ]
103
145
  end
104
146
  end
@@ -6,13 +6,15 @@ require 'efl/ffi'
6
6
  module Efl
7
7
  #
8
8
  module Ecore
9
+ #
10
+ extend Efl::FFIHelper
11
+ #
9
12
  def self.method_missing m, *args, &block
10
- return Efl::API.send 'ecore_'+m.to_s, *args, &block
13
+ sym = 'ecore_'+m.to_s
14
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not self.respond_to? sym
15
+ self.module_eval "def self.#{m} *args, &block; r=self.#{sym}(*args); yield r if block_given?; r; end"
16
+ self.send sym, *args, &block
11
17
  end
12
- end
13
- #
14
- module API
15
- #
16
18
  #
17
19
  ffi_lib 'ecore'
18
20
  #
@@ -384,6 +386,7 @@ module Efl
384
386
  ]
385
387
  #
386
388
  attach_fcts fcts
389
+ #
387
390
  end
388
391
  end
389
392
  #
@@ -5,16 +5,18 @@ require 'efl/ffi'
5
5
  #
6
6
  module Efl
7
7
  #
8
- module Ecore_evas
8
+ module EcoreEvas
9
+ #
10
+ extend Efl::FFIHelper
11
+ #
9
12
  def self.method_missing m, *args, &block
10
- return Efl::API.send 'ecore_'+m.to_s, *args, &block
13
+ sym = 'ecore_evas_'+m.to_s
14
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not self.respond_to? sym
15
+ self.module_eval "def self.#{m} *args, &block; r=self.#{sym}(*args); yield r if block_given?; r; end"
16
+ self.send sym, *args, &block
11
17
  end
12
- end
13
- #
14
- module API
15
- #
16
18
  #
17
- ffi_lib 'ecore'
19
+ ffi_lib 'ecore_evas'
18
20
  #
19
21
  # ENUMS
20
22
  # typedef enum _Ecore_Evas_Engine_Type {...} Ecore_Evas_Engine_Type;
@@ -372,6 +374,7 @@ module Efl
372
374
  ]
373
375
  #
374
376
  attach_fcts fcts
377
+ #
375
378
  end
376
379
  end
377
380
  #
@@ -6,13 +6,15 @@ require 'efl/ffi'
6
6
  module Efl
7
7
  #
8
8
  module EcoreGetopt
9
+ #
10
+ extend Efl::FFIHelper
11
+ #
9
12
  def self.method_missing m, *args, &block
10
- return Efl::API.send 'ecore_getopt_'+m.to_s, *args, &block
13
+ sym = 'ecore_getopt_'+m.to_s
14
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not self.respond_to? sym
15
+ self.module_eval "def self.#{m} *args, &block; r=self.#{sym}(*args); yield r if block_given?; r; end"
16
+ self.send sym, *args, &block
11
17
  end
12
- end
13
- #
14
- module API
15
- #
16
18
  #
17
19
  ffi_lib 'ecore'
18
20
  #
@@ -62,6 +64,7 @@ module Efl
62
64
  ]
63
65
  #
64
66
  attach_fcts fcts
67
+ #
65
68
  end
66
69
  end
67
70
  #
@@ -6,15 +6,17 @@ require 'efl/ffi'
6
6
  module Efl
7
7
  #
8
8
  module EcoreInput
9
+ #
10
+ extend Efl::FFIHelper
11
+ #
9
12
  def self.method_missing m, *args, &block
10
- return Efl::API.send 'ecore_'+m.to_s, *args, &block
13
+ sym = 'ecore_event_'+m.to_s
14
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not self.respond_to? sym
15
+ self.module_eval "def self.#{m} *args, &block; r=self.#{sym}(*args); yield r if block_given?; r; end"
16
+ self.send sym, *args, &block
11
17
  end
12
- end
13
- #
14
- module API
15
- #
16
18
  #
17
- ffi_lib 'ecore'
19
+ ffi_lib 'ecore_input'
18
20
  #
19
21
  # ENUMS
20
22
  # typedef enum _Ecore_Event_Modifier {...} Ecore_Event_Modifier;
@@ -72,6 +74,7 @@ module Efl
72
74
  ]
73
75
  #
74
76
  attach_fcts fcts
77
+ #
75
78
  end
76
79
  end
77
80
  #
@@ -6,13 +6,15 @@ require 'efl/ffi'
6
6
  module Efl
7
7
  #
8
8
  module Edje
9
+ #
10
+ extend Efl::FFIHelper
11
+ #
9
12
  def self.method_missing m, *args, &block
10
- return Efl::API.send 'edje_'+m.to_s, *args, &block
13
+ sym = 'edje_'+m.to_s
14
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not self.respond_to? sym
15
+ self.module_eval "def self.#{m} *args, &block; r=self.#{sym}(*args); yield r if block_given?; r; end"
16
+ self.send sym, *args, &block
11
17
  end
12
- end
13
- #
14
- module API
15
- #
16
18
  #
17
19
  ffi_lib 'edje'
18
20
  #
@@ -121,7 +123,7 @@ module Efl
121
123
  fcts = [
122
124
  # EAPI extern Edje_Version *edje_version;
123
125
  # FIXME
124
- # EAPI const char *edje_external_param_type_str(Edje_External_Param_Type type) EINA_PURE;
126
+ # EAPI const char *edje_external_param_type_str(Edje_External_Param_Type type);
125
127
  [ :edje_external_param_type_str, [ :edje_external_param_type ], :string ],
126
128
  # EAPI int edje_init (void);
127
129
  [ :edje_init, [ ], :int ],
@@ -410,7 +412,7 @@ module Efl
410
412
  [ :edje_external_type_array_register, [ :edje_external_type_info_p ], :void ],
411
413
  # EAPI void edje_external_type_array_unregister (const Edje_External_Type_Info *array);
412
414
  [ :edje_external_type_array_unregister, [ :edje_external_type_info_p ], :void ],
413
- # EAPI unsigned int edje_external_type_abi_version_get (void) EINA_CONST;
415
+ # EAPI unsigned int edje_external_type_abi_version_get (void);
414
416
  [ :edje_external_type_abi_version_get, [ ], :uint ],
415
417
  # EAPI Eina_Iterator *edje_external_iterator_get (void);
416
418
  [ :edje_external_iterator_get, [ ], :eina_iterator_p ],
@@ -453,6 +455,7 @@ module Efl
453
455
  ]
454
456
  #
455
457
  attach_fcts fcts
458
+ #
456
459
  end
457
460
  end
458
461
  #
@@ -6,13 +6,15 @@ require 'efl/ffi'
6
6
  module Efl
7
7
  #
8
8
  module Eet
9
+ #
10
+ extend Efl::FFIHelper
11
+ #
9
12
  def self.method_missing m, *args, &block
10
- return Efl::API.send 'eet_'+m.to_s, *args, &block
13
+ sym = 'eet_'+m.to_s
14
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not self.respond_to? sym
15
+ self.module_eval "def self.#{m} *args, &block; r=self.#{sym}(*args); yield r if block_given?; r; end"
16
+ self.send sym, *args, &block
11
17
  end
12
- end
13
- #
14
- module API
15
- #
16
18
  #
17
19
  ffi_lib 'eet'
18
20
  #
@@ -327,6 +329,7 @@ module Efl
327
329
  ]
328
330
  #
329
331
  attach_fcts fcts
332
+ #
330
333
  end
331
334
  end
332
335
  #
@@ -0,0 +1,48 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ require 'efl/ffi'
5
+ #
6
+ module Efl
7
+ #
8
+ module Eina
9
+ #
10
+ extend Efl::FFIHelper
11
+ #
12
+ def self.method_missing m, *args, &block
13
+ sym = 'eina_'+m.to_s
14
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not self.respond_to? sym
15
+ self.module_eval "def self.#{m} *args, &block; r=self.#{sym}(*args); yield r if block_given?; r; end"
16
+ self.send sym, *args, &block
17
+ end
18
+ #
19
+ ffi_lib 'eina'
20
+ #
21
+ # ENUMS
22
+ #
23
+ # TYPEDEFS
24
+ # typedef struct _Eina_Version Eina_Version;
25
+ typedef :pointer, :eina_version
26
+ #
27
+ # CALLBACKS
28
+ #
29
+ # FUNCTIONS
30
+ fcts = [
31
+ # EAPI extern Eina_Version *eina_version;
32
+ # FIXME
33
+ # EAPI int eina_init(void);
34
+ [ :eina_init, [ ], :int ],
35
+ # EAPI int eina_shutdown(void);
36
+ [ :eina_shutdown, [ ], :int ],
37
+ # EAPI int eina_threads_init(void);
38
+ [ :eina_threads_init, [ ], :int ],
39
+ # EAPI int eina_threads_shutdown(void);
40
+ [ :eina_threads_shutdown, [ ], :int ],
41
+ ]
42
+ #
43
+ attach_fcts fcts
44
+ #
45
+ end
46
+ end
47
+ #
48
+ # EOF
@@ -0,0 +1,111 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ require 'efl/ffi'
5
+ #
6
+ module Efl
7
+ #
8
+ module EinaHash
9
+ #
10
+ extend Efl::FFIHelper
11
+ #
12
+ def self.method_missing m, *args, &block
13
+ sym = 'eina_hash_'+m.to_s
14
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not self.respond_to? sym
15
+ self.module_eval "def self.#{m} *args, &block; r=self.#{sym}(*args); yield r if block_given?; r; end"
16
+ self.send sym, *args, &block
17
+ end
18
+ #
19
+ ffi_lib 'eina'
20
+ #
21
+ # ENUMS
22
+ #
23
+ # TYPEDEFS
24
+ # typedef struct _Eina_Hash Eina_Hash;
25
+ typedef :pointer, :eina_hash
26
+ typedef :pointer, :eina_hash_p
27
+ # typedef struct _Eina_Hash_Tuple Eina_Hash_Tuple;
28
+ typedef :pointer, :eina_hash_tuple
29
+ #
30
+ # CALLBACKS
31
+ # typedef unsigned int (*Eina_Key_Length) (const void *key);
32
+ callback :eina_key_length, [ :void_p ], :uint
33
+ # typedef int (*Eina_Key_Cmp) (const void *key1, int key1_length, const void *key2, int key2_length);
34
+ callback :eina_key_cmp, [ :void_p, :int, :void_p, :int ], :int
35
+ # typedef int (*Eina_Key_Hash) (const void *key, int key_length);
36
+ callback :eina_key_hash, [ :void_p, :int ], :int
37
+ # typedef Eina_Bool (*Eina_Hash_Foreach) (const Eina_Hash *hash, const void *key, void *data, void *fdata);
38
+ callback :eina_hash_foreach, [ :eina_hash_p, :void_p, :void_p, :void_p ], :eina_bool
39
+ #
40
+ # FUNCTIONS
41
+ fcts = [
42
+ # EAPI Eina_Hash *eina_hash_new(Eina_Key_Length key_length_cb, Eina_Key_Cmp key_cmp_cb, Eina_Key_Hash key_hash_cb, Eina_Free_Cb data_free_cb, int buckets_power_size);
43
+ [ :eina_hash_new, [ :eina_key_length, :eina_key_cmp, :eina_key_hash, :eina_free_cb, :int ], :eina_hash_p ],
44
+ # EAPI Eina_Hash *eina_hash_string_djb2_new(Eina_Free_Cb data_free_cb);
45
+ [ :eina_hash_string_djb2_new, [ :eina_free_cb ], :eina_hash_p ],
46
+ # EAPI Eina_Hash *eina_hash_string_superfast_new(Eina_Free_Cb data_free_cb);
47
+ [ :eina_hash_string_superfast_new, [ :eina_free_cb ], :eina_hash_p ],
48
+ # EAPI Eina_Hash *eina_hash_string_small_new(Eina_Free_Cb data_free_cb);
49
+ [ :eina_hash_string_small_new, [ :eina_free_cb ], :eina_hash_p ],
50
+ # EAPI Eina_Hash *eina_hash_int32_new(Eina_Free_Cb data_free_cb);
51
+ [ :eina_hash_int32_new, [ :eina_free_cb ], :eina_hash_p ],
52
+ # EAPI Eina_Hash *eina_hash_int64_new(Eina_Free_Cb data_free_cb);
53
+ [ :eina_hash_int64_new, [ :eina_free_cb ], :eina_hash_p ],
54
+ # EAPI Eina_Hash *eina_hash_pointer_new(Eina_Free_Cb data_free_cb);
55
+ [ :eina_hash_pointer_new, [ :eina_free_cb ], :eina_hash_p ],
56
+ # EAPI Eina_Hash *eina_hash_stringshared_new(Eina_Free_Cb data_free_cb);
57
+ [ :eina_hash_stringshared_new, [ :eina_free_cb ], :eina_hash_p ],
58
+ # EAPI Eina_Bool eina_hash_add(Eina_Hash *hash, const void *key, const void *data);
59
+ [ :eina_hash_add, [ :eina_hash_p, :void_p, :void_p ], :eina_bool ],
60
+ # EAPI Eina_Bool eina_hash_direct_add(Eina_Hash *hash, const void *key, const void *data);
61
+ [ :eina_hash_direct_add, [ :eina_hash_p, :void_p, :void_p ], :eina_bool ],
62
+ # EAPI Eina_Bool eina_hash_del(Eina_Hash *hash, const void *key, const void *data);
63
+ [ :eina_hash_del, [ :eina_hash_p, :void_p, :void_p ], :eina_bool ],
64
+ # EAPI void *eina_hash_find(const Eina_Hash *hash, const void *key);
65
+ [ :eina_hash_find, [ :eina_hash_p, :void_p ], :void_p ],
66
+ # EAPI void *eina_hash_modify(Eina_Hash *hash, const void *key, const void *data);
67
+ [ :eina_hash_modify, [ :eina_hash_p, :void_p, :void_p ], :void_p ],
68
+ # EAPI void *eina_hash_set(Eina_Hash *hash, const void *key, const void *data);
69
+ [ :eina_hash_set, [ :eina_hash_p, :void_p, :void_p ], :void_p ],
70
+ # EAPI Eina_Bool eina_hash_move(Eina_Hash *hash, const void *old_key, const void *new_key);
71
+ [ :eina_hash_move, [ :eina_hash_p, :void_p, :void_p ], :eina_bool ],
72
+ # EAPI void eina_hash_free(Eina_Hash *hash);
73
+ [ :eina_hash_free, [ :eina_hash_p ], :void ],
74
+ # EAPI void eina_hash_free_buckets(Eina_Hash *hash);
75
+ [ :eina_hash_free_buckets, [ :eina_hash_p ], :void ],
76
+ # EAPI int eina_hash_population(const Eina_Hash *hash);
77
+ [ :eina_hash_population, [ :eina_hash_p ], :int ],
78
+ # EAPI Eina_Bool eina_hash_add_by_hash(Eina_Hash *hash, const void *key, int key_length, int key_hash, const void *data);
79
+ [ :eina_hash_add_by_hash, [ :eina_hash_p, :void_p, :int, :int, :void_p ], :eina_bool ],
80
+ # EAPI Eina_Bool eina_hash_direct_add_by_hash(Eina_Hash *hash, const void *key, int key_length, int key_hash, const void *data);
81
+ [ :eina_hash_direct_add_by_hash, [ :eina_hash_p, :void_p, :int, :int, :void_p ], :eina_bool ],
82
+ # EAPI Eina_Bool eina_hash_del_by_key_hash(Eina_Hash *hash, const void *key, int key_length, int key_hash);
83
+ [ :eina_hash_del_by_key_hash, [ :eina_hash_p, :void_p, :int, :int ], :eina_bool ],
84
+ # EAPI Eina_Bool eina_hash_del_by_key(Eina_Hash *hash, const void *key);
85
+ [ :eina_hash_del_by_key, [ :eina_hash_p, :void_p ], :eina_bool ],
86
+ # EAPI Eina_Bool eina_hash_del_by_data(Eina_Hash *hash, const void *data);
87
+ [ :eina_hash_del_by_data, [ :eina_hash_p, :void_p ], :eina_bool ],
88
+ # EAPI Eina_Bool eina_hash_del_by_hash(Eina_Hash *hash, const void *key, int key_length, int key_hash, const void *data);
89
+ [ :eina_hash_del_by_hash, [ :eina_hash_p, :void_p, :int, :int, :void_p ], :eina_bool ],
90
+ # EAPI void *eina_hash_find_by_hash(const Eina_Hash *hash, const void *key, int key_length, int key_hash);
91
+ [ :eina_hash_find_by_hash, [ :eina_hash_p, :void_p, :int, :int ], :void_p ],
92
+ # EAPI void *eina_hash_modify_by_hash(Eina_Hash *hash, const void *key, int key_length, int key_hash, const void *data);
93
+ [ :eina_hash_modify_by_hash, [ :eina_hash_p, :void_p, :int, :int, :void_p ], :void_p ],
94
+ # EAPI Eina_Iterator *eina_hash_iterator_key_new(const Eina_Hash *hash);
95
+ [ :eina_hash_iterator_key_new, [ :eina_hash_p ], :eina_iterator_p ],
96
+ # EAPI Eina_Iterator *eina_hash_iterator_data_new(const Eina_Hash *hash);
97
+ [ :eina_hash_iterator_data_new, [ :eina_hash_p ], :eina_iterator_p ],
98
+ # EAPI Eina_Iterator *eina_hash_iterator_tuple_new(const Eina_Hash *hash);
99
+ [ :eina_hash_iterator_tuple_new, [ :eina_hash_p ], :eina_iterator_p ],
100
+ # EAPI void eina_hash_foreach(const Eina_Hash *hash, Eina_Hash_Foreach cb, const void *fdata);
101
+ [ :eina_hash_foreach, [ :eina_hash_p, :eina_hash_foreach, :void_p ], :void ],
102
+ # EAPI int eina_hash_superfast(const char *key, int len);
103
+ [ :eina_hash_superfast, [ :string, :int ], :int ],
104
+ ]
105
+ #
106
+ attach_fcts fcts
107
+ #
108
+ end
109
+ end
110
+ #
111
+ # EOF