HeapByteBuffer.java revision 069d99326386490f9492afd824a364c5fb645e41
1dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski/* 2dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. 3dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * 5dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * This code is free software; you can redistribute it and/or modify it 6dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * under the terms of the GNU General Public License version 2 only, as 7dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * published by the Free Software Foundation. Oracle designates this 8dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * particular file as subject to the "Classpath" exception as provided 9dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * by Oracle in the LICENSE file that accompanied this code. 10dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * 11dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * This code is distributed in the hope that it will be useful, but WITHOUT 12dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * version 2 for more details (a copy is included in the LICENSE file that 15dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * accompanied this code). 16dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * 17dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * You should have received a copy of the GNU General Public License version 18dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * 2 along with this work; if not, write to the Free Software Foundation, 19dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * 21dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * or visit www.oracle.com if you need additional information or have any 23dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * questions. 24dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski */ 25dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 26dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 27dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebskipackage java.nio; 28dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 29dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 30dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski/** 31dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski * A read/write HeapByteBuffer. 32dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski */ 33dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 34dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebskiclass HeapByteBuffer 35dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski extends ByteBuffer 36dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski{ 37dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 38dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski // For speed these fields are actually declared in X-Buffer; 39dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski // these declarations are here as documentation 40dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski /* 41dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 42069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera protected final byte[] hb; 43069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera protected final int offset; 44dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 45dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski */ 46dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 47069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera private final boolean isReadOnly; 48dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 49069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera HeapByteBuffer(int cap, int lim) { // package-private 50069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this(cap, lim, false); 51069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 52dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 53dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 54069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera HeapByteBuffer(int cap, int lim, boolean isReadOnly) { // package-private 55069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera super(-1, 0, lim, cap, new byte[cap], 0); 56069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.isReadOnly = isReadOnly; 57dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 58dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 59dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski HeapByteBuffer(byte[] buf, int off, int len) { // package-private 60069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this(buf, off, len, false); 61069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 62dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 63069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera HeapByteBuffer(byte[] buf, int off, int len, boolean isReadOnly) { // package-private 64dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski super(-1, off, off + len, buf.length, buf, 0); 65069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.isReadOnly = isReadOnly; 66dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 67dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 68dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski protected HeapByteBuffer(byte[] buf, 69069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera int mark, int pos, int lim, int cap, 70069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera int off) { 71069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this(buf, mark, pos, lim, cap, off, false); 72069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 73dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 74069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera protected HeapByteBuffer(byte[] buf, 75069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera int mark, int pos, int lim, int cap, 76069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera int off, boolean isReadOnly) { 77dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski super(mark, pos, lim, cap, buf, off); 78069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.isReadOnly = isReadOnly; 79dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 80dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 81dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer slice() { 82dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return new HeapByteBuffer(hb, 83069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 84069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 85069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.remaining(), 86069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.remaining(), 87069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.position() + offset); 88dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 89dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 90dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer duplicate() { 91dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return new HeapByteBuffer(hb, 92069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.markValue(), 93069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.position(), 94069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.limit(), 95069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.capacity(), 96069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera offset); 97dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 98dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 99dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer asReadOnlyBuffer() { 100dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 101069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return new HeapByteBuffer(hb, 102069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.markValue(), 103069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.position(), 104069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.limit(), 105069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera this.capacity(), 106069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera offset, true); 107dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 108dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 109dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 110dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 111dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 112dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski protected int ix(int i) { 113dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return i + offset; 114dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 115dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 116dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public byte get() { 117dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return hb[ix(nextGetIndex())]; 118dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 119dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 120dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public byte get(int i) { 121dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return hb[ix(checkIndex(i))]; 122dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 123dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 124dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer get(byte[] dst, int offset, int length) { 125dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski checkBounds(offset, length, dst.length); 126dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski if (length > remaining()) 127dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski throw new BufferUnderflowException(); 128dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski System.arraycopy(hb, ix(position()), dst, offset, length); 129dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski position(position() + length); 130dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 131dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 132dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 133dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public boolean isDirect() { 134dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return false; 135dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 136dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 137dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public boolean isReadOnly() { 138069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return isReadOnly; 139dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 140dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 141dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer put(byte x) { 142069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 143069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 144069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 145dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski hb[ix(nextPutIndex())] = x; 146dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 147dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 148dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 149dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer put(int i, byte x) { 150069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 151069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 152069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 153dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski hb[ix(checkIndex(i))] = x; 154dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 155dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 156dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 157dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer put(byte[] src, int offset, int length) { 158069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 159069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 160069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 161dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski checkBounds(offset, length, src.length); 162dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski if (length > remaining()) 163dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski throw new BufferOverflowException(); 164dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski System.arraycopy(src, offset, hb, ix(position()), length); 165dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski position(position() + length); 166dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 167dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 168dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 169dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer put(ByteBuffer src) { 170069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 171069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 172069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 173dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski if (src instanceof HeapByteBuffer) { 174dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski if (src == this) 175dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski throw new IllegalArgumentException(); 176dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski HeapByteBuffer sb = (HeapByteBuffer)src; 177dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int n = sb.remaining(); 178dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski if (n > remaining()) 179dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski throw new BufferOverflowException(); 180dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski System.arraycopy(sb.hb, sb.ix(sb.position()), 181dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski hb, ix(position()), n); 182dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski sb.position(sb.position() + n); 183dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski position(position() + n); 184dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } else if (src.isDirect()) { 185dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int n = src.remaining(); 186dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski if (n > remaining()) 187dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski throw new BufferOverflowException(); 188dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski src.get(hb, ix(position()), n); 189dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski position(position() + n); 190dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } else { 191dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski super.put(src); 192dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 193dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 194dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 195dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 196dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer compact() { 197069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 198069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 199069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 200dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski System.arraycopy(hb, ix(position()), hb, ix(0), remaining()); 201dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski position(remaining()); 202dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski limit(capacity()); 203dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski discardMark(); 204dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 205dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 206dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 207dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski byte _get(int i) { // package-private 208dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return hb[i]; 209dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 210dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 211dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski void _put(int i, byte b) { // package-private 212069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 213069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 214069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 215dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski hb[i] = b; 216dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 217dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 218dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public char getChar() { 219dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getChar(this, ix(nextGetIndex(2)), bigEndian); 220dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 221dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 222dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public char getChar(int i) { 223dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getChar(this, ix(checkIndex(i, 2)), bigEndian); 224dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 225dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 226dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putChar(char x) { 227069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 228069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 229069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 230dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putChar(this, ix(nextPutIndex(2)), x, bigEndian); 231dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 232dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 233dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 234dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putChar(int i, char x) { 235069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 236069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 237069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 238dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putChar(this, ix(checkIndex(i, 2)), x, bigEndian); 239dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 240dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 241dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 242dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public CharBuffer asCharBuffer() { 243dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int size = this.remaining() >> 1; 244dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int off = offset + position(); 245069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 246069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 247069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (CharBuffer)(new ByteBufferAsCharBufferRB(this, 248069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 249069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 250069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 251069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 252069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off)) 253069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (CharBuffer)(new ByteBufferAsCharBufferRL(this, 254069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 255069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 256069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 257069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 258069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off))); 259069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } else { 260069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 261069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (CharBuffer)(new ByteBufferAsCharBufferB(this, 262dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 263dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 264dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 265dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 266dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off)) 267069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (CharBuffer)(new ByteBufferAsCharBufferL(this, 268dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 269dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 270dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 271dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 272dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off))); 273069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 274dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 275dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 276dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public short getShort() { 277dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getShort(this, ix(nextGetIndex(2)), bigEndian); 278dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 279dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 280dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public short getShort(int i) { 281dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getShort(this, ix(checkIndex(i, 2)), bigEndian); 282dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 283dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 284dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putShort(short x) { 285069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 286069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 287069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 288dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putShort(this, ix(nextPutIndex(2)), x, bigEndian); 289dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 290dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 291dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 292dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putShort(int i, short x) { 293069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 294069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 295069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 296dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putShort(this, ix(checkIndex(i, 2)), x, bigEndian); 297dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 298dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 299dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 300dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ShortBuffer asShortBuffer() { 301dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int size = this.remaining() >> 1; 302dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int off = offset + position(); 303069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 304069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 305069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (ShortBuffer)(new ByteBufferAsShortBufferRB(this, 306069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 307069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 308069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 309069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 310069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off)) 311069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (ShortBuffer)(new ByteBufferAsShortBufferRL(this, 312069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 313069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 314069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 315069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 316069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off))); 317069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } else { 318069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 319069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (ShortBuffer)(new ByteBufferAsShortBufferB(this, 320dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 321dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 322dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 323dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 324dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off)) 325069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (ShortBuffer)(new ByteBufferAsShortBufferL(this, 326dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 327dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 328dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 329dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 330dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off))); 331069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 332dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 333dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 334dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public int getInt() { 335dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getInt(this, ix(nextGetIndex(4)), bigEndian); 336dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 337dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 338dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public int getInt(int i) { 339dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getInt(this, ix(checkIndex(i, 4)), bigEndian); 340dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 341dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 342dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putInt(int x) { 343069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 344069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 345069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 346dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putInt(this, ix(nextPutIndex(4)), x, bigEndian); 347dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 348dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 349dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 350dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putInt(int i, int x) { 351069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 352069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 353069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 354dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putInt(this, ix(checkIndex(i, 4)), x, bigEndian); 355dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 356dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 357dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 358dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public IntBuffer asIntBuffer() { 359dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int size = this.remaining() >> 2; 360dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int off = offset + position(); 361069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 362069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 363069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (IntBuffer)(new ByteBufferAsIntBufferRB(this, 364069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 365069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 366069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 367069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 368069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off)) 369069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (IntBuffer)(new ByteBufferAsIntBufferRL(this, 370069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 371069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 372069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 373069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 374069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off))); 375069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } else { 376069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 377069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (IntBuffer)(new ByteBufferAsIntBufferB(this, 378dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 379dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 380dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 381dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 382dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off)) 383069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (IntBuffer)(new ByteBufferAsIntBufferL(this, 384dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 385dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 386dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 387dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 388dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off))); 389069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 390dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 391069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 392dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 393dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public long getLong() { 394dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getLong(this, ix(nextGetIndex(8)), bigEndian); 395dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 396dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 397dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public long getLong(int i) { 398dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getLong(this, ix(checkIndex(i, 8)), bigEndian); 399dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 400dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 401dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 402dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 403dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putLong(long x) { 404069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 405069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 406069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 407dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putLong(this, ix(nextPutIndex(8)), x, bigEndian); 408dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 409dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 410dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 411dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putLong(int i, long x) { 412069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 413069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 414069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 415dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putLong(this, ix(checkIndex(i, 8)), x, bigEndian); 416dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 417dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 418dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 419dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public LongBuffer asLongBuffer() { 420dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int size = this.remaining() >> 3; 421dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int off = offset + position(); 422069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 423069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 424069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (LongBuffer)(new ByteBufferAsLongBufferRB(this, 425069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 426069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 427069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 428069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 429069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off)) 430069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (LongBuffer)(new ByteBufferAsLongBufferRL(this, 431069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 432069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 433069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 434069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 435069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off))); 436069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } else { 437069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 438069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (LongBuffer)(new ByteBufferAsLongBufferB(this, 439dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 440dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 441dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 442dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 443dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off)) 444069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (LongBuffer)(new ByteBufferAsLongBufferL(this, 445dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 446dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 447dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 448dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 449dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off))); 450069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 451dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 452dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 453dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public float getFloat() { 454dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getFloat(this, ix(nextGetIndex(4)), bigEndian); 455dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 456dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 457dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public float getFloat(int i) { 458dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getFloat(this, ix(checkIndex(i, 4)), bigEndian); 459dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 460dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 461dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 462dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 463dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putFloat(float x) { 464069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 465069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 466069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 467dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putFloat(this, ix(nextPutIndex(4)), x, bigEndian); 468dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 469dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 470dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 471dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putFloat(int i, float x) { 472069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 473069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 474069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 475dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putFloat(this, ix(checkIndex(i, 4)), x, bigEndian); 476dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 477dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 478dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 479dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public FloatBuffer asFloatBuffer() { 480dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int size = this.remaining() >> 2; 481dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int off = offset + position(); 482069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 483069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 484069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (FloatBuffer)(new ByteBufferAsFloatBufferRB(this, 485069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 486069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 487069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 488069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 489069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off)) 490069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (FloatBuffer)(new ByteBufferAsFloatBufferRL(this, 491069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 492069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 493069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 494069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 495069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off))); 496069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } else { 497069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 498069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (FloatBuffer)(new ByteBufferAsFloatBufferB(this, 499dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 500dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 501dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 502dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 503dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off)) 504069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (FloatBuffer)(new ByteBufferAsFloatBufferL(this, 505dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 506dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 507dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 508dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 509dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off))); 510069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 511dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 512dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 513dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public double getDouble() { 514dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getDouble(this, ix(nextGetIndex(8)), bigEndian); 515dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 516dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 517dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public double getDouble(int i) { 518dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return Bits.getDouble(this, ix(checkIndex(i, 8)), bigEndian); 519dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 520dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 521dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 522dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 523dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putDouble(double x) { 524069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 525069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 526069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 527dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putDouble(this, ix(nextPutIndex(8)), x, bigEndian); 528dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 529dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 530dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 531dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public ByteBuffer putDouble(int i, double x) { 532069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 533069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera throw new ReadOnlyBufferException(); 534069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 535dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski Bits.putDouble(this, ix(checkIndex(i, 8)), x, bigEndian); 536dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski return this; 537dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 538dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 539dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski public DoubleBuffer asDoubleBuffer() { 540dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int size = this.remaining() >> 3; 541dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski int off = offset + position(); 542069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera if (isReadOnly) { 543069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 544069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (DoubleBuffer)(new ByteBufferAsDoubleBufferRB(this, 545069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 546069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 547069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 548069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 549069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off)) 550069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (DoubleBuffer)(new ByteBufferAsDoubleBufferRL(this, 551069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera -1, 552069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera 0, 553069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 554069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera size, 555069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera off))); 556069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } else { 557069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera return (bigEndian 558069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera ? (DoubleBuffer)(new ByteBufferAsDoubleBufferB(this, 559dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 560dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 561dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 562dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 563dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off)) 564069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera : (DoubleBuffer)(new ByteBufferAsDoubleBufferL(this, 565dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski -1, 566dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski 0, 567dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 568dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski size, 569dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski off))); 570069d99326386490f9492afd824a364c5fb645e41Shubham Ajmera } 571dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski } 572dee594e6a72064fc994b305487a61f2e2bb250e1Piotr Jastrzebski} 573