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
99 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
1010 //
1111
12+#include <QDebug>
1213
1314 #include "ArrayBufferPrototype.h"
15+#include "ScriptEngine.h"
1416
1517 #include "ArrayBufferClass.h"
1618
@@ -19,16 +21,20 @@ static const QString BYTE_LENGTH_PROPERTY_NAME = "byteLength"; · 2 unmodified lines
1921
2022 Q_DECLARE_METATYPE(QByteArray*)
2123
22−ArrayBufferClass::ArrayBufferClass(QScriptEngine* engine) : QObject(engine), QScriptClass(engine) {
23− qScriptRegisterMetaType<QByteArray>(engine, toScriptValue, fromScriptValue);
24− QScriptValue global = engine->globalObject();
24+ArrayBufferClass::ArrayBufferClass(ScriptEngine* scriptEngine) :
25+QObject(scriptEngine->getScriptEngine()),
26+QScriptClass(scriptEngine->getScriptEngine()),
27+_scriptEngine(scriptEngine) {
28+ qDebug() << "Created with engine: " << engine();
29+ qScriptRegisterMetaType<QByteArray>(engine(), toScriptValue, fromScriptValue);
30+ QScriptValue global = engine()->globalObject();
2531
2632 // Save string handles for quick lookup
27− _name = engine->toStringHandle(CLASS_NAME.toLatin1());
28− _byteLength = engine->toStringHandle(BYTE_LENGTH_PROPERTY_NAME.toLatin1());
33+ _name = engine()->toStringHandle(CLASS_NAME.toLatin1());
34+ _byteLength = engine()->toStringHandle(BYTE_LENGTH_PROPERTY_NAME.toLatin1());
2935
3036 // build prototype
31− _proto = engine->newQObject(new ArrayBufferPrototype(this),
37+ _proto = engine()->newQObject(new ArrayBufferPrototype(this),
3238 QScriptEngine::QtOwnership,
3339 QScriptEngine::SkipMethodsInEnumeration |
3440 QScriptEngine::ExcludeSuperClassMethods |
@@ -36,15 +42,17 @@ ArrayBufferClass::ArrayBufferClass(QScriptEngine* engine) : QObject(engine), QSc · 1 unmodified line
3642
3743 _proto.setPrototype(global.property("Object").property("prototype"));
3844
39− _ctor = engine->newFunction(construct, _proto);
40− _ctor.setData(engine->toScriptValue(this));
45+ _ctor = engine()->newFunction(construct, _proto);
46+ _ctor.setData(engine()->toScriptValue(this));
4147
42− engine->globalObject().setProperty(name(), _ctor);
48+ engine()->globalObject().setProperty(name(), _ctor);
4349 }
4450
4551 QScriptValue ArrayBufferClass::newInstance(quint32 size) {
4652 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);
4856 return engine()->newObject(this, data);
4957 }
5058