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.
- data/Changelog +13 -1
- data/README.rdoc +24 -14
- data/lib/efl/ecore.rb +7 -7
- data/lib/efl/ecore_evas.rb +78 -0
- data/lib/efl/ecore_getopt.rb +28 -29
- data/lib/efl/ecore_input.rb +14 -0
- data/lib/efl/edje.rb +47 -1
- data/lib/efl/eet.rb +18 -25
- data/lib/efl/eina.rb +14 -0
- data/lib/efl/eina_hash.rb +84 -0
- data/lib/efl/eina_list.rb +77 -0
- data/lib/efl/elementary.rb +22 -9
- data/lib/efl/evas.rb +67 -25
- data/lib/efl/{ecore/ecore-ffi.rb → ffi/ecore.rb} +8 -5
- data/lib/efl/{ecore/ecore_evas-ffi.rb → ffi/ecore_evas.rb} +10 -7
- data/lib/efl/{ecore/ecore_getopt-ffi.rb → ffi/ecore_getopt.rb} +8 -5
- data/lib/efl/{ecore/ecore_input-ffi.rb → ffi/ecore_input.rb} +9 -6
- data/lib/efl/{edje/edje-ffi.rb → ffi/edje.rb} +10 -7
- data/lib/efl/{eet/eet-ffi.rb → ffi/eet.rb} +8 -5
- data/lib/efl/ffi/eina.rb +48 -0
- data/lib/efl/ffi/eina_hash.rb +111 -0
- data/lib/efl/ffi/eina_list.rb +108 -0
- data/lib/efl/{eina/eina_types-ffi.rb → ffi/eina_types.rb} +8 -5
- data/lib/efl/{elementary/elementary-ffi.rb → ffi/elementary.rb} +16 -9
- data/lib/efl/{evas/evas-ffi.rb → ffi/evas.rb} +153 -150
- data/lib/efl/ffi.rb +81 -38
- data/lib/efl.rb +9 -4
- data/spec/ecore_evas_spec.rb +24 -0
- data/spec/ecore_getopt_spec.rb +1 -2
- data/spec/ecore_input_spec.rb +24 -0
- data/spec/ecore_spec.rb +2 -3
- data/spec/edje_spec.rb +1 -1
- data/spec/eet_spec.rb +68 -69
- data/spec/eina_hash_spec.rb +180 -0
- data/spec/eina_list_spec.rb +101 -0
- data/spec/eina_spec.rb +20 -0
- data/spec/evas_spec.rb +288 -40
- data/tasks/ffi.rake +1 -1
- data/test/test_edje.rb +141 -0
- data/test/test_elm_win.rb +25 -28
- data/test/test_elm_win_class.rb +7 -7
- data/test/test_evas.rb +106 -0
- metadata +30 -17
data/lib/efl/elementary.rb
CHANGED
@@ -2,7 +2,20 @@
|
|
2
2
|
# -*- coding: UTF-8 -*-
|
3
3
|
#
|
4
4
|
require 'efl/evas'
|
5
|
-
|
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::
|
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::
|
31
|
+
Efl::Elm.elm_init a.length, ptr
|
19
32
|
end
|
20
33
|
end
|
21
34
|
#
|
22
35
|
class ElmWin
|
23
|
-
include Efl::
|
24
|
-
|
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::
|
27
|
-
@ptr = @evas_object.
|
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::
|
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::
|
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/
|
4
|
+
require 'efl/ffi/evas'
|
5
5
|
#
|
6
6
|
module Efl
|
7
|
+
#
|
7
8
|
module Evas
|
8
9
|
#
|
9
|
-
|
10
|
-
|
11
|
-
|
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::
|
53
|
+
FFI::AutoPointer.new Efl::Evas.evas_new, method(:free)
|
17
54
|
when self.class
|
18
|
-
o.
|
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 "#{
|
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::
|
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
|
34
|
-
|
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::
|
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::
|
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::
|
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::
|
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
|
65
|
-
|
66
|
-
|
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::
|
111
|
+
FFI::AutoPointer.new Efl::Evas.evas_new, method(:free)
|
72
112
|
when self.class
|
73
|
-
o.
|
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 "#{
|
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::
|
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::
|
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::
|
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
|
-
|
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, █ 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
|
8
|
+
module EcoreEvas
|
9
|
+
#
|
10
|
+
extend Efl::FFIHelper
|
11
|
+
#
|
9
12
|
def self.method_missing m, *args, &block
|
10
|
-
|
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, █ 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 '
|
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
|
-
|
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, █ 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
|
-
|
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, █ 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 '
|
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
|
-
|
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, █ 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)
|
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)
|
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
|
-
|
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, █ 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
|
#
|
data/lib/efl/ffi/eina.rb
ADDED
@@ -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, █ 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, █ 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
|