File: DOMArrayBufferView.h

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (81 lines) | stat: -rw-r--r-- 3,131 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef DOMArrayBufferView_h
#define DOMArrayBufferView_h

#include "bindings/core/v8/ScriptWrappable.h"
#include "core/dom/DOMArrayBuffer.h"
#include "wtf/ArrayBufferView.h"
#include "wtf/RefCounted.h"

namespace blink {

class DOMArrayBufferView : public RefCounted<DOMArrayBufferView>, public ScriptWrappable {
    DEFINE_WRAPPERTYPEINFO();
public:
    typedef WTF::ArrayBufferView::ViewType ViewType;
    static const ViewType TypeInt8 = WTF::ArrayBufferView::TypeInt8;
    static const ViewType TypeUint8 = WTF::ArrayBufferView::TypeUint8;
    static const ViewType TypeUint8Clamped = WTF::ArrayBufferView::TypeUint8Clamped;
    static const ViewType TypeInt16 = WTF::ArrayBufferView::TypeInt16;
    static const ViewType TypeUint16 = WTF::ArrayBufferView::TypeUint16;
    static const ViewType TypeInt32 = WTF::ArrayBufferView::TypeInt32;
    static const ViewType TypeUint32 = WTF::ArrayBufferView::TypeUint32;
    static const ViewType TypeFloat32 = WTF::ArrayBufferView::TypeFloat32;
    static const ViewType TypeFloat64 = WTF::ArrayBufferView::TypeFloat64;
    static const ViewType TypeDataView = WTF::ArrayBufferView::TypeDataView;

    virtual ~DOMArrayBufferView() { }

    PassRefPtr<DOMArrayBuffer> buffer() const
    {
        if (!m_domArrayBuffer)
            m_domArrayBuffer = DOMArrayBuffer::create(view()->buffer());
        return m_domArrayBuffer;
    }

    const WTF::ArrayBufferView* view() const { return m_bufferView.get(); }
    WTF::ArrayBufferView* view() { return m_bufferView.get(); }

    ViewType type() const { return view()->type(); }
    const char* typeName() { return view()->typeName(); }
    void* baseAddress() const { return view()->baseAddress(); }
    unsigned byteOffset() const { return view()->byteOffset(); }
    unsigned byteLength() const { return view()->byteLength(); }
    void setNeuterable(bool flag) { return view()->setNeuterable(flag); }

    virtual v8::Handle<v8::Object> wrap(v8::Handle<v8::Object> creationContext, v8::Isolate*) override
    {
        ASSERT_NOT_REACHED();
        return v8::Handle<v8::Object>();
    }
    virtual v8::Handle<v8::Object> associateWithWrapper(v8::Isolate*, const WrapperTypeInfo*, v8::Handle<v8::Object> wrapper) override
    {
        ASSERT_NOT_REACHED();
        return v8::Handle<v8::Object>();
    }

protected:
    explicit DOMArrayBufferView(PassRefPtr<WTF::ArrayBufferView> bufferView)
        : m_bufferView(bufferView)
    {
        ASSERT(m_bufferView);
    }
    DOMArrayBufferView(PassRefPtr<WTF::ArrayBufferView> bufferView, PassRefPtr<DOMArrayBuffer> domArrayBuffer)
        : m_bufferView(bufferView), m_domArrayBuffer(domArrayBuffer)
    {
        ASSERT(m_bufferView);
        ASSERT(m_domArrayBuffer);
        ASSERT(m_domArrayBuffer->buffer() == m_bufferView->buffer());
    }

private:
    RefPtr<WTF::ArrayBufferView> m_bufferView;
    mutable RefPtr<DOMArrayBuffer> m_domArrayBuffer;
};

} // namespace blink

#endif // DOMArrayBufferView_h