1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.nio;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2043a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughesimport libcore.io.SizeOf;
21f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughesimport libcore.io.Memory;
226944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * HeapByteBuffer, ReadWriteHeapByteBuffer and ReadOnlyHeapByteBuffer compose
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the implementation of array based byte buffers.
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * HeapByteBuffer implements all the shared readonly methods and is extended by
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the other two classes.
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </p>
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * All methods are marked final for runtime performance.
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </p>
33f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectabstract class HeapByteBuffer extends BaseByteBuffer {
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
374af0d8c99d68bcacff182699527d983a1d34fdbeElliott Hughes    /**
380568a63ba1086a78ffb4cff68dd2eac4f9908e13Elliott Hughes     * These fields are non-private for NioUtils.unsafeArray.
394af0d8c99d68bcacff182699527d983a1d34fdbeElliott Hughes     */
404af0d8c99d68bcacff182699527d983a1d34fdbeElliott Hughes    final byte[] backingArray;
414af0d8c99d68bcacff182699527d983a1d34fdbeElliott Hughes    final int offset;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    HeapByteBuffer(byte[] backingArray) {
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this(backingArray, backingArray.length, 0);
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    HeapByteBuffer(int capacity) {
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this(new byte[capacity], capacity, 0);
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    HeapByteBuffer(byte[] backingArray, int capacity, int offset) {
52934767b07d94041390785d8fe66c86b2379730bcElliott Hughes        super(capacity, null);
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this.backingArray = backingArray;
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this.offset = offset;
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (offset + capacity > backingArray.length) {
56a1603838fe9e865575c87982e32c6343740e464cElliott Hughes            throw new IndexOutOfBoundsException("backingArray.length=" + backingArray.length +
57a1603838fe9e865575c87982e32c6343740e464cElliott Hughes                    ", capacity=" + capacity + ", offset=" + offset);
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
61eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
620e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes    public final ByteBuffer get(byte[] dst, int dstOffset, int byteCount) {
638fbc397fc09158bee0bc0cb231c609c4c6e9fc15Elliott Hughes        checkGetBounds(1, dst.length, dstOffset, byteCount);
640e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes        System.arraycopy(backingArray, offset + position, dst, dstOffset, byteCount);
650e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes        position += byteCount;
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return this;
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
68eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson
696944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes    final void get(char[] dst, int dstOffset, int charCount) {
7043a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughes        int byteCount = checkGetBounds(SizeOf.CHAR, dst.length, dstOffset, charCount);
71f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        Memory.unsafeBulkGet(dst, dstOffset, byteCount, backingArray, offset + position, SizeOf.CHAR, order.needsSwap);
726944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes        position += byteCount;
736944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes    }
746944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes
758fbc397fc09158bee0bc0cb231c609c4c6e9fc15Elliott Hughes    final void get(double[] dst, int dstOffset, int doubleCount) {
7643a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughes        int byteCount = checkGetBounds(SizeOf.DOUBLE, dst.length, dstOffset, doubleCount);
77f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        Memory.unsafeBulkGet(dst, dstOffset, byteCount, backingArray, offset + position, SizeOf.DOUBLE, order.needsSwap);
786944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes        position += byteCount;
796944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes    }
806944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes
818fbc397fc09158bee0bc0cb231c609c4c6e9fc15Elliott Hughes    final void get(float[] dst, int dstOffset, int floatCount) {
8243a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughes        int byteCount = checkGetBounds(SizeOf.FLOAT, dst.length, dstOffset, floatCount);
83f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        Memory.unsafeBulkGet(dst, dstOffset, byteCount, backingArray, offset + position, SizeOf.FLOAT, order.needsSwap);
846944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes        position += byteCount;
856944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes    }
866944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes
878fbc397fc09158bee0bc0cb231c609c4c6e9fc15Elliott Hughes    final void get(int[] dst, int dstOffset, int intCount) {
8843a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughes        int byteCount = checkGetBounds(SizeOf.INT, dst.length, dstOffset, intCount);
89f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        Memory.unsafeBulkGet(dst, dstOffset, byteCount, backingArray, offset + position, SizeOf.INT, order.needsSwap);
906944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes        position += byteCount;
916944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes    }
926944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes
938fbc397fc09158bee0bc0cb231c609c4c6e9fc15Elliott Hughes    final void get(long[] dst, int dstOffset, int longCount) {
9443a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughes        int byteCount = checkGetBounds(SizeOf.LONG, dst.length, dstOffset, longCount);
95f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        Memory.unsafeBulkGet(dst, dstOffset, byteCount, backingArray, offset + position, SizeOf.LONG, order.needsSwap);
966944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes        position += byteCount;
976944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes    }
986944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes
998fbc397fc09158bee0bc0cb231c609c4c6e9fc15Elliott Hughes    final void get(short[] dst, int dstOffset, int shortCount) {
10043a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughes        int byteCount = checkGetBounds(SizeOf.SHORT, dst.length, dstOffset, shortCount);
101f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        Memory.unsafeBulkGet(dst, dstOffset, byteCount, backingArray, offset + position, SizeOf.SHORT, order.needsSwap);
1026944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes        position += byteCount;
1036944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes    }
1046944bea4a129dc2d4be687c72f2a9f228ec532bcElliott Hughes
105eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final byte get() {
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (position == limit) {
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new BufferUnderflowException();
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return backingArray[offset + position++];
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
113eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final byte get(int index) {
115a1603838fe9e865575c87982e32c6343740e464cElliott Hughes        checkIndex(index);
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return backingArray[offset + index];
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
119eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
1200bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes    public final char getChar() {
12143a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughes        int newPosition = position + SizeOf.CHAR;
1220bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes        if (newPosition > limit) {
1230bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes            throw new BufferUnderflowException();
1240bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes        }
125f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        char result = (char) Memory.peekShort(backingArray, offset + position, order);
1260bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes        position = newPosition;
1270bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes        return result;
1280bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes    }
1290bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes
1300bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes    @Override
1310bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes    public final char getChar(int index) {
132a1603838fe9e865575c87982e32c6343740e464cElliott Hughes        checkIndex(index, SizeOf.CHAR);
133f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        return (char) Memory.peekShort(backingArray, offset + index, order);
1340bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes    }
1350bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes
1360bc30ae8420b5b1abc1b2eefbdf8846309b5447dElliott Hughes    @Override
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final double getDouble() {
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return Double.longBitsToDouble(getLong());
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
141eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final double getDouble(int index) {
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return Double.longBitsToDouble(getLong(index));
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
146eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final float getFloat() {
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return Float.intBitsToFloat(getInt());
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
151eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final float getFloat(int index) {
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return Float.intBitsToFloat(getInt(index));
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
156eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final int getInt() {
15843a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughes        int newPosition = position + SizeOf.INT;
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (newPosition > limit) {
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new BufferUnderflowException();
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
162f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        int result = Memory.peekInt(backingArray, offset + position, order);
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        position = newPosition;
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return result;
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
167eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final int getInt(int index) {
169a1603838fe9e865575c87982e32c6343740e464cElliott Hughes        checkIndex(index, SizeOf.INT);
170f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        return Memory.peekInt(backingArray, offset + index, order);
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
173eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final long getLong() {
17543a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughes        int newPosition = position + SizeOf.LONG;
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (newPosition > limit) {
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new BufferUnderflowException();
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
179f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        long result = Memory.peekLong(backingArray, offset + position, order);
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        position = newPosition;
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return result;
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
184eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final long getLong(int index) {
186a1603838fe9e865575c87982e32c6343740e464cElliott Hughes        checkIndex(index, SizeOf.LONG);
187f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        return Memory.peekLong(backingArray, offset + index, order);
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
190eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final short getShort() {
19243a9f774d075e0e441d8b996e3f6c81ea483ec89Elliott Hughes        int newPosition = position + SizeOf.SHORT;
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (newPosition > limit) {
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new BufferUnderflowException();
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
196f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        short result = Memory.peekShort(backingArray, offset + position, order);
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        position = newPosition;
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return result;
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
201eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final short getShort(int index) {
203a1603838fe9e865575c87982e32c6343740e464cElliott Hughes        checkIndex(index, SizeOf.SHORT);
204f934c3d2c8dd9e6bc5299cef41adace2a671637dElliott Hughes        return Memory.peekShort(backingArray, offset + index, order);
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
207eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson    @Override
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final boolean isDirect() {
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return false;
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
212