1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage java.nio; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.luni.platform.Endianness; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * A buffer for bytes. 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * A byte buffer can be created in either one of the following ways: 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <ul> 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <li>{@link #allocate(int) Allocate} a new byte array and create a buffer 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * based on it;</li> 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <li>{@link #allocateDirect(int) Allocate} a memory block and create a direct 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer based on it;</li> 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <li>{@link #wrap(byte[]) Wrap} an existing byte array to create a new 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer.</li> 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * </ul> 34d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 36d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilsonpublic abstract class ByteBuffer extends Buffer implements 37d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson Comparable<ByteBuffer> { 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Creates a byte buffer based on a newly allocated byte array. 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param capacity 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the capacity of the new buffer 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the created byte buffer. 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code capacity < 0}. 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static ByteBuffer allocate(int capacity) { 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (capacity < 0) { 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException(); 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return BufferFactory.newByteBuffer(capacity); 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Creates a direct byte buffer based on a newly allocated memory block. 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param capacity 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the capacity of the new buffer 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the created byte buffer. 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code capacity < 0}. 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static ByteBuffer allocateDirect(int capacity) { 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (capacity < 0) { 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException(); 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return BufferFactory.newDirectByteBuffer(capacity); 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Creates a new byte buffer by wrapping the given byte array. 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Calling this method has the same effect as 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code wrap(array, 0, array.length)}. 76d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the byte array which the new buffer will be based on 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the created byte buffer. 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static ByteBuffer wrap(byte[] array) { 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return BufferFactory.newByteBuffer(array); 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Creates a new byte buffer by wrapping the given byte array. 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer's position will be {@code start}, limit will be 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code start + len}, capacity will be the length of the array. 90d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the byte array which the new buffer will be based on. 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param start 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the start index, must not be negative and not greater than 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code array.length}. 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param len 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the length, must not be negative and not greater than 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code array.length - start}. 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the created byte buffer. 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if either {@code start} or {@code len} is invalid. 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static ByteBuffer wrap(byte[] array, int start, int len) { 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int length = array.length; 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((start < 0) || (len < 0) || ((long) start + (long) len > length)) { 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IndexOutOfBoundsException(); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer buf = BufferFactory.newByteBuffer(array); 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.position = start; 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.limit = start + len; 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return buf; 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The byte order of this buffer, default is {@code BIG_ENDIAN}. 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Endianness order = Endianness.BIG_ENDIAN; 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a {@code ByteBuffer} with given capacity. 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param capacity 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the capacity of the buffer. 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer(int capacity) { 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(capacity); 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-added 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project _elementSizeShift = 0; 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-added 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the byte array which this buffer is based on, if there is one. 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the byte array which this buffer is based on. 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if this buffer is based on a read-only array. 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception UnsupportedOperationException 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if this buffer is not based on an array. 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final byte[] array() { 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return protectedArray(); 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the offset of the byte array which this buffer is based on, if 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * there is one. 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The offset is the index of the array which corresponds to the zero 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position of the buffer. 153d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the offset of the byte array which this buffer is based on. 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if this buffer is based on a read-only array. 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception UnsupportedOperationException 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if this buffer is not based on an array. 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final int arrayOffset() { 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return protectedArrayOffset(); 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-added 165d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson @Override 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object _array() { 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (hasArray()) { 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return array(); 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 173d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson @Override 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int _arrayOffset() { 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (hasArray()) { 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return arrayOffset(); 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-added 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a char buffer which is based on the remaining content of this 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * byte buffer. 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer's position is zero, its limit and capacity is the number 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * of remaining bytes divided by two, and its mark is not set. The new 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's read-only property and byte order are the same as this buffer's. 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer is direct if this byte buffer is direct. 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer shares its content with this buffer, which means either 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's change of content will be visible to the other. The two buffer's 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position, limit and mark are independent. 194d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a char buffer which is based on the content of this byte buffer. 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract CharBuffer asCharBuffer(); 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a double buffer which is based on the remaining content of this 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * byte buffer. 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer's position is zero, its limit and capacity is the number 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * of remaining bytes divided by eight, and its mark is not set. The new 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's read-only property and byte order are the same as this buffer's. 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer is direct if this byte buffer is direct. 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer shares its content with this buffer, which means either 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's change of content will be visible to the other. The two buffer's 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position, limit and mark are independent. 211d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a double buffer which is based on the content of this byte 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer. 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract DoubleBuffer asDoubleBuffer(); 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a float buffer which is based on the remaining content of this 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * byte buffer. 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer's position is zero, its limit and capacity is the number 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * of remaining bytes divided by four, and its mark is not set. The new 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's read-only property and byte order are the same as this buffer's. 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer is direct if this byte buffer is direct. 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer shares its content with this buffer, which means either 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's change of content will be visible to the other. The two buffer's 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position, limit and mark are independent. 229d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a float buffer which is based on the content of this byte buffer. 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract FloatBuffer asFloatBuffer(); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a int buffer which is based on the remaining content of this byte 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer. 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer's position is zero, its limit and capacity is the number 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * of remaining bytes divided by four, and its mark is not set. The new 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's read-only property and byte order are the same as this buffer's. 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer is direct if this byte buffer is direct. 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer shares its content with this buffer, which means either 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's change of content will be visible to the other. The two buffer's 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position, limit and mark are independent. 246d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a int buffer which is based on the content of this byte buffer. 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract IntBuffer asIntBuffer(); 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a long buffer which is based on the remaining content of this 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * byte buffer. 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer's position is zero, its limit and capacity is the number 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * of remaining bytes divided by eight, and its mark is not set. The new 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's read-only property and byte order are the same as this buffer's. 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer is direct if this byte buffer is direct. 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer shares its content with this buffer, which means either 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's change of content will be visible to the other. The two buffer's 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position, limit and mark are independent. 263d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a long buffer which is based on the content of this byte buffer. 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract LongBuffer asLongBuffer(); 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a read-only buffer that shares its content with this buffer. 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The returned buffer is guaranteed to be a new instance, even if this 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer is read-only itself. The new buffer's position, limit, capacity 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * and mark are the same as this buffer. 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer shares its content with this buffer, which means this 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's change of content will be visible to the new buffer. The two 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's position, limit and mark are independent. 278d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a read-only version of this buffer. 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer asReadOnlyBuffer(); 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a short buffer which is based on the remaining content of this 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * byte buffer. 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer's position is zero, its limit and capacity is the number 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * of remaining bytes divided by two, and its mark is not set. The new 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's read-only property and byte order are the same as this buffer's. 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer is direct if this byte buffer is direct. 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer shares its content with this buffer, which means either 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's change of content will be visible to the other. The two buffer's 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position, limit and mark are independent. 295d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a short buffer which is based on the content of this byte buffer. 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ShortBuffer asShortBuffer(); 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Compacts this byte buffer. 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The remaining bytes will be moved to the head of the 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer, starting from position zero. Then the position is set to 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code remaining()}; the limit is set to capacity; the mark is 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * cleared. 307d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer compact(); 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Compares the remaining bytes of this buffer to another byte buffer's 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * remaining bytes. 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param otherBuffer 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * another byte buffer. 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a negative value if this is less than {@code other}; 0 if this 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * equals to {@code other}; a positive value if this is greater 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * than {@code other}. 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ClassCastException 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code other} is not a byte buffer. 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int compareTo(ByteBuffer otherBuffer) { 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int compareRemaining = (remaining() < otherBuffer.remaining()) ? remaining() 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project : otherBuffer.remaining(); 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int thisPos = position; 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int otherPos = otherBuffer.position; 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte thisByte, otherByte; 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (compareRemaining > 0) { 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project thisByte = get(thisPos); 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project otherByte = otherBuffer.get(otherPos); 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (thisByte != otherByte) { 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return thisByte < otherByte ? -1 : 1; 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project thisPos++; 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project otherPos++; 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project compareRemaining--; 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return remaining() - otherBuffer.remaining(); 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a duplicated buffer that shares its content with this buffer. 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The duplicated buffer's position, limit, capacity and mark are the same 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * as this buffer's. The duplicated buffer's read-only property and byte 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * order are the same as this buffer's too. 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer shares its content with this buffer, which means either 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's change of content will be visible to the other. The two buffer's 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position, limit and mark are independent. 355d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a duplicated buffer that shares its content with this buffer. 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer duplicate(); 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Checks whether this byte buffer is equal to another object. 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * If {@code other} is not a byte buffer then {@code false} is returned. Two 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * byte buffers are equal if and only if their remaining bytes are exactly 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the same. Position, limit, capacity and mark are not considered. 366d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param other 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the object to compare with this byte buffer. 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return {@code true} if this byte buffer is equal to {@code other}, 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code false} otherwise. 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 372d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson @Override 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean equals(Object other) { 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!(other instanceof ByteBuffer)) { 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer otherBuffer = (ByteBuffer) other; 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (remaining() != otherBuffer.remaining()) { 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int myPosition = position; 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int otherPosition = otherBuffer.position; 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean equalSoFar = true; 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (equalSoFar && (myPosition < limit)) { 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project equalSoFar = get(myPosition++) == otherBuffer.get(otherPosition++); 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return equalSoFar; 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the byte at the current position and increases the position by 1. 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the byte at the current position. 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferUnderflowException 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the position is equal or greater than limit. 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract byte get(); 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Reads bytes from the current position into the specified byte array and 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * increases the position by the number of bytes read. 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Calling this method has the same effect as 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code get(dest, 0, dest.length)}. 408d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param dest 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the destination byte array. 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferUnderflowException 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code dest.length} is greater than {@code remaining()}. 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ByteBuffer get(byte[] dest) { 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return get(dest, 0, dest.length); 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Reads bytes from the current position into the specified byte array, 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * starting at the specified offset, and increases the position by the 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * number of bytes read. 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param dest 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the target byte array. 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param off 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the offset of the byte array, must not be negative and 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * not greater than {@code dest.length}. 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param len 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the number of bytes to read, must not be negative and not 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * greater than {@code dest.length - off} 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if either {@code off} or {@code len} is invalid. 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferUnderflowException 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code len} is greater than {@code remaining()}. 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ByteBuffer get(byte[] dest, int off, int len) { 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int length = dest.length; 440d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson if ((off < 0) || (len < 0) || ((long) off + (long) len > length)) { 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IndexOutOfBoundsException(); 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (len > remaining()) { 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new BufferUnderflowException(); 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = off; i < off + len; i++) { 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project dest[i] = get(); 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return this; 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the byte at the specified index and does not change the position. 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and less than limit. 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the byte at the specified index. 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if index is invalid. 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract byte get(int index); 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the char at the current position and increases the position by 2. 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 2 bytes starting at the current position are composed into a char 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. 469d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the char at the current position. 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferUnderflowException 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the position is greater than {@code limit - 2}. 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract char getChar(); 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the char at the specified index. 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 2 bytes starting from the specified index are composed into a char 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. The position is not 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * changed. 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 2}. 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the char at the specified index. 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract char getChar(int index); 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the double at the current position and increases the position by 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8. 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 8 bytes starting from the current position are composed into a double 497d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * according to the current byte order and returned. 498d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the double at the current position. 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferUnderflowException 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the position is greater than {@code limit - 8}. 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract double getDouble(); 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the double at the specified index. 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 8 bytes starting at the specified index are composed into a double 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. The position is not 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * changed. 511d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 8}. 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the double at the specified index. 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract double getDouble(int index); 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the float at the current position and increases the position by 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 4. 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 4 bytes starting at the current position are composed into a float 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. 527d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the float at the current position. 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferUnderflowException 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the position is greater than {@code limit - 4}. 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract float getFloat(); 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the float at the specified index. 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 4 bytes starting at the specified index are composed into a float 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. The position is not 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * changed. 540d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 4}. 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the float at the specified index. 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract float getFloat(int index); 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the int at the current position and increases the position by 4. 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 4 bytes starting at the current position are composed into a int 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. 555d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the int at the current position. 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferUnderflowException 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the position is greater than {@code limit - 4}. 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract int getInt(); 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the int at the specified index. 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 4 bytes starting at the specified index are composed into a int 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. The position is not 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * changed. 568d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 4}. 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the int at the specified index. 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract int getInt(int index); 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the long at the current position and increases the position by 8. 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 8 bytes starting at the current position are composed into a long 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. 583d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the long at the current position. 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferUnderflowException 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the position is greater than {@code limit - 8}. 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract long getLong(); 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the long at the specified index. 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 8 bytes starting at the specified index are composed into a long 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. The position is not 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * changed. 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 8}. 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the long at the specified index. 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract long getLong(int index); 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the short at the current position and increases the position by 2. 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 2 bytes starting at the current position are composed into a short 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. 611d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the short at the current position. 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferUnderflowException 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the position is greater than {@code limit - 2}. 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract short getShort(); 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the short at the specified index. 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The 2 bytes starting at the specified index are composed into a short 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * according to the current byte order and returned. The position is not 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * changed. 624d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 2}. 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the short at the specified index. 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract short getShort(int index); 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Indicates whether this buffer is based on a byte array and provides 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * read/write access. 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return {@code true} if this buffer is based on a byte array and provides 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * read/write access, {@code false} otherwise. 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final boolean hasArray() { 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return protectedHasArray(); 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Calculates this buffer's hash code from the remaining chars. The 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position, limit, capacity and mark don't affect the hash code. 648d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the hash code calculated from the remaining bytes. 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 651d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson @Override 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int hashCode() { 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int myPosition = position; 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int hash = 0; 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (myPosition < limit) { 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project hash = hash + get(myPosition++); 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return hash; 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Indicates whether this buffer is direct. 663d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return {@code true} if this buffer is direct, {@code false} otherwise. 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract boolean isDirect(); 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the byte order used by this buffer when converting bytes from/to 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * other primitive types. 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The default byte order of byte buffer is always 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@link ByteOrder#BIG_ENDIAN BIG_ENDIAN} 674d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the byte order used by this buffer when converting bytes from/to 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * other primitive types. 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final ByteOrder order() { 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return order == Endianness.BIG_ENDIAN ? ByteOrder.BIG_ENDIAN 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project : ByteOrder.LITTLE_ENDIAN; 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the byte order of this buffer. 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param byteOrder 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the byte order to set. If {@code null} then the order 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * will be {@link ByteOrder#LITTLE_ENDIAN LITTLE_ENDIAN}. 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see ByteOrder 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final ByteBuffer order(ByteOrder byteOrder) { 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return orderImpl(byteOrder); 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer orderImpl(ByteOrder byteOrder) { 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project order = byteOrder == ByteOrder.BIG_ENDIAN ? Endianness.BIG_ENDIAN 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project : Endianness.LITTLE_ENDIAN; 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return this; 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Child class implements this method to realize {@code array()}. 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #array() 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project abstract byte[] protectedArray(); 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Child class implements this method to realize {@code arrayOffset()}. 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #arrayOffset() 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project abstract int protectedArrayOffset(); 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Child class implements this method to realize {@code hasArray()}. 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #hasArray() 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project abstract boolean protectedHasArray(); 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given byte to the current position and increases the position 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * by 1. 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param b 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the byte to write. 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferOverflowException 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if position is equal or greater than limit. 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer put(byte b); 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes bytes in the given byte array to the current position and 739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * increases the position by the number of bytes written. 740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Calling this method has the same effect as 742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code put(src, 0, src.length)}. 743d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param src 745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the source byte array. 746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferOverflowException 748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code remaining()} is less than {@code src.length}. 749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final ByteBuffer put(byte[] src) { 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return put(src, 0, src.length); 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes bytes in the given byte array, starting from the specified offset, 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * to the current position and increases the position by the number of bytes 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * written. 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param src 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the source byte array. 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param off 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the offset of byte array, must not be negative and not greater 765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * than {@code src.length}. 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param len 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the number of bytes to write, must not be negative and not 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * greater than {@code src.length - off}. 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferOverflowException 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code remaining()} is less than {@code len}. 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if either {@code off} or {@code len} is invalid. 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ByteBuffer put(byte[] src, int off, int len) { 778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int length = src.length; 779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((off < 0 ) || (len < 0) || ((long)off + (long)len > length)) { 780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IndexOutOfBoundsException(); 781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (len > remaining()) { 784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new BufferOverflowException(); 785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = off; i < off + len; i++) { 787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project put(src[i]); 788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return this; 790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes all the remaining bytes of the {@code src} byte buffer to this 794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's current position, and increases both buffers' position by the 795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * number of bytes copied. 796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param src 798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the source byte buffer. 799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferOverflowException 801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code src.remaining()} is greater than this buffer's 802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code remaining()}. 803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IllegalArgumentException 804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code src} is this buffer. 805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ByteBuffer put(ByteBuffer src) { 809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (src == this) { 810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException(); 811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (src.remaining() > remaining()) { 813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new BufferOverflowException(); 814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] contents = new byte[src.remaining()]; 816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project src.get(contents); 817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project put(contents); 818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return this; 819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Write a byte to the specified index of this buffer without changing the 823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position. 824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and less than the limit. 827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param b 828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the byte to write. 829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer put(int index, byte b); 836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given char to the current position and increases the position 839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * by 2. 840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The char is converted to bytes using the current byte order. 842d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the char to write. 845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferOverflowException 847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if position is greater than {@code limit - 2}. 848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putChar(char value); 852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given char to the specified index of this buffer. 855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The char is converted to bytes using the current byte order. The position 857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * is not changed. 858d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 2}. 862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the char to write. 864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putChar(int index, char value); 871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given double to the current position and increases the position 874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * by 8. 875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The double is converted to bytes using the current byte order. 877d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the double to write. 880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferOverflowException 882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if position is greater than {@code limit - 8}. 883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putDouble(double value); 887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given double to the specified index of this buffer. 890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The double is converted to bytes using the current byte order. The 892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position is not changed. 893d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 8}. 897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the double to write. 899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putDouble(int index, double value); 906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given float to the current position and increases the position 909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * by 4. 910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The float is converted to bytes using the current byte order. 912d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the float to write. 915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferOverflowException 917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if position is greater than {@code limit - 4}. 918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putFloat(float value); 922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given float to the specified index of this buffer. 925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The float is converted to bytes using the current byte order. The 927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position is not changed. 928d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 4}. 932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the float to write. 934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putFloat(int index, float value); 941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given int to the current position and increases the position by 944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 4. 945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The int is converted to bytes using the current byte order. 947d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the int to write. 950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferOverflowException 952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if position is greater than {@code limit - 4}. 953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putInt(int value); 957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given int to the specified index of this buffer. 960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The int is converted to bytes using the current byte order. The position 962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * is not changed. 963d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 4}. 967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the int to write. 969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putInt(int index, int value); 976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given long to the current position and increases the position 979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * by 8. 980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The long is converted to bytes using the current byte order. 982d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the long to write. 985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferOverflowException 987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if position is greater than {@code limit - 8}. 988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putLong(long value); 992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given long to the specified index of this buffer. 995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The long is converted to bytes using the current byte order. The position 997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * is not changed. 998d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 1000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 1001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 8}. 1002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 1003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the long to write. 1004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 1005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 1006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 1007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 1008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 1009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putLong(int index, long value); 1011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given short to the current position and increases the position 1014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * by 2. 1015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 1016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The short is converted to bytes using the current byte order. 1017d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 1018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 1019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the short to write. 1020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 1021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception BufferOverflowException 1022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if position is greater than {@code limit - 2}. 1023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 1024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 1025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putShort(short value); 1027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the given short to the specified index of this buffer. 1030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 1031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The short is converted to bytes using the current byte order. The 1032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position is not changed. 1033d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 1034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 1035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index, must not be negative and equal or less than 1036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code limit - 2}. 1037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 1038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the short to write. 1039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this buffer. 1040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IndexOutOfBoundsException 1041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index} is invalid. 1042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception ReadOnlyBufferException 1043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if no changes may be made to the contents of this buffer. 1044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer putShort(int index, short value); 1046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a sliced buffer that shares its content with this buffer. 1049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 1050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The sliced buffer's capacity will be this buffer's 1051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code remaining()}, and it's zero position will correspond to 1052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this buffer's current position. The new buffer's position will be 0, 1053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limit will be its capacity, and its mark is cleared. The new buffer's 1054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * read-only property and byte order are the same as this buffer's. 1055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 1056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The new buffer shares its content with this buffer, which means either 1057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * buffer's change of content will be visible to the other. The two buffer's 1058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * position, limit and mark are independent. 1059d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson * 1060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a sliced buffer that shares its content with this buffer. 1061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public abstract ByteBuffer slice(); 1063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a string representing the state of this byte buffer. 1066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 1067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a string representing the state of this byte buffer. 1068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1069d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson @Override 1070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String toString() { 1071d2510429e70ab91a04c67d5ca39b30f354eba221Jesse Wilson StringBuilder buf = new StringBuilder(); 1072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append(getClass().getName()); 1073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append(", status: capacity="); //$NON-NLS-1$ 1074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append(capacity()); 1075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append(" position="); //$NON-NLS-1$ 1076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append(position()); 1077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append(" limit="); //$NON-NLS-1$ 1078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append(limit()); 1079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return buf.toString(); 1080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 1082