1 
2 #ifdef HAVE_CONFIG_H
3 #include <config.h>
4 #include <elementary_config.h>
5 #endif
6 
7 #include <Efl.h>
8 #include <Efl_Config.h>
9 #include <Ecore.h>
10 #include <Ecore_Evas.h>
11 #include <Eina.hh>
12 #include <Eina_Js.hh>
13 #include <Ecore_Js.hh>
14 #include <Eio_Js.hh>
15 #include <Eldbus_Js.hh>
16 #include <Ethumb_Js.hh>
17 #include <Elementary.h>
18 
19 #include <iostream>
20 
21 #ifdef EAPI
22 # undef EAPI
23 #endif
24 
25 #ifdef _WIN32
26 #  define EAPI __declspec(dllexport)
27 #else
28 # ifdef __GNUC__
29 #  if __GNUC__ >= 4
30 #   define EAPI __attribute__ ((visibility("default")))
31 #  else
32 #   define EAPI
33 #  endif
34 # else
35 #  define EAPI
36 # endif
37 #endif /* ! _WIN32 */
38 
39 EAPI void eina_container_register(v8::Handle<v8::Object>, v8::Isolate* isolate);
40 EAPI void eina_log_register(v8::Handle<v8::Object>, v8::Isolate* isolate);
41 EAPI void eina_value_register(v8::Handle<v8::Object>, v8::Isolate* isolate);
42 EAPI void register_ecore_mainloop(v8::Handle<v8::Object> global, v8::Isolate* isolate);
43 
44 namespace ecore {
45   //EAPI void register_exe(v8::Handle<v8::Object> global, v8::Isolate* isolate);
46 EAPI void register_idler(v8::Handle<v8::Object> global, v8::Isolate* isolate);
47 EAPI void register_ecore(v8::Isolate* isolate, v8::Handle<v8::Object> exports);
48 namespace idle {
49 EAPI void register_enterer(v8::Handle<v8::Object> global, v8::Isolate* isolate);
50 EAPI void register_exiter(v8::Handle<v8::Object> global, v8::Isolate* isolate);
51 }
52 EAPI void register_job(v8::Handle<v8::Object> global, v8::Isolate* isolate);
53   //EAPI void register_parent(v8::Handle<v8::Object> global, v8::Isolate* isolate);
54 EAPI void register_poller(v8::Handle<v8::Object> global, v8::Isolate* isolate);
55 EAPI void register_timer(v8::Handle<v8::Object> global, v8::Isolate* isolate);
56 }
57 
58 EAPI void register_ecore_audio(v8::Handle<v8::Object> global, v8::Isolate* isolate);
59 EAPI void register_ecore_audio_in(v8::Handle<v8::Object> global, v8::Isolate* isolate);
60 EAPI void register_ecore_audio_in_sndfile(v8::Handle<v8::Object> global, v8::Isolate* isolate);
61 EAPI void register_ecore_audio_in_tone(v8::Handle<v8::Object> global, v8::Isolate* isolate);
62 EAPI void register_ecore_audio_out(v8::Handle<v8::Object> global, v8::Isolate* isolate);
63 EAPI void register_ecore_audio_out_pulse(v8::Handle<v8::Object> global, v8::Isolate* isolate);
64 EAPI void register_ecore_audio_out_sndfile(v8::Handle<v8::Object> global, v8::Isolate* isolate);
65 
66 namespace efl {
67 EAPI void register_object(v8::Handle<v8::Object> global, v8::Isolate* isolate);
68 EAPI void register_animator(v8::Handle<v8::Object> global, v8::Isolate* isolate);
69 EAPI void register_container(v8::Handle<v8::Object> global, v8::Isolate* isolate);
70 EAPI void register_control(v8::Handle<v8::Object> global, v8::Isolate* isolate);
71 EAPI void register_file(v8::Handle<v8::Object> global, v8::Isolate* isolate);
72 EAPI void register_image(v8::Handle<v8::Object> global, v8::Isolate* isolate);
73 EAPI void register_loop(v8::Handle<v8::Object> global, v8::Isolate* isolate);
74 EAPI void register_orientation(v8::Handle<v8::Object> global, v8::Isolate* isolate);
75 EAPI void register_player(v8::Handle<v8::Object> global, v8::Isolate* isolate);
76 EAPI void register_text(v8::Handle<v8::Object> global, v8::Isolate* isolate);
77 EAPI void register_text_properties(v8::Handle<v8::Object> global, v8::Isolate* isolate);
78 }
79 
80 namespace efl { namespace ui {
81 EAPI void register_button(v8::Handle<v8::Object> global, v8::Isolate* isolate);
82 EAPI void register_check(v8::Handle<v8::Object> global, v8::Isolate* isolate);
83 EAPI void register_progressbar(v8::Handle<v8::Object> global, v8::Isolate* isolate);
84 EAPI void register_radio(v8::Handle<v8::Object> global, v8::Isolate* isolate);
85 EAPI void register_slider(v8::Handle<v8::Object> global, v8::Isolate* isolate);
86 EAPI void register_video(v8::Handle<v8::Object> global, v8::Isolate* isolate);
87 EAPI void register_flip(v8::Handle<v8::Object> global, v8::Isolate* isolate);
88 EAPI void register_frame(v8::Handle<v8::Object> global, v8::Isolate* isolate);
89 EAPI void register_box(v8::Handle<v8::Object> global, v8::Isolate* isolate);
90 EAPI void register_image(v8::Handle<v8::Object> global, v8::Isolate* isolate);
91 EAPI void register_win(v8::Handle<v8::Object> global, v8::Isolate* isolate);
92 }}
93 
94 namespace efl { namespace ui { namespace image {
95 EAPI void register_zoomable(v8::Handle<v8::Object> global, v8::Isolate* isolate);
96 }}}
97 
98 namespace efl { namespace ui { namespace image { namespace zoomable {
99 EAPI void register_pan(v8::Handle<v8::Object> global, v8::Isolate* isolate);
100 }}}}
101 
102 namespace efl { namespace canvas {
103 EAPI void register_object(v8::Handle<v8::Object> global, v8::Isolate* isolate);
104 EAPI void register_group(v8::Handle<v8::Object> global, v8::Isolate* isolate);
105 EAPI void register_rectangle(v8::Handle<v8::Object> global, v8::Isolate* isolate);
106 }}
107 
108 namespace evas {
109 EAPI void register_box(v8::Handle<v8::Object> global, v8::Isolate* isolate);
110 EAPI void register_canvas(v8::Handle<v8::Object> global, v8::Isolate* isolate);
111 EAPI void register_clickable_interface(v8::Handle<v8::Object> global, v8::Isolate* isolate);
112 EAPI void register_common_interface(v8::Handle<v8::Object> global, v8::Isolate* isolate);
113 EAPI void register_draggable_interface(v8::Handle<v8::Object> global, v8::Isolate* isolate);
114 EAPI void register_grid(v8::Handle<v8::Object> global, v8::Isolate* isolate);
115 EAPI void register_image(v8::Handle<v8::Object> global, v8::Isolate* isolate);
116 EAPI void register_line(v8::Handle<v8::Object> global, v8::Isolate* isolate);
117 EAPI void register_object(v8::Handle<v8::Object> global, v8::Isolate* isolate);
118 EAPI void register_object_smart(v8::Handle<v8::Object> global, v8::Isolate* isolate);
119 EAPI void register_out(v8::Handle<v8::Object> global, v8::Isolate* isolate);
120 EAPI void register_scrollable_interface(v8::Handle<v8::Object> global, v8::Isolate* isolate);
121 EAPI void register_selectable_interface(v8::Handle<v8::Object> global, v8::Isolate* isolate);
122 EAPI void register_signal_interface(v8::Handle<v8::Object> global, v8::Isolate* isolate);
123 EAPI void register_smart_clipped(v8::Handle<v8::Object> global, v8::Isolate* isolate);
124 EAPI void register_table(v8::Handle<v8::Object> global, v8::Isolate* isolate);
125 EAPI void register_text(v8::Handle<v8::Object> global, v8::Isolate* isolate);
126 EAPI void register_textblock(v8::Handle<v8::Object> global, v8::Isolate* isolate);
127 EAPI void register_textgrid(v8::Handle<v8::Object> global, v8::Isolate* isolate);
128 EAPI void register_zoomable_interface(v8::Handle<v8::Object> global, v8::Isolate* isolate);
129 
130 namespace canvas3d {
131 EAPI void register_camera(v8::Handle<v8::Object> global, v8::Isolate* isolate);
132 EAPI void register_light(v8::Handle<v8::Object> global, v8::Isolate* isolate);
133 EAPI void register_material(v8::Handle<v8::Object> global, v8::Isolate* isolate);
134 EAPI void register_mesh(v8::Handle<v8::Object> global, v8::Isolate* isolate);
135 EAPI void register_node(v8::Handle<v8::Object> global, v8::Isolate* isolate);
136 EAPI void register_object(v8::Handle<v8::Object> global, v8::Isolate* isolate);
137 EAPI void register_scene(v8::Handle<v8::Object> global, v8::Isolate* isolate);
138 EAPI void register_texture(v8::Handle<v8::Object> global, v8::Isolate* isolate);
139 } }
140 
141 namespace efl { namespace canvas {
142 EAPI void register_polygon(v8::Handle<v8::Object> global, v8::Isolate* isolate);
143 }}
144 
145 namespace edje {
146 EAPI void register_edit(v8::Handle<v8::Object> global, v8::Isolate* isolate);
147 EAPI void register_object(v8::Handle<v8::Object> global, v8::Isolate* isolate);
148 }
149 
150 namespace emotion {
151 EAPI void register_object(v8::Handle<v8::Object> global, v8::Isolate* isolate);
152 }
153 EAPI void register_elm_atspi_app_object(v8::Handle<v8::Object> global, v8::Isolate* isolate);
154 EAPI void register_elm_interface_atspi_accessible(v8::Handle<v8::Object> global, v8::Isolate* isolate);
155 EAPI void register_elm_interface_atspi_action(v8::Handle<v8::Object> global, v8::Isolate* isolate);
156 EAPI void register_efl_access_component(v8::Handle<v8::Object> global, v8::Isolate* isolate);
157 EAPI void register_elm_interface_atspi_editable_text(v8::Handle<v8::Object> global, v8::Isolate* isolate);
158 EAPI void register_elm_interface_atspi_image(v8::Handle<v8::Object> global, v8::Isolate* isolate);
159 EAPI void register_elm_interface_atspi_selection(v8::Handle<v8::Object> global, v8::Isolate* isolate);
160 EAPI void register_elm_interface_atspi_text(v8::Handle<v8::Object> global, v8::Isolate* isolate);
161 EAPI void register_elm_interface_atspi_value(v8::Handle<v8::Object> global, v8::Isolate* isolate);
162 EAPI void register_elm_interface_atspi_widget_action(v8::Handle<v8::Object> global, v8::Isolate* isolate);
163 EAPI void register_elm_interface_atspi_window(v8::Handle<v8::Object> global, v8::Isolate* isolate);
164 EAPI void register_elm_interface_fileselector(v8::Handle<v8::Object> global, v8::Isolate* isolate);
165 EAPI void register_elm_interface_scrollable(v8::Handle<v8::Object> global, v8::Isolate* isolate);
166 EAPI void register_elm_pan(v8::Handle<v8::Object> global, v8::Isolate* isolate);
167 
168 namespace elm {
169 
170 EAPI void register_bg(v8::Handle<v8::Object> global, v8::Isolate* isolate);
171 EAPI void register_calendar(v8::Handle<v8::Object> global, v8::Isolate* isolate);
172 EAPI void register_clock(v8::Handle<v8::Object> global, v8::Isolate* isolate);
173 EAPI void register_colorselector(v8::Handle<v8::Object> global, v8::Isolate* isolate);
174 EAPI void register_conformant(v8::Handle<v8::Object> global, v8::Isolate* isolate);
175 EAPI void register_container(v8::Handle<v8::Object> global, v8::Isolate* isolate);
176 EAPI void register_combobox(v8::Handle<v8::Object> global, v8::Isolate* isolate);
177 EAPI void register_ctxpopup(v8::Handle<v8::Object> global, v8::Isolate* isolate);
178 EAPI void register_dayselector(v8::Handle<v8::Object> global, v8::Isolate* isolate);
179 EAPI void register_entry(v8::Handle<v8::Object> global, v8::Isolate* isolate);
180 EAPI void register_fileselector(v8::Handle<v8::Object> global, v8::Isolate* isolate);
181 EAPI void register_flip(v8::Handle<v8::Object> global, v8::Isolate* isolate);
182 EAPI void register_gengrid(v8::Handle<v8::Object> global, v8::Isolate* isolate);
183 EAPI void register_gengrid_pan(v8::Handle<v8::Object> global, v8::Isolate* isolate);
184 EAPI void register_genlist(v8::Handle<v8::Object> global, v8::Isolate* isolate);
185 EAPI void register_genlist_pan(v8::Handle<v8::Object> global, v8::Isolate* isolate);
186 EAPI void register_gesture_layer(v8::Handle<v8::Object> global, v8::Isolate* isolate);
187 EAPI void register_glview(v8::Handle<v8::Object> global, v8::Isolate* isolate);
188 EAPI void register_hover(v8::Handle<v8::Object> global, v8::Isolate* isolate);
189 EAPI void register_index(v8::Handle<v8::Object> global, v8::Isolate* isolate);
190 EAPI void register_label(v8::Handle<v8::Object> global, v8::Isolate* isolate);
191 EAPI void register_layout(v8::Handle<v8::Object> global, v8::Isolate* isolate);
192 EAPI void register_list(v8::Handle<v8::Object> global, v8::Isolate* isolate);
193 EAPI void register_map(v8::Handle<v8::Object> global, v8::Isolate* isolate);
194 EAPI void register_map_pan(v8::Handle<v8::Object> global, v8::Isolate* isolate);
195 EAPI void register_menu(v8::Handle<v8::Object> global, v8::Isolate* isolate);
196 EAPI void register_multibuttonentry(v8::Handle<v8::Object> global, v8::Isolate* isolate);
197 EAPI void register_notify(v8::Handle<v8::Object> global, v8::Isolate* isolate);
198 EAPI void register_panel(v8::Handle<v8::Object> global, v8::Isolate* isolate);
199 EAPI void register_panes(v8::Handle<v8::Object> global, v8::Isolate* isolate);
200 EAPI void register_player(v8::Handle<v8::Object> global, v8::Isolate* isolate);
201 EAPI void register_plug(v8::Handle<v8::Object> global, v8::Isolate* isolate);
202 EAPI void register_popup(v8::Handle<v8::Object> global, v8::Isolate* isolate);
203 EAPI void register_route(v8::Handle<v8::Object> global, v8::Isolate* isolate);
204 EAPI void register_scroller(v8::Handle<v8::Object> global, v8::Isolate* isolate);
205 EAPI void register_spinner(v8::Handle<v8::Object> global, v8::Isolate* isolate);
206 EAPI void register_systray(v8::Handle<v8::Object> global, v8::Isolate* isolate);
207 EAPI void register_toolbar(v8::Handle<v8::Object> global, v8::Isolate* isolate);
208 EAPI void register_web(v8::Handle<v8::Object> global, v8::Isolate* isolate);
209 EAPI void register_widget(v8::Handle<v8::Object> global, v8::Isolate* isolate);
210 EAPI void register_win(v8::Handle<v8::Object> global, v8::Isolate* isolate);
211 EAPI void register_widget_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
212 EAPI void register_color_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
213 EAPI void register_dayselector_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
214 EAPI void register_flipselector_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
215 EAPI void register_menu_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
216 EAPI void register_ctxpopup_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
217 EAPI void register_index_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
218 EAPI void register_multibuttonentry_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
219 EAPI void register_naviframe_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
220 EAPI void register_genlist_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
221 EAPI void register_gengrid_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
222 EAPI void register_list_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
223 EAPI void register_toolbar_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
224 EAPI void register_diskselector_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
225 EAPI void register_popup_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
226 
227 }
228 
229 #ifdef HAVE_NODEJS
230 
231 #include <eina_js_node.hh>
232 
233 namespace {
234 #else
235 namespace efl_js {
236 #endif
237 
init(v8::Handle<v8::Object> exports)238 EAPI void init(v8::Handle<v8::Object> exports)
239 {
240   static char* argv[] = {const_cast<char*>("node")};
241   ::elm_init(1, argv);
242 
243   ::elm_need_ethumb();
244 
245   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN);
246 
247    try
248      {
249         eina_container_register(exports, v8::Isolate::GetCurrent());
250         eina_log_register(exports, v8::Isolate::GetCurrent());
251         eina_value_register(exports, v8::Isolate::GetCurrent());
252         //register_ecore_mainloop(exports, v8::Isolate::GetCurrent());
253         efl::eio::js::register_eio(v8::Isolate::GetCurrent(), exports);
254         efl::eldbus::js::register_eldbus(v8::Isolate::GetCurrent(), exports);
255         efl::ethumb::js::register_ethumb(v8::Isolate::GetCurrent(), exports);
256         //ecore::register_exe(exports, v8::Isolate::GetCurrent());
257         // ecore::register_idler(exports, v8::Isolate::GetCurrent());
258         // ecore::idle::register_enterer(exports, v8::Isolate::GetCurrent());
259         // ecore::idle::register_exiter(exports, v8::Isolate::GetCurrent());
260         // ecore::register_job(exports, v8::Isolate::GetCurrent());
261         //ecore::register_parent(exports, v8::Isolate::GetCurrent());
262         // ecore::register_poller(exports, v8::Isolate::GetCurrent());
263         // ecore::register_timer(exports, v8::Isolate::GetCurrent());
264 #if 0
265         register_ecore_audio(exports, v8::Isolate::GetCurrent());
266         register_ecore_audio_in(exports, v8::Isolate::GetCurrent());
267         register_ecore_audio_in_sndfile(exports, v8::Isolate::GetCurrent());
268         register_ecore_audio_in_tone(exports, v8::Isolate::GetCurrent());
269         register_ecore_audio_out(exports, v8::Isolate::GetCurrent());
270         register_ecore_audio_out_pulse(exports, v8::Isolate::GetCurrent());
271         register_ecore_audio_out_sndfile(exports, v8::Isolate::GetCurrent());
272 #endif
273         // Manual ecore binding initialized last to allow extension of namespace
274         // created by eolian.
275         efl::ecore::js::register_ecore(v8::Isolate::GetCurrent(), exports);
276         efl::register_animator(exports, v8::Isolate::GetCurrent());
277         efl::register_control(exports, v8::Isolate::GetCurrent());
278         efl::register_file(exports, v8::Isolate::GetCurrent());
279         efl::register_image(exports, v8::Isolate::GetCurrent());
280         efl::register_orientation(exports, v8::Isolate::GetCurrent());
281         efl::register_loop(exports, v8::Isolate::GetCurrent());
282         efl::register_player(exports, v8::Isolate::GetCurrent());
283         efl::register_text(exports, v8::Isolate::GetCurrent());
284         // efl::register_text_properties(exports, v8::Isolate::GetCurrent());
285         efl::register_object(exports, v8::Isolate::GetCurrent());
286 #if 1
287         // evas::register_box(exports, v8::Isolate::GetCurrent());
288         // evas::register_canvas(exports, v8::Isolate::GetCurrent());
289         // evas::register_clickable_interface(exports, v8::Isolate::GetCurrent());
290         // evas::register_common_interface(exports, v8::Isolate::GetCurrent());
291         // evas::register_draggable_interface(exports, v8::Isolate::GetCurrent());
292         // evas::register_grid(exports, v8::Isolate::GetCurrent());
293         // evas::register_image(exports, v8::Isolate::GetCurrent());
294         // evas::register_line(exports, v8::Isolate::GetCurrent());
295         efl::canvas::register_object(exports, v8::Isolate::GetCurrent());
296         efl::canvas::register_group(exports, v8::Isolate::GetCurrent());
297         // evas::register_object_smart(exports, v8::Isolate::GetCurrent());
298         // evas::register_out(exports, v8::Isolate::GetCurrent());
299         efl::canvas::register_rectangle(exports, v8::Isolate::GetCurrent());
300         // evas::register_scrollable_interface(exports, v8::Isolate::GetCurrent());
301         // evas::register_selectable_interface(exports, v8::Isolate::GetCurrent());
302         // evas::register_signal_interface(exports, v8::Isolate::GetCurrent());
303         // evas::register_smart_clipped(exports, v8::Isolate::GetCurrent());
304         // evas::register_table(exports, v8::Isolate::GetCurrent());
305         // evas::register_text(exports, v8::Isolate::GetCurrent());
306         // evas::register_textblock(exports, v8::Isolate::GetCurrent());
307         // evas::register_textgrid(exports, v8::Isolate::GetCurrent());
308         // evas::register_zoomable_interface(exports, v8::Isolate::GetCurrent());
309         // evas::canvas3d::register_camera(exports, v8::Isolate::GetCurrent());
310         // evas::canvas3d::register_light(exports, v8::Isolate::GetCurrent());
311         // evas::canvas3d::register_material(exports, v8::Isolate::GetCurrent());
312         // evas::canvas3d::register_mesh(exports, v8::Isolate::GetCurrent());
313         // evas::canvas3d::register_node(exports, v8::Isolate::GetCurrent());
314         // evas::canvas3d::register_object(exports, v8::Isolate::GetCurrent());
315         // evas::canvas3d::register_scene(exports, v8::Isolate::GetCurrent());
316         // evas::canvas3d::register_texture(exports, v8::Isolate::GetCurrent());
317         // efl::canvas::register_polygon(exports, v8::Isolate::GetCurrent());
318 #endif
319 #if 0
320         edje::register_edit(exports, v8::Isolate::GetCurrent());
321         edje::register_object(exports, v8::Isolate::GetCurrent());
322 #endif
323 #if 0
324         emotion::register_object(exports, v8::Isolate::GetCurrent());
325 #endif
326 
327       // elm::register_access(exports, v8::Isolate::GetCurrent());
328       // elm::register_actionslider(exports, v8::Isolate::GetCurrent());
329       // ::register_elm_atspi_app_object(exports, v8::Isolate::GetCurrent());
330       // elm::register_box(exports, v8::Isolate::GetCurrent());
331 
332       elm::register_bg(exports, v8::Isolate::GetCurrent());
333       efl::ui::register_button(exports, v8::Isolate::GetCurrent());
334       elm::register_calendar(exports, v8::Isolate::GetCurrent());
335 
336       efl::ui::register_check(exports, v8::Isolate::GetCurrent());
337 
338       //  crash
339       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
340       elm::register_clock(exports, v8::Isolate::GetCurrent());
341       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
342 
343       // crash
344       // elm::register_colorselector(exports, v8::Isolate::GetCurrent());
345 
346       elm::register_conformant(exports, v8::Isolate::GetCurrent());
347 
348       // crash
349       // elm::register_combobox(exports, v8::Isolate::GetCurrent());
350 
351       // doesn't exist
352       efl::register_container(exports, v8::Isolate::GetCurrent());
353 
354       elm::register_ctxpopup(exports, v8::Isolate::GetCurrent());
355       elm::register_dayselector(exports, v8::Isolate::GetCurrent());
356 
357       // crash
358       // elm::register_diskselector(exports, v8::Isolate::GetCurrent());
359 
360       elm::register_entry(exports, v8::Isolate::GetCurrent());
361       elm::register_fileselector(exports, v8::Isolate::GetCurrent());
362 
363       efl::ui::register_frame(exports, v8::Isolate::GetCurrent());
364       efl::ui::register_box(exports, v8::Isolate::GetCurrent());
365       efl::ui::register_image(exports, v8::Isolate::GetCurrent());
366 
367       // crash
368       // elm::register_gengrid(exports, v8::Isolate::GetCurrent());
369 
370       // doesn't exist
371       // elm::register_gengrid_pan(exports, v8::Isolate::GetCurrent());
372 
373       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
374       // crash
375       elm::register_genlist(exports, v8::Isolate::GetCurrent());
376       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
377       // elm::register_genlist_pan(exports, v8::Isolate::GetCurrent());
378       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
379       elm::register_gesture_layer(exports, v8::Isolate::GetCurrent());
380       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
381       elm::register_glview(exports, v8::Isolate::GetCurrent());
382       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
383       // elm::register_grid(exports, v8::Isolate::GetCurrent());
384       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
385       elm::register_index(exports, v8::Isolate::GetCurrent());
386       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
387 
388       // ::register_elm_interface_atspi_accessible(exports, v8::Isolate::GetCurrent());
389       // ::register_elm_interface_atspi_action(exports, v8::Isolate::GetCurrent());
390       // ::register_efl_access_component(exports, v8::Isolate::GetCurrent());
391       // ::register_elm_interface_atspi_editable_text(exports, v8::Isolate::GetCurrent());
392       // ::register_elm_interface_atspi_image(exports, v8::Isolate::GetCurrent());
393       // ::register_elm_interface_atspi_selection(exports, v8::Isolate::GetCurrent());
394       // ::register_elm_interface_atspi_text(exports, v8::Isolate::GetCurrent());
395       // ::register_elm_interface_atspi_value(exports, v8::Isolate::GetCurrent());
396       // ::register_elm_interface_atspi_widget_action(exports, v8::Isolate::GetCurrent());
397       // ::register_elm_interface_atspi_window(exports, v8::Isolate::GetCurrent());
398       // ::register_elm_interface_fileselector(exports, v8::Isolate::GetCurrent());
399       // ::register_elm_interface_scrollable(exports, v8::Isolate::GetCurrent());
400 
401       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
402       elm::register_label(exports, v8::Isolate::GetCurrent());
403       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
404       elm::register_layout(exports, v8::Isolate::GetCurrent());
405       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
406       // elm::register_list(exports, v8::Isolate::GetCurrent());
407       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
408       elm::register_map(exports, v8::Isolate::GetCurrent());
409       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
410 
411       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
412       // elm::register_map_pan(exports, v8::Isolate::GetCurrent());
413       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
414       //elm::register_mapbuf(exports, v8::Isolate::GetCurrent());
415       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
416       elm::register_menu(exports, v8::Isolate::GetCurrent());
417       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
418       elm::register_multibuttonentry(exports, v8::Isolate::GetCurrent());
419       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
420       elm::register_notify(exports, v8::Isolate::GetCurrent());
421       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
422 
423       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
424       // ::register_elm_pan(exports, v8::Isolate::GetCurrent());
425       elm::register_panel(exports, v8::Isolate::GetCurrent());
426       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
427       elm::register_panes(exports, v8::Isolate::GetCurrent());
428       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
429       efl::ui::image::register_zoomable(exports, v8::Isolate::GetCurrent());
430       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
431       // efl::ui::image::zoomable::register_pan(exports, v8::Isolate::GetCurrent());
432       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
433       elm::register_player(exports, v8::Isolate::GetCurrent());
434       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
435       elm::register_plug(exports, v8::Isolate::GetCurrent());
436       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
437       elm::register_popup(exports, v8::Isolate::GetCurrent());
438       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
439       efl::ui::register_progressbar(exports, v8::Isolate::GetCurrent());
440       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
441       efl::ui::register_radio(exports, v8::Isolate::GetCurrent());
442       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
443 
444       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
445       elm::register_route(exports, v8::Isolate::GetCurrent());
446       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
447       elm::register_scroller(exports, v8::Isolate::GetCurrent());
448       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
449       efl::ui::register_slider(exports, v8::Isolate::GetCurrent());
450       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
451       elm::register_spinner(exports, v8::Isolate::GetCurrent());
452       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
453       elm::register_systray(exports, v8::Isolate::GetCurrent());
454       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
455       // elm::register_table(exports, v8::Isolate::GetCurrent());
456       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
457       elm::register_toolbar(exports, v8::Isolate::GetCurrent());
458       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
459       efl::ui::register_flip(exports, v8::Isolate::GetCurrent());
460       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
461       efl::ui::register_video(exports, v8::Isolate::GetCurrent());
462       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
463       elm::register_web(exports, v8::Isolate::GetCurrent());
464       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
465       elm::register_widget(exports, v8::Isolate::GetCurrent());
466       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
467 
468       // crash
469       // elm::register_win(exports, v8::Isolate::GetCurrent());
470       fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
471       efl::ui::register_win(exports, v8::Isolate::GetCurrent());
472 
473       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
474       // elm::register_widget_item(exports, v8::Isolate::GetCurrent());
475       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
476       // elm::register_color_item(exports, v8::Isolate::GetCurrent());
477       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
478       // elm::register_dayselector_item(exports, v8::Isolate::GetCurrent());
479       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
480       // elm::register_hoversel_item(exports, v8::Isolate::GetCurrent());
481       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
482       // elm::register_segment_control_item(exports, v8::Isolate::GetCurrent());
483       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
484       // elm::register_slideshow_item(exports, v8::Isolate::GetCurrent());
485       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
486       // elm::register_flipselector_item(exports, v8::Isolate::GetCurrent());
487       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
488       // elm::register_menu_item(exports, v8::Isolate::GetCurrent());
489       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
490       // elm::register_ctxpopup_item(exports, v8::Isolate::GetCurrent());
491       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
492       // elm::register_index_item(exports, v8::Isolate::GetCurrent());
493       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
494       // elm::register_multibuttonentry_item(exports, v8::Isolate::GetCurrent());
495       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
496       // elm::register_naviframe_item(exports, v8::Isolate::GetCurrent());
497       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
498       // elm::register_genlist_item(exports, v8::Isolate::GetCurrent());
499       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
500       // elm::register_gengrid_item(exports, v8::Isolate::GetCurrent());
501       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
502       // elm::register_list_item(exports, v8::Isolate::GetCurrent());
503       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
504       // elm::register_toolbar_item(exports, v8::Isolate::GetCurrent());
505       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
506       // elm::register_diskselector_item(exports, v8::Isolate::GetCurrent());
507       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
508       // elm::register_popup_item(exports, v8::Isolate::GetCurrent());
509       // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr);
510      }
511    catch(...)
512      {
513         std::cout << "Exception" << std::endl;
514      }
515 }
516 
517 #ifdef HAVE_NODEJS
518 }
519 NODE_MODULE(efl, init)
520 #else
521 } // namespace efl
522 #endif
523