diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-05-08 15:32:31 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-07-22 13:49:14 +0200 |
commit | 76f3a874f42a5fc689334fa371f386762e37cc78 (patch) | |
tree | 62f2880ce6e2c6209e559bdf591385037a8c5eb2 /src/qml/jsruntime/qv4functionobject_p.h | |
parent | 519471a77a67bb72f4d0995db70a95f290b13c6a (diff) |
Convert delegate model and indexed builtin function
Change-Id: Ic7d50aa472d6a1bafadb6641f88b5f89a9b893ad
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4functionobject_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4functionobject_p.h | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/qml/jsruntime/qv4functionobject_p.h b/src/qml/jsruntime/qv4functionobject_p.h index 824743bbb3..b5cc315666 100644 --- a/src/qml/jsruntime/qv4functionobject_p.h +++ b/src/qml/jsruntime/qv4functionobject_p.h @@ -95,9 +95,14 @@ struct Lookup; struct Q_QML_EXPORT FunctionObject: Object { struct Data : Object::Data { + Data(ExecutionContext *scope, String *name, bool createProto = false); + Data(ExecutionContext *scope, const QString &name = QString(), bool createProto = false); + Data(ExecutionContext *scope, const ReturnedValue name); + Data(InternalClass *ic); + ~Data(); + ExecutionContext *scope; Function *function; - }; struct { ExecutionContext *scope; @@ -132,7 +137,6 @@ struct Q_QML_EXPORT FunctionObject: Object { FunctionObject(ExecutionContext *scope, String *name, bool createProto = false); FunctionObject(ExecutionContext *scope, const QString &name = QString(), bool createProto = false); FunctionObject(ExecutionContext *scope, const ReturnedValue name); - ~FunctionObject(); void init(String *name, bool createProto); @@ -142,6 +146,9 @@ struct Q_QML_EXPORT FunctionObject: Object { using Object::call; static ReturnedValue construct(Managed *that, CallData *); static ReturnedValue call(Managed *that, CallData *d); + static void destroy(Managed *m) { + static_cast<FunctionObject *>(m)->d()->~Data(); + } static FunctionObject *cast(const Value &v) { return v.asFunctionObject(); @@ -204,6 +211,13 @@ struct BuiltinFunction: FunctionObject { struct IndexedBuiltinFunction: FunctionObject { struct Data : FunctionObject::Data { + Data(ExecutionContext *scope, uint index, ReturnedValue (*code)(CallContext *ctx, uint index)) + : FunctionObject::Data(scope), + code(code) + , index(index) + { + setVTable(staticVTable()); + } ReturnedValue (*code)(CallContext *, uint index); uint index; }; @@ -213,14 +227,6 @@ struct IndexedBuiltinFunction: FunctionObject } __data; V4_OBJECT - IndexedBuiltinFunction(ExecutionContext *scope, uint index, ReturnedValue (*code)(CallContext *ctx, uint index)) - : FunctionObject(scope) - { - d()->code = code; - d()->index = index; - setVTable(staticVTable()); - } - static ReturnedValue construct(Managed *m, CallData *) { return m->engine()->currentContext()->throwTypeError(); |