History

- Bunch of fixes to typed arrays - First working prototype for Int8Array - Base classes for all other typed arrays

Atlante45 committed 12 years ago

Commit b2b17011 parent a76ebae10 files · +412 −37Browse files

Showing the changes to libraries/script-engine/src/ArrayBufferClass.cpp (1 of 10 files). Show all

Unified · Split

libraries/script-engine/src/ArrayBufferClass.cpp+18−10
@@ -9,8 +9,10 @@ · 8 unmodified lines
9// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html9// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10//10//
11 11
12#include <QDebug>
12 13
13#include "ArrayBufferPrototype.h"14#include "ArrayBufferPrototype.h"
15#include "ScriptEngine.h"
14 16
15#include "ArrayBufferClass.h"17#include "ArrayBufferClass.h"
16 18
@@ -19,16 +21,20 @@ static const QString BYTE_LENGTH_PROPERTY_NAME = "byteLength"; · 2 unmodified lines
19 21
20Q_DECLARE_METATYPE(QByteArray*)22Q_DECLARE_METATYPE(QByteArray*)
21 23
22ArrayBufferClass::ArrayBufferClass(QScriptEngine* engine) : QObject(engine), QScriptClass(engine) {24ArrayBufferClass::ArrayBufferClass(ScriptEngine* scriptEngine) :
23 qScriptRegisterMetaType<QByteArray>(engine, toScriptValue, fromScriptValue);25QObject(scriptEngine->getScriptEngine()),
24 QScriptValue global = engine->globalObject();26QScriptClass(scriptEngine->getScriptEngine()),
27_scriptEngine(scriptEngine) {
28 qDebug() << "Created with engine: " << engine();
29 qScriptRegisterMetaType<QByteArray>(engine(), toScriptValue, fromScriptValue);
30 QScriptValue global = engine()->globalObject();
25 31
26 // Save string handles for quick lookup32 // Save string handles for quick lookup
27 _name = engine->toStringHandle(CLASS_NAME.toLatin1());33 _name = engine()->toStringHandle(CLASS_NAME.toLatin1());
28 _byteLength = engine->toStringHandle(BYTE_LENGTH_PROPERTY_NAME.toLatin1());34 _byteLength = engine()->toStringHandle(BYTE_LENGTH_PROPERTY_NAME.toLatin1());
29 35
30 // build prototype36 // build prototype
31 _proto = engine->newQObject(new ArrayBufferPrototype(this),37 _proto = engine()->newQObject(new ArrayBufferPrototype(this),
32 QScriptEngine::QtOwnership,38 QScriptEngine::QtOwnership,
33 QScriptEngine::SkipMethodsInEnumeration |39 QScriptEngine::SkipMethodsInEnumeration |
34 QScriptEngine::ExcludeSuperClassMethods |40 QScriptEngine::ExcludeSuperClassMethods |
@@ -36,15 +42,17 @@ ArrayBufferClass::ArrayBufferClass(QScriptEngine* engine) : QObject(engine), QSc · 1 unmodified line
36 42
37 _proto.setPrototype(global.property("Object").property("prototype"));43 _proto.setPrototype(global.property("Object").property("prototype"));
38 44
39 _ctor = engine->newFunction(construct, _proto);45 _ctor = engine()->newFunction(construct, _proto);
40 _ctor.setData(engine->toScriptValue(this));46 _ctor.setData(engine()->toScriptValue(this));
41 47
42 engine->globalObject().setProperty(name(), _ctor);48 engine()->globalObject().setProperty(name(), _ctor);
43}49}
44 50
45QScriptValue ArrayBufferClass::newInstance(quint32 size) {51QScriptValue ArrayBufferClass::newInstance(quint32 size) {
46 engine()->reportAdditionalMemoryCost(size);52 engine()->reportAdditionalMemoryCost(size);
47 QScriptValue data = engine()->newVariant(QVariant::fromValue(QByteArray(size, 0)));53 QScriptEngine* eng = engine();
54 QVariant variant = QVariant::fromValue(QByteArray(size, 0));
55 QScriptValue data = eng->newVariant(variant);
48 return engine()->newObject(this, data);56 return engine()->newObject(this, data);
49}57}
50 58