From 5b99ead086a8e997b229c9d595ee20dfd5d2aa00 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 6 Mar 2013 22:21:26 +0100 Subject: [PATCH] A few more API methods implemented Change-Id: I4168ad5bb934a74e6957969417fdcf491a7374a1 Reviewed-by: Simon Hausmann --- src/v4/qv4v8.cpp | 16 ++++++++++++---- src/v4/qv4v8.h | 8 +++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/v4/qv4v8.cpp b/src/v4/qv4v8.cpp index 7fc6d89..4dd32c2 100644 --- a/src/v4/qv4v8.cpp +++ b/src/v4/qv4v8.cpp @@ -1139,7 +1139,10 @@ Local AccessorInfo::Holder() const Local FunctionTemplate::New(InvocationCallback callback, Handle data) { - Q_UNIMPLEMENTED(); + FunctionTemplate *ft = new FunctionTemplate; + ft->m_callback = callback; + ft->m_data = Persistent::New(data); + return Local::New(Handle(ft)); } Local FunctionTemplate::GetFunction() @@ -1149,18 +1152,23 @@ Local FunctionTemplate::GetFunction() Local FunctionTemplate::InstanceTemplate() { - Q_UNIMPLEMENTED(); + if (!*m_instanceTemplate) + m_instanceTemplate = ObjectTemplate::New(); + return m_instanceTemplate; } Local FunctionTemplate::PrototypeTemplate() { - Q_UNIMPLEMENTED(); + if (!*m_prototypeTemplate) + m_prototypeTemplate = ObjectTemplate::New(); + return m_prototypeTemplate; } Local ObjectTemplate::New() { - Q_UNIMPLEMENTED(); + ObjectTemplate *ot = new ObjectTemplate; + return Local::New(Handle(ot)); } Local ObjectTemplate::NewInstance() diff --git a/src/v4/qv4v8.h b/src/v4/qv4v8.h index 7c3d6b1..b9356d6 100644 --- a/src/v4/qv4v8.h +++ b/src/v4/qv4v8.h @@ -574,9 +574,10 @@ class V8EXPORT HandleScope { /** * The superclass of values and API object templates. */ -class V8EXPORT Data { +class V8EXPORT Data : public QSharedData { }; +DEFINE_REFCOUNTED_HANDLE_OPERATIONS(Data) /** * The origin, within a file, of a script. @@ -1884,6 +1885,11 @@ class V8EXPORT FunctionTemplate : public Template { */ Local PrototypeTemplate(); +private: + InvocationCallback m_callback; + Persistent m_data; + Local m_instanceTemplate; + Local m_prototypeTemplate; }; -- 2.7.4