From ba841a84c10c87c29a77e77215e2710d87fea274 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 6 Mar 2013 21:43:58 +0100 Subject: [PATCH] More v8 API Change-Id: If62d4a0dbe8f59d62bef2cce0bb9002be47957bc Reviewed-by: Simon Hausmann --- src/v4/qv4v8.cpp | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/src/v4/qv4v8.cpp b/src/v4/qv4v8.cpp index 80b16d2..7fc6d89 100644 --- a/src/v4/qv4v8.cpp +++ b/src/v4/qv4v8.cpp @@ -50,6 +50,10 @@ #include "qv4isel_masm_p.h" #include "qv4globalobject.h" #include "qv4regexpobject.h" +#include "qv4dateobject.h" +#include "qv4numberobject.h" +#include "qv4booleanobject.h" +#include "qv4stringobject.h" #include "qv4objectproto.h" #include @@ -892,12 +896,16 @@ Local Function::Call(Handle thisObj, int argc, Handle argv Handle Function::GetName() const { - Q_UNIMPLEMENTED(); + QQmlJS::VM::FunctionObject *f = ConstValuePtr(this)->asFunctionObject(); + if (!f) + return Handle(); + return Value::fromVmValue(VM::Value::fromString(f->name)); } ScriptOrigin Function::GetScriptOrigin() const { Q_UNIMPLEMENTED(); + return ScriptOrigin(); } Function *Function::Cast(Value *obj) @@ -914,7 +922,9 @@ Local Date::New(double time) double Date::NumberValue() const { - Q_UNIMPLEMENTED(); + DateObject *d = ConstValuePtr(this)->asDateObject(); + assert(d); + return d->value.doubleValue(); } Date *Date::Cast(Value *obj) @@ -936,7 +946,9 @@ Local NumberObject::New(double value) double NumberObject::NumberValue() const { - Q_UNIMPLEMENTED(); + VM::NumberObject *n = ConstValuePtr(this)->asNumberObject(); + assert(n); + return n->value.doubleValue(); } NumberObject *NumberObject::Cast(Value *obj) @@ -952,7 +964,9 @@ Local BooleanObject::New(bool value) bool BooleanObject::BooleanValue() const { - Q_UNIMPLEMENTED(); + VM::BooleanObject *b = ConstValuePtr(this)->asBooleanObject(); + assert(b); + return b->value.booleanValue(); } BooleanObject *BooleanObject::Cast(Value *obj) @@ -968,7 +982,9 @@ Local StringObject::New(Handle value) Local StringObject::StringValue() const { - Q_UNIMPLEMENTED(); + VM::StringObject *s = ConstValuePtr(this)->asStringObject(); + assert(s); + return Local::New(Value::fromVmValue(s->value)); } StringObject *StringObject::Cast(Value *obj) @@ -991,12 +1007,25 @@ Local RegExp::New(Handle pattern, RegExp::Flags flags) Local RegExp::GetSource() const { - Q_UNIMPLEMENTED(); + RegExpObject *re = ConstValuePtr(this)->asRegExpObject(); + assert(re); + return Local::New(Value::fromVmValue(VM::Value::fromString(currentEngine()->current, re->value->pattern()))); } RegExp::Flags RegExp::GetFlags() const { - Q_UNIMPLEMENTED(); + RegExpObject *re = ConstValuePtr(this)->asRegExpObject(); + assert(re); + + int f = 0; + if (re->global) + f |= kGlobal; + if (re->value->ignoreCase()) + f |= kIgnoreCase; + if (re->value->multiLine()) + f |= kMultiline; + + return (RegExp::Flags)f; } RegExp *RegExp::Cast(Value *obj) -- 2.7.4