aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4functionobject_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2014-05-08 15:32:31 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2014-07-22 13:49:14 +0200
commit76f3a874f42a5fc689334fa371f386762e37cc78 (patch)
tree62f2880ce6e2c6209e559bdf591385037a8c5eb2 /src/qml/jsruntime/qv4functionobject_p.h
parent519471a77a67bb72f4d0995db70a95f290b13c6a (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.h26
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();