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.
- 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
|