FileDocCategorySizeDatePackage
NIOAccess.javaAPI DocAndroid 1.5 API3024Wed May 06 22:41:04 BST 2009java.nio

NIOAccess

public class NIOAccess extends Object
A class allowing native code to access the underlying data of an NIO Buffer, breaking encapsulation in the name of efficiency.

Fields Summary
Constructors Summary
Methods Summary
static java.lang.ObjectgetBaseArray(java.nio.Buffer b)
Returns the underlying Java array containing the data of the given Buffer, or null if the Buffer is not backed by a Java array.

param
Buffer b the Buffer to be queried
return
the Java array containing the Buffer's data, or null if there is none

        return b._array();
    
static intgetBaseArrayOffset(java.nio.Buffer b)
Returns the offset in bytes from the start of the underlying Java array object containing the data of the given Buffer to the actual start of the data. This method is only meaningful if getBaseArray() returns non-null.

param
Buffer b the Buffer to be queried
return
the data offset in bytes to the start of this Buffer's data

        return b._arrayOffset() << b._elementSizeShift;
    
static longgetBasePointer(java.nio.Buffer b)
Returns the underlying native pointer to the data of the given Buffer starting at the Buffer's current position, or 0 if the Buffer is not backed by native heap storage. Note that this is different than what the Harmony implementation calls a "base address."

param
Buffer b the Buffer to be queried
return
the native pointer to the Buffer's data at its current position, or 0 if there is none

        if (b instanceof DirectBuffer) {
            PlatformAddress address = ((DirectBuffer) b).getEffectiveAddress();
            if (address == null) {
                return 0L;
            }
            return address.toInt() + (b.position() << b._elementSizeShift);
        }
        return 0L;
    
static intgetRemainingBytes(java.nio.Buffer b)
Returns the number of bytes remaining in the given Buffer. That is, this scales remaining() by the byte-size of elements of this Buffer.

param
Buffer b the Buffer to be queried
return
the number of remaining bytes

        return (b.limit - b.position) << b._elementSizeShift;