FileDocCategorySizeDatePackage
ShortToByteBufferAdapter.javaAPI DocAndroid 1.5 API6504Wed May 06 22:41:04 BST 2009java.nio

ShortToByteBufferAdapter

public final class ShortToByteBufferAdapter extends ShortBuffer implements org.apache.harmony.nio.internal.DirectBuffer
This class wraps a byte buffer to be a short buffer.

Implementation notice:

  • After a byte buffer instance is wrapped, it becomes privately owned by the adapter. It must NOT be accessed outside the adapter any more.
  • The byte buffer's position and limit are NOT linked with the adapter. The adapter extends Buffer, thus has its own position and limit.

Fields Summary
private final ByteBuffer
byteBuffer
Constructors Summary
ShortToByteBufferAdapter(ByteBuffer byteBuffer)

        super((byteBuffer.capacity() >> 1));
        this.byteBuffer = byteBuffer;
        this.byteBuffer.clear();
    
Methods Summary
public voidaddressValidityCheck()

        if (byteBuffer instanceof DirectBuffer) {
           ((DirectBuffer)byteBuffer).addressValidityCheck();
        } else {
            assert false : byteBuffer;
        }
    
public java.nio.ShortBufferasReadOnlyBuffer()

        ShortToByteBufferAdapter buf = new ShortToByteBufferAdapter(byteBuffer
                .asReadOnlyBuffer());
        buf.limit = limit;
        buf.position = position;
        buf.mark = mark;
        return buf;
    
public java.nio.ShortBuffercompact()

        if (byteBuffer.isReadOnly()) {
            throw new ReadOnlyBufferException();
        }
        byteBuffer.limit(limit << 1);
        byteBuffer.position(position << 1);
        byteBuffer.compact();
        byteBuffer.clear();
        position = limit - position;
        limit = capacity;
        mark = UNSET_MARK;
        return this;
    
public java.nio.ShortBufferduplicate()

        ShortToByteBufferAdapter buf = new ShortToByteBufferAdapter(byteBuffer
                .duplicate());
        buf.limit = limit;
        buf.position = position;
        buf.mark = mark;
        return buf;
    
public voidfree()

        if (byteBuffer instanceof DirectBuffer) {
            ((DirectBuffer)byteBuffer).free();
        } else {
            assert false : byteBuffer;
        }   
    
public shortget()

        if (position == limit) {
            throw new BufferUnderflowException();
        }
        return byteBuffer.getShort(position++ << 1);
    
public shortget(int index)

        if (index < 0 || index >= limit) {
            throw new IndexOutOfBoundsException();
        }
        return byteBuffer.getShort(index << 1);
    
public org.apache.harmony.luni.platform.PlatformAddressgetBaseAddress()

        if (byteBuffer instanceof DirectBuffer) {
            return ((DirectBuffer)byteBuffer).getBaseAddress();
        } else {
            assert false : byteBuffer;
            return null;
        }
    
public intgetByteCapacity()

        if (byteBuffer instanceof DirectBuffer) {
            return ((DirectBuffer)byteBuffer).getByteCapacity();
        } else {
            assert false : byteBuffer;
            return -1;
        }            
    
public org.apache.harmony.luni.platform.PlatformAddressgetEffectiveAddress()

        if (byteBuffer instanceof DirectBuffer) {
            return ((DirectBuffer)byteBuffer).getEffectiveAddress();
        } else {
            assert false : byteBuffer;
            return null;
        }
    
public booleanisAddressValid()

        if (byteBuffer instanceof DirectBuffer) {
            return ((DirectBuffer)byteBuffer).isAddressValid();
        } else {
            assert false : byteBuffer;
            return false;
        }
    
public booleanisDirect()

        return byteBuffer.isDirect();
    
public booleanisReadOnly()

        return byteBuffer.isReadOnly();
    
public java.nio.ByteOrderorder()

        return byteBuffer.order();
    
protected short[]protectedArray()

        throw new UnsupportedOperationException();
    
protected intprotectedArrayOffset()

        throw new UnsupportedOperationException();
    
protected booleanprotectedHasArray()

        return false;
    
public java.nio.ShortBufferput(short c)

        if (position == limit) {
            throw new BufferOverflowException();
        }
        byteBuffer.putShort(position++ << 1, c);
        return this;
    
public java.nio.ShortBufferput(int index, short c)

        if (index < 0 || index >= limit) {
            throw new IndexOutOfBoundsException();
        }
        byteBuffer.putShort(index << 1, c);
        return this;
    
public java.nio.ShortBufferput(short[] s, int off, int len)

        if (byteBuffer instanceof ReadWriteDirectByteBuffer) {
            byteBuffer.limit(limit << 1);
            byteBuffer.position(position << 1);
            ((ReadWriteDirectByteBuffer) byteBuffer).put(s, off, len);
            this.position += len;
            return this;
        } else {
            return super.put(s, off, len);
        }
    
public java.nio.ShortBufferslice()

        byteBuffer.limit(limit << 1);
        byteBuffer.position(position << 1);
        ShortBuffer result = new ShortToByteBufferAdapter(byteBuffer.slice());
        byteBuffer.clear();
        return result;
    
static java.nio.ShortBufferwrap(java.nio.ByteBuffer byteBuffer)

        return new ShortToByteBufferAdapter(byteBuffer.slice());