ffi-efl 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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