ffi-efl 0.0.3 → 0.0.4

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 (44) hide show
  1. data/Changelog +12 -0
  2. data/Rakefile +1 -1
  3. data/lib/efl/ecore.rb +17 -6
  4. data/lib/efl/ecore_evas.rb +78 -24
  5. data/lib/efl/ecore_getopt.rb +27 -23
  6. data/lib/efl/ecore_input.rb +1 -1
  7. data/lib/efl/edje.rb +11 -11
  8. data/lib/efl/eet.rb +20 -14
  9. data/lib/efl/eina.rb +1 -1
  10. data/lib/efl/eina_hash.rb +17 -30
  11. data/lib/efl/eina_list.rb +16 -25
  12. data/lib/efl/elementary.rb +8 -19
  13. data/lib/efl/evas.rb +167 -38
  14. data/lib/efl/ffi.rb +28 -17
  15. data/lib/efl/{ffi → native}/ecore.rb +9 -5
  16. data/lib/efl/{ffi → native}/ecore_evas.rb +27 -20
  17. data/lib/efl/{ffi → native}/ecore_getopt.rb +9 -5
  18. data/lib/efl/{ffi → native}/ecore_input.rb +9 -5
  19. data/lib/efl/{ffi → native}/edje.rb +14 -10
  20. data/lib/efl/{ffi → native}/eet.rb +9 -5
  21. data/lib/efl/{ffi → native}/eina.rb +9 -5
  22. data/lib/efl/{ffi → native}/eina_hash.rb +9 -5
  23. data/lib/efl/{ffi → native}/eina_list.rb +9 -5
  24. data/lib/efl/{ffi → native}/eina_types.rb +9 -5
  25. data/lib/efl/{ffi → native}/elementary.rb +70 -66
  26. data/lib/efl/{ffi → native}/evas.rb +11 -7
  27. data/lib/efl/native.rb +16 -0
  28. data/lib/efl.rb +1 -1
  29. data/spec/ecore_evas_spec.rb +325 -6
  30. data/spec/ecore_getopt_spec.rb +70 -104
  31. data/spec/ecore_input_spec.rb +6 -6
  32. data/spec/ecore_spec.rb +63 -60
  33. data/spec/edje_spec.rb +6 -6
  34. data/spec/eet_spec.rb +23 -22
  35. data/spec/eina_hash_spec.rb +53 -58
  36. data/spec/eina_list_spec.rb +28 -18
  37. data/spec/eina_spec.rb +6 -6
  38. data/spec/evas_spec.rb +371 -119
  39. data/tasks/constants.rb +4 -0
  40. data/test/test_edje.rb +1 -1
  41. data/test/test_elm_win-native.rb +38 -0
  42. data/test/test_evas.rb +4 -4
  43. metadata +32 -20
  44. data/test/test_elm_win.rb +0 -35
data/lib/efl/eina_list.rb CHANGED
@@ -1,34 +1,27 @@
1
1
  #! /usr/bin/env ruby
2
2
  # -*- coding: UTF-8 -*-
3
3
  #
4
- require 'efl/ffi/eina_list'
4
+ require 'efl/native/eina_list'
5
5
  #
6
- class Array
7
- def self.from_eina_list o
8
- if o.is_a? Efl::EinaList::REinaList
9
- o.to_ary
10
- elsif o.is_a? FFI::Pointer
11
- Efl::EinaList::REinaList.new(o).to_ary
12
- else
13
- raise ArgumentError.new "wrong argument #{o.class.name}"
14
- end
15
- end
16
- end
17
6
  module Efl
18
- module EinaList
7
+ #
8
+ module Native
19
9
  #
20
10
  class EinaListStruct < FFI::Struct
21
11
  layout :data, :pointer,
22
- :next, :pointer,
12
+ :next, :pointer,
23
13
  :prev, :pointer,
24
14
  :accounting, :pointer,
25
- :magic, :uint,
15
+ :magic, :uint
26
16
  end
17
+ end
18
+ #
19
+ module EinaList
27
20
  #
28
21
  class REinaList
29
22
  include Enumerable
30
23
  include Efl::ClassHelper
31
- proxy_list [Efl::EinaList,'eina_list_'].freeze
24
+ search_prefixes 'eina_list_'
32
25
  def initialize o=nil
33
26
  @ptr = (
34
27
  case o
@@ -36,24 +29,22 @@ module Efl
36
29
  o
37
30
  when NilClass
38
31
  FFI::Pointer::NULL
39
- when self.class
40
- o.to_ptr
41
32
  when Array
42
- o.inject(FFI::Pointer::NULL) { |p,e| Efl::EinaList.eina_list_append p, e }
33
+ o.inject(FFI::Pointer::NULL) { |p,e| Native.eina_list_append p, e }
43
34
  else
44
35
  raise ArgumentError.new "wrong argument #{o.class.name}"
45
36
  end
46
37
  )
47
38
  end
48
- def free p=nil
49
- return Efl::EinaList.eina_list_free p unless p.nil?
50
- Efl::EinaList.eina_list_free @ptr
39
+ def free
40
+ Native.eina_list_free @ptr
51
41
  @ptr = nil
52
42
  end
53
43
  def each
44
+ return if not block_given?
54
45
  p = @ptr
55
46
  while p!=::FFI::Pointer::NULL
56
- l = Efl::EinaList::EinaListStruct.new p
47
+ l = Native::EinaListStruct.new p
57
48
  yield l[:data]
58
49
  p = l[:next]
59
50
  end
@@ -63,11 +54,11 @@ module Efl
63
54
  end
64
55
  # for fun and tests
65
56
  def append p
66
- @ptr = Efl::EinaList.eina_list_append @ptr, p
57
+ @ptr = Native.eina_list_append @ptr, p
67
58
  end
68
59
  alias :<< :append
69
60
  def prepend p
70
- @ptr = Efl::EinaList.eina_list_prepend @ptr, p
61
+ @ptr = Native.eina_list_prepend @ptr, p
71
62
  end
72
63
  alias :unshift :prepend
73
64
  end
@@ -2,20 +2,9 @@
2
2
  # -*- coding: UTF-8 -*-
3
3
  #
4
4
  require 'efl/evas'
5
+ require 'efl/native/elementary'
5
6
  #
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 !
7
+ Efl::Evas::REvasObject.search_prefixes << 'elm_' # append not prepend !
19
8
  #
20
9
  module Efl
21
10
  module Elm
@@ -23,30 +12,30 @@ module Efl
23
12
  class << self
24
13
  def init *args
25
14
  a = args.select { |e| e.is_a? String }
26
- return Efl::Elm.elm_init 0, FFI::MemoryPointer::NULL if a.length==0
15
+ return Native.elm_init 0, FFI::MemoryPointer::NULL if a.length==0
27
16
  ptr = FFI::MemoryPointer.new :pointer, a.length
28
17
  a.each_with_index do |s,i|
29
18
  ptr[i].write_pointer FFI::MemoryPointer.from_string(s)
30
19
  end
31
- Efl::Elm.elm_init a.length, ptr
20
+ Native.elm_init a.length, ptr
32
21
  end
33
22
  end
34
23
  #
35
24
  class ElmWin
36
25
  include Efl::ClassHelper
37
- proxy_list [Efl::Elm,'elm_win_'].freeze, [Efl::Elm,'elm_'].freeze
26
+ search_prefixes 'elm_win_', 'elm_'
38
27
  def initialize parent, title, type=:elm_win_basic
39
- @evas_object = Efl::Evas::REvasObject.new Efl::Elm.elm_win_add parent, title, type
28
+ @evas_object = Evas::REvasObject.new Native.elm_win_add parent, title, type
40
29
  @ptr = @evas_object.to_ptr
41
30
  yield self,@evas_object if block_given?
42
31
  end
43
32
  def add e
44
- eo = Efl::Evas::REvasObject.new Efl::Elm.send "elm_#{e}_add", @ptr
33
+ eo = Evas::REvasObject.new Native.send "elm_#{e}_add", @ptr
45
34
  yield eo if block_given?
46
35
  eo
47
36
  end
48
37
  def smart_callback_add event_str, cb, data=FFI::MemoryPointer::NULL
49
- Efl::Evas.evas_object_smart_callback_add @ptr, event_str, cb, data
38
+ Native.evas_object_smart_callback_add @ptr, event_str, cb, data
50
39
  end
51
40
  end
52
41
  #
data/lib/efl/evas.rb CHANGED
@@ -1,17 +1,11 @@
1
1
  #! /usr/bin/env ruby
2
2
  # -*- coding: UTF-8 -*-
3
3
  #
4
- require 'efl/ffi/evas'
4
+ require 'efl/native/evas'
5
5
  #
6
6
  module Efl
7
7
  #
8
- module Evas
9
- #
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
8
+ module Native
15
9
  #
16
10
  callback :new_update_region_cb, [:int, :int, :int, :int, :int_p], :pointer
17
11
  callback :free_update_region_cb, [:int, :int, :int, :int, :pointer], :void
@@ -32,118 +26,253 @@ module Efl
32
26
  :color_key_r, :int,
33
27
  :color_key_g, :int,
34
28
  :color_key_b, :int,
35
- :func, EngineInfoBufferFuncStruct,
29
+ :func, EngineInfoBufferFuncStruct
36
30
  end
37
31
  class EngineInfoBufferStruct < FFI::Struct
38
32
  layout :magic, EngineInfoStruct,
39
33
  :info, EngineInfoBufferInfoStruct,
40
34
  # :func, EvasEngineInfoBufferFunc,
41
- :mode, :evas_engine_render_mode,
35
+ :mode, :evas_engine_render_mode
42
36
  end
43
37
  #
38
+ end
39
+ #
40
+ module Evas
41
+ #
42
+ EVAS_ENGINE_BUFFER_DEPTH_ARGB32 = 0
43
+ EVAS_ENGINE_BUFFER_DEPTH_BGRA32 = 1
44
+ EVAS_ENGINE_BUFFER_DEPTH_RGB24 = 2
45
+ EVAS_ENGINE_BUFFER_DEPTH_BGR24 = 3
46
+ EVAS_ENGINE_BUFFER_DEPTH_RGB32 = 4
47
+ #
44
48
  class REvas
45
49
  #
46
50
  include Efl::ClassHelper
47
- proxy_list [Efl::Evas,'evas_'].freeze
51
+ search_prefixes 'evas_'
48
52
  #
49
53
  def initialize o=nil
50
54
  @ptr = (
51
55
  case o
52
56
  when NilClass
53
- FFI::AutoPointer.new Efl::Evas.evas_new, method(:free)
54
- when self.class
55
- o.to_ptr
56
- when FFI::AutoPointer
57
- o
57
+ FFI::AutoPointer.new Native.evas_new, REvas.method(:release)
58
58
  when FFI::Pointer
59
- FFI::AutoPointer.new o, method(:free)
59
+ o
60
60
  else
61
61
  raise ArgumentError.new "wrong argument #{o.class.name}"
62
62
  end
63
63
  )
64
64
  yield self if block_given?
65
65
  end
66
- def free p=nil
67
- return Efl::Evas.evas_free p unless p.nil?
68
- Efl::Evas.evas_free @ptr
66
+ def self.release p
67
+ Native.evas_free p unless p.nil?
68
+ end
69
+ def free
70
+ @ptr.autorelease=false if @ptr.is_a? FFI::AutoPointer
71
+ REvas.release @ptr
69
72
  @ptr=nil
70
73
  end
71
74
  def object_add t
72
- Efl::Evas::REvasObject.new Efl::Evas.send "evas_object_#{t}_add", @ptr
75
+ ts = t.to_s
76
+ o = (
77
+ case ts
78
+ when 'rectangle'
79
+ Evas::REvasRectangle.new Native.evas_object_rectangle_add @ptr
80
+ when 'line'
81
+ Evas::REvasLine.new Native.evas_object_line_add @ptr
82
+ when 'polygon'
83
+ Evas::REvasPolygon.new Native.evas_object_polygon_add @ptr
84
+ else
85
+ raise NameError.new "unknown or not implemented yet evas_object type #{ts}"
86
+ end
87
+ )
88
+ yield o if block_given?
89
+ o
73
90
  end
74
91
  def output_size_get
75
92
  x = FFI::MemoryPointer.new :int
76
93
  y = FFI::MemoryPointer.new :int
77
- Efl::Evas.evas_output_size_get @ptr, x, y
94
+ Native.evas_output_size_get @ptr, x, y
78
95
  [ x.read_int, y.read_int ]
79
96
  end
97
+ alias :output_size :output_size_get
98
+ alias :size :output_size_get
80
99
  def output_viewport_get
81
100
  x = FFI::MemoryPointer.new :int
82
101
  y = FFI::MemoryPointer.new :int
83
102
  w = FFI::MemoryPointer.new :int
84
103
  h = FFI::MemoryPointer.new :int
85
- Efl::Evas.evas_output_viewport_get @ptr, x, y, w, h
104
+ Native.evas_output_viewport_get @ptr, x, y, w, h
86
105
  [ x.read_int, y.read_int, w.read_int, h.read_int ]
87
106
  end
107
+ alias :output_viewport :output_viewport_get
108
+ alias :viewport :output_viewport_get
88
109
  def pointer_output_xy_get
89
110
  x = FFI::MemoryPointer.new :int
90
111
  y = FFI::MemoryPointer.new :int
91
- Efl::Evas.evas_pointer_output_xy_get @ptr, x, y
112
+ Native.evas_pointer_output_xy_get @ptr, x, y
92
113
  [ x.read_int, y.read_int ]
93
114
  end
115
+ alias :pointer_output :pointer_output_xy_get
94
116
  def pointer_canvas_xy_get
95
117
  x = FFI::MemoryPointer.new :int
96
118
  y = FFI::MemoryPointer.new :int
97
- Efl::Evas.evas_pointer_canvas_xy_get @ptr, x, y
119
+ Native.evas_pointer_canvas_xy_get @ptr, x, y
98
120
  [ x.read_int, y.read_int ]
99
121
  end
122
+ alias :pointer_canvas :pointer_canvas_xy_get
100
123
  end
101
124
  #
102
125
  class REvasObject
103
126
  #
104
127
  include Efl::ClassHelper
105
- proxy_list [Efl::Evas,'evas_object_'].freeze, [Efl::Evas,'evas_'].freeze
128
+ search_prefixes 'evas_object_', 'evas_'
106
129
  #
107
130
  def initialize o=nil
108
131
  @ptr = (
109
132
  case o
110
133
  when NilClass
111
- FFI::AutoPointer.new Efl::Evas.evas_new, method(:free)
112
- when self.class
113
- o.to_ptr
114
- when FFI::AutoPointer
115
- o
134
+ FFI::AutoPointer.new Native.evas_new, REvasObject.method(:release)
116
135
  when FFI::Pointer
117
- FFI::AutoPointer.new o, method(:free)
136
+ o
118
137
  else
119
138
  raise ArgumentError.new "wrong argument #{o.class.name}"
120
139
  end
121
140
  )
122
141
  yield self if block_given?
123
142
  end
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
143
+ def self.release p
144
+ Native.evas_object_del p unless p.nil?
145
+ end
146
+ def free
147
+ @ptr.autopointer=false if @ptr.is_a? FFI::AutoPointer
148
+ REvasObject.release @ptr
128
149
  @ptr=nil
129
150
  end
151
+ def evas_name
152
+ Native.evas_object_name_get @ptr
153
+ end
154
+ def evas_type
155
+ Native.evas_object_type_get @ptr
156
+ end
130
157
  def geometry_get
131
158
  x = FFI::MemoryPointer.new :int
132
159
  y = FFI::MemoryPointer.new :int
133
160
  w = FFI::MemoryPointer.new :int
134
161
  h = FFI::MemoryPointer.new :int
135
- Efl::Evas.evas_object_geometry_get @evas, x, y, w, h
162
+ Native.evas_object_geometry_get @ptr, x, y, w, h
136
163
  [ x.read_int, y.read_int, w.read_int, h.read_int ]
137
164
  end
165
+ alias :geometry :geometry_get
166
+ def size
167
+ geometry_get[2..-1]
168
+ end
169
+ def size= wh
170
+ Native.evas_object_resize @ptr, *wh
171
+ end
138
172
  def color_get
139
173
  r = FFI::MemoryPointer.new :int
140
174
  g = FFI::MemoryPointer.new :int
141
175
  b = FFI::MemoryPointer.new :int
142
176
  a = FFI::MemoryPointer.new :int
143
- Efl::Evas.evas_object_color_get @evas, r, g, b, a
177
+ Native.evas_object_color_get @ptr, r, g, b, a
144
178
  [ r.read_int, g.read_int, b.read_int, a.read_int ]
145
179
  end
180
+ alias :color :color_get
181
+ def evas_get
182
+ REvas.new Native.evas_object_evas_get @ptr
183
+ end
184
+ alias :evas :evas_get
185
+ def above_get
186
+ REvasObject.new Native.evas_object_above_get @ptr
187
+ end
188
+ alias :above :above_get
189
+ def below_get
190
+ REvasObject.new Native.evas_object_below_get @ptr
191
+ end
192
+ alias :below :below_get
193
+ def size_hint_min_get
194
+ w = FFI::MemoryPointer.new :int
195
+ h = FFI::MemoryPointer.new :int
196
+ Native.evas_object_size_hint_min_get @ptr, w, h
197
+ [ w.read_int, h.read_int ]
198
+ end
199
+ alias :size_hint_min :size_hint_min_get
200
+ def size_hint_max_get
201
+ w = FFI::MemoryPointer.new :int
202
+ h = FFI::MemoryPointer.new :int
203
+ Native.evas_object_size_hint_max_get @ptr, w, h
204
+ [ w.read_int, h.read_int ]
205
+ end
206
+ alias :size_hint_max :size_hint_max_get
207
+ def size_hint_request_get
208
+ w = FFI::MemoryPointer.new :int
209
+ h = FFI::MemoryPointer.new :int
210
+ Native.evas_object_size_hint_request_get @ptr, w, h
211
+ [ w.read_int, h.read_int ]
212
+ end
213
+ alias :size_hint_request :size_hint_request_get
214
+ def size_hint_aspect_get
215
+ a = FFI::MemoryPointer.new :int
216
+ w = FFI::MemoryPointer.new :int
217
+ h = FFI::MemoryPointer.new :int
218
+ Native.evas_object_size_hint_aspect_get @ptr, a, w, h
219
+ [ Native.enum_type(:evas_aspect_control)[a.read_int], w.read_int, h.read_int ]
220
+ end
221
+ alias :size_hint_aspect :size_hint_aspect_get
222
+ def size_hint_align_get
223
+ w = FFI::MemoryPointer.new :double
224
+ h = FFI::MemoryPointer.new :double
225
+ Native.evas_object_size_hint_align_get @ptr, w, h
226
+ [ w.read_double, h.read_double ]
227
+ end
228
+ alias :size_hint_align :size_hint_align_get
229
+ def size_hint_weight_get
230
+ w = FFI::MemoryPointer.new :double
231
+ h = FFI::MemoryPointer.new :double
232
+ Native.evas_object_size_hint_weight_get @ptr, w, h
233
+ [ w.read_double, h.read_double ]
234
+ end
235
+ alias :size_hint_weight :size_hint_weight_get
236
+ def size_hint_padding_get
237
+ l = FFI::MemoryPointer.new :int
238
+ r = FFI::MemoryPointer.new :int
239
+ t = FFI::MemoryPointer.new :int
240
+ b = FFI::MemoryPointer.new :int
241
+ Native.evas_object_size_hint_padding_get @ptr, l, r, t, b
242
+ [ l.read_int, r.read_int, t.read_int, b.read_int ]
243
+ end
244
+ alias :size_hint_padding :size_hint_padding_get
245
+ def data_get k
246
+ r = Native.evas_object_data_get @ptr, k
247
+ return nil if r==FFI::Pointer::NULL
248
+ r.read_string
249
+ end
250
+ alias :data :data_get
251
+ end
252
+ #
253
+ class REvasRectangle < REvasObject
254
+ end
255
+ #
256
+ class REvasLine < REvasObject
257
+ #
258
+ search_prefixes 'evas_object_line_'
259
+ #
260
+ def line_xy_get
261
+ x1 = FFI::MemoryPointer.new :int
262
+ y1 = FFI::MemoryPointer.new :int
263
+ x2 = FFI::MemoryPointer.new :int
264
+ y2 = FFI::MemoryPointer.new :int
265
+ Native.evas_object_line_xy_get @ptr, x1, y1, x2, y2
266
+ [ x1.read_int, y1.read_int, x2.read_int, y2.read_int ]
267
+ end
268
+ end
269
+ #
270
+ class REvasPolygon < REvasObject
271
+ #
272
+ search_prefixes 'evas_object_polygon_'
273
+ #
146
274
  end
275
+ #
147
276
  end
148
277
  end
149
278
  #
data/lib/efl/ffi.rb CHANGED
@@ -72,40 +72,51 @@ module Efl
72
72
  def === o; @ptr === o.to_ptr; end
73
73
  def address; @ptr.address; end
74
74
  def self.included kls
75
- # create class instance @proxy_list
76
- kls.class_eval "@proxy_list ||=[]"
77
- # access and prepend *args to @proxy_list
78
- kls.class_eval "def self.proxy_list *args; @proxy_list.unshift *args unless args.empty?; @proxy_list; end"
79
- # on inheritance, copy ancestor's @proxy_list
75
+ # create class instance @search_prefixes
76
+ kls.class_eval "@search_prefixes ||=[]"
77
+ # access and prepend *args to @search_prefixes
78
+ kls.class_eval "def self.search_prefixes *args; @search_prefixes.unshift *args unless args.empty?; @search_prefixes; end"
79
+ # on inheritance, copy ancestor's @search_prefixes
80
80
  kls.class_eval <<-EOF
81
81
  def self.inherited sub
82
- sub.class_eval '@proxy_list = []'
83
- sub.proxy_list *self.proxy_list
82
+ sub.class_eval '@search_prefixes = []'
83
+ sub.search_prefixes *self.search_prefixes
84
84
  end
85
85
  EOF
86
86
  end
87
87
  def method_missing m, *args, &block
88
- if m =~/^(.*)=$/
88
+ m_s = m.to_s
89
+ if m_s =~/^(.*)=$/
89
90
  m_s = $1+'_set'
90
91
  args_s = '*args[0]'
91
- elsif m =~/^(.*)\?$/
92
+ elsif m_s =~/^(.*)\?$/
92
93
  m_s = $1+'_get'
93
94
  args_s = '*args'
94
95
  else
95
- m_s = m.to_s
96
96
  args_s = '*args'
97
97
  end
98
- self.class.proxy_list.each do |mod,p|
98
+ self.class.search_prefixes.each do |p|
99
99
  sym = p+m_s
100
- if mod.respond_to? sym
101
- self.class.class_eval "def #{m} *args, &block; r=#{mod.name}.#{sym}(@ptr,#{args_s}); yield r if block_given?; r; end"
102
- return self.send m, *args, &block
103
- elsif mod.respond_to? m
104
- self.class.class_eval "def #{m} *args, &block; r=#{mod.name}.#{m}(@ptr,#{args_s}); yield r if block_given?; r; end"
100
+ meth = (
101
+ if Efl::Native.respond_to? sym
102
+ sym
103
+ elsif Efl::Native.respond_to? m
104
+ m
105
+ elsif Efl::Native.respond_to? sym+'_get'
106
+ sym+'_get'
107
+ elsif Efl::Native.respond_to? m_s+'_get'
108
+ m_s+'_get'
109
+ else
110
+ nil
111
+ end
112
+ )
113
+ if not meth.nil?
114
+ self.class.class_eval "def #{m} *args, &block; r=Efl::Native.#{meth}(@ptr,#{args_s}); yield r if block_given?; r; end"
105
115
  return self.send m, *args, &block
106
116
  end
107
117
  end
108
- raise NameError.new "#{self.class} is unable to resolve #{m} within #{self.class.proxy_list.inspect}"
118
+ return [self.to_s+' ['+self.to_ptr.to_s+']'] if m_s=~/^to_ary$/
119
+ Kernel.raise NameError.new "#{self.class.name} is unable to resolve #{m} within #{self.class.search_prefixes.inspect}"
109
120
  end
110
121
  end
111
122
  end
@@ -6,16 +6,20 @@ require 'efl/ffi'
6
6
  module Efl
7
7
  #
8
8
  module Ecore
9
- #
10
- extend Efl::FFIHelper
11
9
  #
12
10
  def self.method_missing m, *args, &block
13
11
  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
12
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not Efl::Native.respond_to? sym
13
+ self.module_eval "def self.#{m} *args, &block; r=Efl::Native.#{sym}(*args); yield r if block_given?; r; end"
14
+ self.send m, *args, &block
17
15
  end
18
16
  #
17
+ end
18
+ #
19
+ module Native
20
+ #
21
+ extend Efl::FFIHelper
22
+ #
19
23
  ffi_lib 'ecore'
20
24
  #
21
25
  # ENUMS
@@ -6,16 +6,20 @@ require 'efl/ffi'
6
6
  module Efl
7
7
  #
8
8
  module EcoreEvas
9
- #
10
- extend Efl::FFIHelper
11
9
  #
12
10
  def self.method_missing m, *args, &block
13
11
  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
12
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not Efl::Native.respond_to? sym
13
+ self.module_eval "def self.#{m} *args, &block; r=Efl::Native.#{sym}(*args); yield r if block_given?; r; end"
14
+ self.send m, *args, &block
17
15
  end
18
16
  #
17
+ end
18
+ #
19
+ module Native
20
+ #
21
+ extend Efl::FFIHelper
22
+ #
19
23
  ffi_lib 'ecore_evas'
20
24
  #
21
25
  # ENUMS
@@ -49,6 +53,9 @@ module Efl
49
53
  typedef :pointer, :ecore_evas_p
50
54
  #
51
55
  # CALLBACKS
56
+ # void (*func) (Ecore_Evas *ee)
57
+ callback :ecore_evas_event_cb, [:ecore_evas_p], :void
58
+ #
52
59
  #
53
60
  # FUNCTIONS
54
61
  fcts = [
@@ -185,35 +192,35 @@ module Efl
185
192
  # EAPI void ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data);
186
193
  [ :ecore_evas_data_set, [ :ecore_evas_p, :string, :void_p ], :void ],
187
194
  # EAPI void ecore_evas_callback_resize_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
188
- # FIXME
195
+ [ :ecore_evas_callback_resize_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
189
196
  # EAPI void ecore_evas_callback_move_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
190
- # FIXME
197
+ [ :ecore_evas_callback_move_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
191
198
  # EAPI void ecore_evas_callback_show_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
192
- # FIXME
199
+ [ :ecore_evas_callback_show_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
193
200
  # EAPI void ecore_evas_callback_hide_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
194
- # FIXME
201
+ [ :ecore_evas_callback_hide_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
195
202
  # EAPI void ecore_evas_callback_delete_request_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
196
- # FIXME
203
+ [ :ecore_evas_callback_delete_request_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
197
204
  # EAPI void ecore_evas_callback_destroy_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
198
- # FIXME
205
+ [ :ecore_evas_callback_destroy_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
199
206
  # EAPI void ecore_evas_callback_focus_in_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
200
- # FIXME
207
+ [ :ecore_evas_callback_focus_in_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
201
208
  # EAPI void ecore_evas_callback_focus_out_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
202
- # FIXME
209
+ [ :ecore_evas_callback_focus_out_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
203
210
  # EAPI void ecore_evas_callback_sticky_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
204
- # FIXME
211
+ [ :ecore_evas_callback_sticky_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
205
212
  # EAPI void ecore_evas_callback_unsticky_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
206
- # FIXME
213
+ [ :ecore_evas_callback_unsticky_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
207
214
  # EAPI void ecore_evas_callback_mouse_in_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
208
- # FIXME
215
+ [ :ecore_evas_callback_mouse_in_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
209
216
  # EAPI void ecore_evas_callback_mouse_out_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
210
- # FIXME
217
+ [ :ecore_evas_callback_mouse_out_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
211
218
  # EAPI void ecore_evas_callback_pre_render_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
212
- # FIXME
219
+ [ :ecore_evas_callback_pre_render_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
213
220
  # EAPI void ecore_evas_callback_post_render_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
214
- # FIXME
221
+ [ :ecore_evas_callback_post_render_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
215
222
  # EAPI void ecore_evas_callback_pre_free_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
216
- # FIXME
223
+ [ :ecore_evas_callback_pre_free_set, [:ecore_evas_p, :ecore_evas_event_cb], :void],
217
224
  # EAPI Evas *ecore_evas_get(const Ecore_Evas *ee);
218
225
  [ :ecore_evas_get, [ :ecore_evas_p ], :evas_p ],
219
226
  # EAPI void ecore_evas_move(Ecore_Evas *ee, int x, int y);
@@ -6,16 +6,20 @@ require 'efl/ffi'
6
6
  module Efl
7
7
  #
8
8
  module EcoreGetopt
9
- #
10
- extend Efl::FFIHelper
11
9
  #
12
10
  def self.method_missing m, *args, &block
13
11
  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
12
+ raise NameError.new "#{self.name}.#{sym} (#{m})" if not Efl::Native.respond_to? sym
13
+ self.module_eval "def self.#{m} *args, &block; r=Efl::Native.#{sym}(*args); yield r if block_given?; r; end"
14
+ self.send m, *args, &block
17
15
  end
18
16
  #
17
+ end
18
+ #
19
+ module Native
20
+ #
21
+ extend Efl::FFIHelper
22
+ #
19
23
  ffi_lib 'ecore'
20
24
  #
21
25
  # ENUMS