History

working to clean up the QtScript implementation and move towards completion of the proxy interface

Heather Anderson committed 5 years ago

Commit 2dd9d781 parent 1e018db38 files · +2240 −923Browse files

Showing the changes to libraries/script-engine/src/qtscript/ArrayBufferViewClass.cpp (1 of 38 files). Show all

Unified · Split

libraries/script-engine/src/qtscript/ArrayBufferViewClass.cpp+53−0
@@ -0,0 +1,53 @@
1+//
2+// ArrayBufferViewClass.cpp
3+//
4+//
5+// Created by Clement on 7/8/14.
6+// Copyright 2014 High Fidelity, Inc.
7+//
8+// Distributed under the Apache License, Version 2.0.
9+// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10+//
11+
12+#include "ArrayBufferViewClass.h"
13+#include "ScriptEngineQtScript.h"
14+
15+Q_DECLARE_METATYPE(QByteArray*)
16+
17+ArrayBufferViewClass::ArrayBufferViewClass(ScriptEngineQtScript* scriptEngine) :
18+ QObject(scriptEngine),
19+QScriptClass(scriptEngine),
20+_scriptEngine(scriptEngine) {
21+ // Save string handles for quick lookup
22+ _bufferName = engine()->toStringHandle(BUFFER_PROPERTY_NAME.toLatin1());
23+ _byteOffsetName = engine()->toStringHandle(BYTE_OFFSET_PROPERTY_NAME.toLatin1());
24+ _byteLengthName = engine()->toStringHandle(BYTE_LENGTH_PROPERTY_NAME.toLatin1());
25+}
26+
27+QScriptClass::QueryFlags ArrayBufferViewClass::queryProperty(const QScriptValue& object,
28+ const QScriptString& name,
29+ QueryFlags flags, uint* id) {
30+ if (name == _bufferName || name == _byteOffsetName || name == _byteLengthName) {
31+ return flags &= HandlesReadAccess; // Only keep read access flags
32+ }
33+ return QScriptClass::QueryFlags(); // No access
34+}
35+
36+QScriptValue ArrayBufferViewClass::property(const QScriptValue& object,
37+ const QScriptString& name, uint id) {
38+ if (name == _bufferName) {
39+ return object.data().property(_bufferName);
40+ }
41+ if (name == _byteOffsetName) {
42+ return object.data().property(_byteOffsetName);
43+ }
44+ if (name == _byteLengthName) {
45+ return object.data().property(_byteLengthName);
46+ }
47+ return QScriptValue();
48+}
49+
50+QScriptValue::PropertyFlags ArrayBufferViewClass::propertyFlags(const QScriptValue& object,
51+ const QScriptString& name, uint id) {
52+ return QScriptValue::Undeletable;
53+}