diff --git a/src/bindings/eina_js/eina_list.cc b/src/bindings/eina_js/eina_list.cc index f47dc17fdf..cadc63c724 100644 --- a/src/bindings/eina_js/eina_list.cc +++ b/src/bindings/eina_js/eina_list.cc @@ -22,9 +22,15 @@ struct eina_list void push_back(eina_list& list, v8::Persistent > object) { std::cout << "eina_list push_back" << std::endl; - -} +} +void index_get(uint32_t index, v8::PropertyCallbackInfoconst& info) +{ + std::cout << "index_get " << index << std::endl; + if( + info.GetReturnValue().Set(5); +} + void new_eina_list(v8::FunctionCallbackInfo const& args) { void* p = new eina_list; @@ -73,6 +79,7 @@ R call_impl(v8::Isolate* isolate , eina::index_sequence) { + std::cout << "self " << self << std::endl; (*f)(*self, js::get_element(isolate, args)...); } @@ -122,11 +129,14 @@ void register_(v8::Isolate* isolate, const char* name, F&& f, v8::Handle global, v8::Isolate* isolate) { - v8::Local constructor = v8::FunctionTemplate::New(isolate, &efl::js::new_eina_list ); + v8::Handle constructor = v8::FunctionTemplate::New(isolate, &efl::js::new_eina_list ); v8::Local instance_t = constructor->InstanceTemplate(); instance_t->SetInternalFieldCount(1); + + instance_t->SetIndexedPropertyHandler(& efl::js::index_get); + global->Set(v8::String::NewFromUtf8(isolate, "List"), constructor); - efl::js::register_ - (isolate, "push_back", &efl::js::push_back, instance_t); + // efl::js::register_ + // (isolate, "push_back", &efl::js::push_back, instance_t); } diff --git a/src/tests/eina_js/eina_js_suite.cc b/src/tests/eina_js/eina_js_suite.cc index 9835c79fba..8c022e6bf7 100644 --- a/src/tests/eina_js/eina_js_suite.cc +++ b/src/tests/eina_js/eina_js_suite.cc @@ -9,7 +9,8 @@ static const char script[] = "print(\"teste\");\n" "var l = new List();\n" - "l.push_back(5);\n" + "print (l[0]);\n" + // "l.push_back(5);\n" ; const char* ToCString(const v8::String::Utf8Value& value) {