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
15Q_DECLARE_METATYPE(QByteArray*)
16
17ArrayBufferViewClass::ArrayBufferViewClass(ScriptEngineQtScript* scriptEngine) :
18 QObject(scriptEngine),
19QScriptClass(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
27QScriptClass::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
36QScriptValue 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
50QScriptValue::PropertyFlags ArrayBufferViewClass::propertyFlags(const QScriptValue& object,
51 const QScriptString& name, uint id) {
52 return QScriptValue::Undeletable;
53}