1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.nio; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20a1603838fe9e865575c87982e32c6343740e464cElliott Hughesimport java.util.Arrays; 21a1603838fe9e865575c87982e32c6343740e464cElliott Hughes 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A buffer of shorts. 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A short buffer can be created in either of the following ways: 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <ul> 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>{@link #allocate(int) Allocate} a new short array and create a buffer 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * based on it;</li> 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>{@link #wrap(short[]) Wrap} an existing short array to create a new 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * buffer;</li> 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>Use {@link java.nio.ByteBuffer#asShortBuffer() ByteBuffer.asShortBuffer} 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to create a short buffer based on a byte buffer.</li> 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </ul> 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 35eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilsonpublic abstract class ShortBuffer extends Buffer implements 36eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson Comparable<ShortBuffer> { 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Creates a short buffer based on a newly allocated short array. 40f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param capacity 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the capacity of the new buffer. 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the created short buffer. 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IllegalArgumentException 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code capacity} is less than zero. 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static ShortBuffer allocate(int capacity) { 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (capacity < 0) { 49126ab1b546c71137a97cef68cc89267e7f7be634Elliott Hughes throw new IllegalArgumentException("capacity < 0: " + capacity); 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 51fe5da19e0e366286cd4d95f7628fe9442b9062c8Elliott Hughes return new ShortArrayBuffer(new short[capacity]); 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Creates a new short buffer by wrapping the given short array. 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Calling this method has the same effect as 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code wrap(array, 0, array.length)}. 59eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson * 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param array 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the short array which the new buffer will be based on. 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the created short buffer. 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static ShortBuffer wrap(short[] array) { 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return wrap(array, 0, array.length); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Creates a new short buffer by wrapping the given short array. 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The new buffer's position will be {@code start}, limit will be 720e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * {@code start + shortCount}, capacity will be the length of the array. 73eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson * 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param array 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the short array which the new buffer will be based on. 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param start 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the start index, must not be negative and not greater than 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code array.length}. 790e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * @param shortCount 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the length, must not be negative and not greater than 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code array.length - start}. 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the created short buffer. 8338f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws IndexOutOfBoundsException 840e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * if either {@code start} or {@code shortCount} is invalid. 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 860e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes public static ShortBuffer wrap(short[] array, int start, int shortCount) { 87a1603838fe9e865575c87982e32c6343740e464cElliott Hughes Arrays.checkOffsetAndCount(array.length, start, shortCount); 88fe5da19e0e366286cd4d95f7628fe9442b9062c8Elliott Hughes ShortBuffer buf = new ShortArrayBuffer(array); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buf.position = start; 900e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes buf.limit = start + shortCount; 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return buf; 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 942589e301d1fb85960045c9ef29682d7e73b1aee7Narayan Kamath ShortBuffer(int capacity, long effectiveDirectAddress) { 952589e301d1fb85960045c9ef29682d7e73b1aee7Narayan Kamath super(1, capacity, effectiveDirectAddress); 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final short[] array() { 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return protectedArray(); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final int arrayOffset() { 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return protectedArrayOffset(); 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a read-only buffer that shares its content with this buffer. 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The returned buffer is guaranteed to be a new instance, even if this 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * buffer is read-only itself. The new buffer's position, limit, capacity 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * and mark are the same as this buffer's. 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The new buffer shares its content with this buffer, which means this 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * buffer's change of content will be visible to the new buffer. The two 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * buffer's position, limit and mark are independent. 116eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson * 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a read-only version of this buffer. 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract ShortBuffer asReadOnlyBuffer(); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Compacts this short buffer. 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The remaining shorts will be moved to the head of the buffer, starting 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * from position zero. Then the position is set to {@code remaining()}; the 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limit is set to capacity; the mark is cleared. 127eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson * 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return this buffer. 12938f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws ReadOnlyBufferException 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if no changes may be made to the contents of this buffer. 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract ShortBuffer compact(); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Compare the remaining shorts of this buffer to another short buffer's 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * remaining shorts. 137f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param otherBuffer 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * another short buffer. 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a negative value if this is less than {@code otherBuffer}; 0 if 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this equals to {@code otherBuffer}; a positive value if this is 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * greater than {@code otherBuffer}. 14338f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws ClassCastException 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code otherBuffer} is not a short buffer. 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int compareTo(ShortBuffer otherBuffer) { 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int compareRemaining = (remaining() < otherBuffer.remaining()) ? remaining() 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project : otherBuffer.remaining(); 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int thisPos = position; 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int otherPos = otherBuffer.position; 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project short thisByte, otherByte; 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (compareRemaining > 0) { 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisByte = get(thisPos); 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project otherByte = otherBuffer.get(otherPos); 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (thisByte != otherByte) { 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return thisByte < otherByte ? -1 : 1; 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisPos++; 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project otherPos++; 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project compareRemaining--; 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return remaining() - otherBuffer.remaining(); 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a duplicated buffer that shares its content with this buffer. 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The duplicated buffer's position, limit, capacity and mark are the same 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * as this buffer. The duplicated buffer's read-only property and byte order 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * are the same as this buffer's. 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The new buffer shares its content with this buffer, which means either 1731c298efc60083a2ce5bdbf3febb942f5ce4c621dElliott Hughes * buffer's change of content will be visible to the other. The two buffers' 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * position, limit and mark are independent. 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract ShortBuffer duplicate(); 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Checks whether this short buffer is equal to another object. 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If {@code other} is not a short buffer then {@code false} is returned. 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Two short buffers are equal if and only if their remaining shorts are 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * exactly the same. Position, limit, capacity and mark are not considered. 184eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson * 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param other 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to compare with this short buffer. 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if this short buffer is equal to {@code other}, 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code false} otherwise. 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 190eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean equals(Object other) { 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!(other instanceof ShortBuffer)) { 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ShortBuffer otherBuffer = (ShortBuffer) other; 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (remaining() != otherBuffer.remaining()) { 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int myPosition = position; 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int otherPosition = otherBuffer.position; 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean equalSoFar = true; 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (equalSoFar && (myPosition < limit)) { 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project equalSoFar = get(myPosition++) == otherBuffer.get(otherPosition++); 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return equalSoFar; 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the short at the current position and increases the position by 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 1. 214f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the short at the current position. 21638f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws BufferUnderflowException 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if the position is equal or greater than limit. 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract short get(); 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Reads shorts from the current position into the specified short array and 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * increases the position by the number of shorts read. 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Calling this method has the same effect as 226ccbe3404e0691dab506d017550658e8e5974c83eElliott Hughes * {@code get(dst, 0, dst.length)}. 227eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson * 228ccbe3404e0691dab506d017550658e8e5974c83eElliott Hughes * @param dst 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the destination short array. 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return this buffer. 23138f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws BufferUnderflowException 232ccbe3404e0691dab506d017550658e8e5974c83eElliott Hughes * if {@code dst.length} is greater than {@code remaining()}. 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 234ccbe3404e0691dab506d017550658e8e5974c83eElliott Hughes public ShortBuffer get(short[] dst) { 235ccbe3404e0691dab506d017550658e8e5974c83eElliott Hughes return get(dst, 0, dst.length); 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Reads shorts from the current position into the specified short array, 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * starting from the specified offset, and increases the position by the 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * number of shorts read. 242f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 243ccbe3404e0691dab506d017550658e8e5974c83eElliott Hughes * @param dst 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the target short array. 2450e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * @param dstOffset 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the offset of the short array, must not be negative and not 247ccbe3404e0691dab506d017550658e8e5974c83eElliott Hughes * greater than {@code dst.length}. 2480e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * @param shortCount 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the number of shorts to read, must be no less than zero and 2500e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * not greater than {@code dst.length - dstOffset}. 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return this buffer. 25238f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws IndexOutOfBoundsException 2530e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * if either {@code dstOffset} or {@code shortCount} is invalid. 25438f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws BufferUnderflowException 2550e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * if {@code shortCount} is greater than {@code remaining()}. 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2570e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes public ShortBuffer get(short[] dst, int dstOffset, int shortCount) { 258a1603838fe9e865575c87982e32c6343740e464cElliott Hughes Arrays.checkOffsetAndCount(dst.length, dstOffset, shortCount); 2590e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes if (shortCount > remaining()) { 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new BufferUnderflowException(); 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2620e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes for (int i = dstOffset; i < dstOffset + shortCount; ++i) { 263ccbe3404e0691dab506d017550658e8e5974c83eElliott Hughes dst[i] = get(); 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return this; 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the short at the specified index; the position is not changed. 270f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param index 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index, must not be negative and less than limit. 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a short at the specified index. 27438f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws IndexOutOfBoundsException 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if index is invalid. 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract short get(int index); 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final boolean hasArray() { 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return protectedHasArray(); 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Calculates this buffer's hash code from the remaining chars. The 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * position, limit, capacity and mark don't affect the hash code. 286eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson * 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the hash code calculated from the remaining shorts. 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 289eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int hashCode() { 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int myPosition = position; 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int hash = 0; 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (myPosition < limit) { 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hash = hash + get(myPosition++); 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return hash; 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Indicates whether this buffer is direct. A direct buffer will try its 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * best to take advantage of native memory APIs and it may not stay in the 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Java heap, so it is not affected by garbage collection. 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A short buffer is direct if it is based on a byte buffer and the byte 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * buffer is direct. 306eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson * 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if this buffer is direct, {@code false} otherwise. 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract boolean isDirect(); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the byte order used by this buffer when converting shorts from/to 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * bytes. 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If this buffer is not based on a byte buffer, then always return the 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * platform's native byte order. 317eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson * 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the byte order used by this buffer when converting shorts from/to 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * bytes. 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract ByteOrder order(); 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Child class implements this method to realize {@code array()}. 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return see {@code array()} 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project abstract short[] protectedArray(); 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Child class implements this method to realize {@code arrayOffset()}. 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return see {@code arrayOffset()} 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project abstract int protectedArrayOffset(); 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Child class implements this method to realize {@code hasArray()}. 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return see {@code hasArray()} 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project abstract boolean protectedHasArray(); 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Writes the given short to the current position and increases the position 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * by 1. 347f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param s 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the short to write. 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return this buffer. 35138f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws BufferOverflowException 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if position is equal or greater than limit. 35338f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws ReadOnlyBufferException 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if no changes may be made to the contents of this buffer. 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract ShortBuffer put(short s); 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Writes shorts from the given short array to the current position and 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * increases the position by the number of shorts written. 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Calling this method has the same effect as 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code put(src, 0, src.length)}. 364eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson * 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param src 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the source short array. 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return this buffer. 36838f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws BufferOverflowException 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code remaining()} is less than {@code src.length}. 37038f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws ReadOnlyBufferException 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if no changes may be made to the contents of this buffer. 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final ShortBuffer put(short[] src) { 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return put(src, 0, src.length); 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Writes shorts from the given short array, starting from the specified 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * offset, to the current position and increases the position by the number 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * of shorts written. 381f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param src 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the source short array. 3840e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * @param srcOffset 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the offset of short array, must not be negative and not 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * greater than {@code src.length}. 3870e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * @param shortCount 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the number of shorts to write, must be no less than zero and 3890e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * not greater than {@code src.length - srcOffset}. 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return this buffer. 39138f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws BufferOverflowException 3920e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * if {@code remaining()} is less than {@code shortCount}. 39338f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws IndexOutOfBoundsException 3940e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes * if either {@code srcOffset} or {@code shortCount} is invalid. 39538f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws ReadOnlyBufferException 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if no changes may be made to the contents of this buffer. 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 3980e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes public ShortBuffer put(short[] src, int srcOffset, int shortCount) { 399a1603838fe9e865575c87982e32c6343740e464cElliott Hughes Arrays.checkOffsetAndCount(src.length, srcOffset, shortCount); 4000e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes if (shortCount > remaining()) { 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new BufferOverflowException(); 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 4030e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes for (int i = srcOffset; i < srcOffset + shortCount; ++i) { 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put(src[i]); 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return this; 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Writes all the remaining shorts of the {@code src} short buffer to this 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * buffer's current position, and increases both buffers' position by the 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * number of shorts copied. 413f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param src 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the source short buffer. 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return this buffer. 41738f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws BufferOverflowException 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code src.remaining()} is greater than this buffer's 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code remaining()}. 42038f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws IllegalArgumentException 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code src} is this buffer. 42238f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws ReadOnlyBufferException 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if no changes may be made to the contents of this buffer. 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ShortBuffer put(ShortBuffer src) { 426fe5da19e0e366286cd4d95f7628fe9442b9062c8Elliott Hughes if (isReadOnly()) { 427fe5da19e0e366286cd4d95f7628fe9442b9062c8Elliott Hughes throw new ReadOnlyBufferException(); 428fe5da19e0e366286cd4d95f7628fe9442b9062c8Elliott Hughes } 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (src == this) { 430126ab1b546c71137a97cef68cc89267e7f7be634Elliott Hughes throw new IllegalArgumentException("src == this"); 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (src.remaining() > remaining()) { 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new BufferOverflowException(); 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project short[] contents = new short[src.remaining()]; 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project src.get(contents); 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put(contents); 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return this; 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Writes a short to the specified index of this buffer; the position is not 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * changed. 444f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param index 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index, must not be negative and less than the limit. 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param s 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the short to write. 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return this buffer. 45038f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws IndexOutOfBoundsException 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if index is invalid. 45238f3983aed5a093c17d1f68c1517bbc72c2862eaElliott Hughes * @throws ReadOnlyBufferException 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if no changes may be made to the contents of this buffer. 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract ShortBuffer put(int index, short s); 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a sliced buffer that shares its content with this buffer. 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The sliced buffer's capacity will be this buffer's {@code remaining()}, 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * and its zero position will correspond to this buffer's current position. 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The new buffer's position will be 0, limit will be its capacity, and its 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * mark is cleared. The new buffer's read-only property and byte order are 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * same as this buffer's. 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The new buffer shares its content with this buffer, which means either 4671c298efc60083a2ce5bdbf3febb942f5ce4c621dElliott Hughes * buffer's change of content will be visible to the other. The two buffers' 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * position, limit and mark are independent. 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract ShortBuffer slice(); 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 472