From ab4c0df702f1bcdd9ac3aaf2f7cc7842e1819c2f Mon Sep 17 00:00:00 2001 From: Felipe Magno de Almeida Date: Tue, 9 Sep 2014 16:48:29 -0300 Subject: [PATCH] [js] Added length to eina_list --- src/bindings/eina_js/eina_list.cc | 21 ++++++++++++++------- src/tests/eina_js/eina_js_suite.cc | 1 + 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/bindings/eina_js/eina_list.cc b/src/bindings/eina_js/eina_list.cc index cadc63c724..6c19df935f 100644 --- a/src/bindings/eina_js/eina_list.cc +++ b/src/bindings/eina_js/eina_list.cc @@ -1,10 +1,16 @@ +#ifdef HAVE_CONFIG_H +#include +#endif #include #include #include +#include + #include #include +#include #include @@ -16,21 +22,21 @@ struct eina_list { eina_list() : _list(0) {} - Eina_List* _list; + efl::eina::range_ptr_list _list; }; -void push_back(eina_list& list, v8::Persistent > object) +void length(v8::Local, v8::PropertyCallbackInfo const& info) { - std::cout << "eina_list push_back" << std::endl; + eina_list* self = static_cast(info.This()->GetAlignedPointerFromInternalField(0)); + info.GetReturnValue().Set((uint32_t)self->_list.size()); } 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; @@ -134,9 +140,10 @@ EAPI void eina_list_register(v8::Handle global, v8::Isolate* instance_t->SetInternalFieldCount(1); instance_t->SetIndexedPropertyHandler(& efl::js::index_get); + + v8::Local prototype = constructor->PrototypeTemplate(); + prototype->SetAccessor(v8::String::NewFromUtf8(isolate, "length"), &efl::js::length); global->Set(v8::String::NewFromUtf8(isolate, "List"), constructor); - // 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 8c022e6bf7..598a3f752a 100644 --- a/src/tests/eina_js/eina_js_suite.cc +++ b/src/tests/eina_js/eina_js_suite.cc @@ -10,6 +10,7 @@ static const char script[] = "print(\"teste\");\n" "var l = new List();\n" "print (l[0]);\n" + "print (l.length);\n" // "l.push_back(5);\n" ;