/**
* Copyright (c) 2012-2016 André Bargull
* Alle Rechte vorbehalten / All Rights Reserved. Use is subject to license terms.
*
* <https://github.com/anba/es6draft>
*/
package com.github.anba.es6draft.runtime.objects.binary;
import com.github.anba.es6draft.runtime.Realm;
import com.github.anba.es6draft.runtime.types.ScriptObject;
import com.github.anba.es6draft.runtime.types.builtins.OrdinaryObject;
/**
* <h1>24 Structured Data</h1><br>
* <h2>24.2 DataView Objects</h2>
* <ul>
* <li>24.2.5 Properties of DataView Instances
* </ul>
*/
public final class DataViewObject extends OrdinaryObject implements ArrayBufferView {
/** [[ViewedArrayBuffer]] */
private final ArrayBuffer buffer;
/** [[ByteLength]] */
private final long byteLength;
/** [[ByteOffset]] */
private final long byteOffset;
/**
* Constructs a new DataView object.
*
* @param realm
* the realm object
* @param buffer
* the array buffer
* @param byteLength
* the byte length
* @param byteOffset
* the byte offset
* @param prototype
* the prototype object
*/
public DataViewObject(Realm realm, ArrayBuffer buffer, long byteLength, long byteOffset, ScriptObject prototype) {
super(realm);
assert buffer != null : "cannot initialize DataView with null";
assert byteLength >= 0 : "negative byte length: " + byteLength;
assert byteOffset >= 0 : "negative byte offset: " + byteOffset;
assert buffer.isDetached() || (byteOffset + byteLength <= buffer.getByteLength());
this.buffer = buffer;
this.byteLength = byteLength;
this.byteOffset = byteOffset;
setPrototype(prototype);
}
/**
* [[ViewedArrayBuffer]]
*/
@Override
public ArrayBuffer getBuffer() {
return buffer;
}
/**
* [[ByteLength]]
*/
@Override
public long getByteLength() {
return byteLength;
}
/**
* [[ByteOffset]]
*/
@Override
public long getByteOffset() {
return byteOffset;
}
}