Atlante45pre-CR cleanup30fd4e212 years agoHistory
148 lines · 5.3 KB · C
RawDownload
////  TypedArrays.h//////  Created by Clement on 7/9/14.//  Copyright 2014 High Fidelity, Inc.////  Distributed under the Apache License, Version 2.0.//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html// #ifndef hifi_TypedArrays_h#define hifi_TypedArrays_h #include "ArrayBufferViewClass.h" static const QString BYTES_PER_ELEMENT_PROPERTY_NAME = "BYTES_PER_ELEMENT";static const QString LENGTH_PROPERTY_NAME = "length"; static const QString INT_8_ARRAY_CLASS_NAME = "Int8Array";static const QString UINT_8_ARRAY_CLASS_NAME = "Uint8Array";static const QString UINT_8_CLAMPED_ARRAY_CLASS_NAME = "Uint8ClampedArray";static const QString INT_16_ARRAY_CLASS_NAME = "Int16Array";static const QString UINT_16_ARRAY_CLASS_NAME = "Uint16Array";static const QString INT_32_ARRAY_CLASS_NAME = "Int32Array";static const QString UINT_32_ARRAY_CLASS_NAME = "Uint32Array";static const QString FLOAT_32_ARRAY_CLASS_NAME = "Float32Array";static const QString FLOAT_64_ARRAY_CLASS_NAME = "Float64Array"; class TypedArray : public ArrayBufferViewClass {    Q_OBJECTpublic:    TypedArray(ScriptEngine* scriptEngine, QString name);    virtual QScriptValue newInstance(quint32 length);    virtual QScriptValue newInstance(QScriptValue array);    virtual QScriptValue newInstance(QScriptValue buffer, quint32 byteOffset, quint32 length);        virtual QueryFlags queryProperty(const QScriptValue& object,                             const QScriptString& name,                             QueryFlags flags, uint* id);    virtual QScriptValue property(const QScriptValue& object,                                  const QScriptString& name, uint id);    virtual void setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value) = 0;    virtual QScriptValue::PropertyFlags propertyFlags(const QScriptValue& object,                                                      const QScriptString& name, uint id);        QString name() const;    QScriptValue prototype() const;    protected:    static QScriptValue construct(QScriptContext* context, QScriptEngine* engine);        void setBytesPerElement(quint32 bytesPerElement);        QScriptValue _proto;    QScriptValue _ctor;        QScriptString _name;    QScriptString _bytesPerElementName;    QScriptString _lengthName;        quint32 _bytesPerElement;        friend class TypedArrayPrototype;}; class Int8ArrayClass : public TypedArray {    Q_OBJECTpublic:    Int8ArrayClass(ScriptEngine* scriptEngine);        QScriptValue property(const QScriptValue& object, const QScriptString& name, uint id);    void setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value);}; class Uint8ArrayClass : public TypedArray {    Q_OBJECTpublic:    Uint8ArrayClass(ScriptEngine* scriptEngine);        QScriptValue property(const QScriptValue& object, const QScriptString& name, uint id);    void setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value);}; class Uint8ClampedArrayClass : public TypedArray {    Q_OBJECTpublic:    Uint8ClampedArrayClass(ScriptEngine* scriptEngine);        QScriptValue property(const QScriptValue& object, const QScriptString& name, uint id);    void setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value);}; class Int16ArrayClass : public TypedArray {    Q_OBJECTpublic:    Int16ArrayClass(ScriptEngine* scriptEngine);        QScriptValue property(const QScriptValue& object, const QScriptString& name, uint id);    void setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value);}; class Uint16ArrayClass : public TypedArray {    Q_OBJECTpublic:    Uint16ArrayClass(ScriptEngine* scriptEngine);        QScriptValue property(const QScriptValue& object, const QScriptString& name, uint id);    void setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value);}; class Int32ArrayClass : public TypedArray {    Q_OBJECTpublic:    Int32ArrayClass(ScriptEngine* scriptEngine);        QScriptValue property(const QScriptValue& object, const QScriptString& name, uint id);    void setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value);}; class Uint32ArrayClass : public TypedArray {    Q_OBJECTpublic:    Uint32ArrayClass(ScriptEngine* scriptEngine);        QScriptValue property(const QScriptValue& object, const QScriptString& name, uint id);    void setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value);}; class Float32ArrayClass : public TypedArray {    Q_OBJECTpublic:    Float32ArrayClass(ScriptEngine* scriptEngine);        QScriptValue property(const QScriptValue& object, const QScriptString& name, uint id);    void setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value);}; class Float64ArrayClass : public TypedArray {    Q_OBJECTpublic:    Float64ArrayClass(ScriptEngine* scriptEngine);        QScriptValue property(const QScriptValue& object, const QScriptString& name, uint id);    void setProperty(QScriptValue& object, const QScriptString& name, uint id, const QScriptValue& value);}; #endif // hifi_TypedArrays_h