jnr.ffi.provider.jffi
Class TransientNativeMemory

java.lang.Object
  extended by jnr.ffi.Pointer
      extended by jnr.ffi.provider.AbstractMemoryIO
          extended by jnr.ffi.provider.jffi.TransientNativeMemory

public class TransientNativeMemory
extends AbstractMemoryIO


Field Summary
protected  long address
           
 
Method Summary
 long address()
          Gets the native address of this memory object (optional operation).
static jnr.ffi.provider.jffi.DirectMemoryIO allocate(Runtime runtime, int size, int align, boolean clear)
           
 java.lang.Object array()
           
 int arrayLength()
           
 int arrayOffset()
           
 void dispose()
           
 boolean equals(java.lang.Object obj)
           
 void get(long offset, byte[] dst, int off, int len)
          Bulk get method for multiple byte values.
 void get(long offset, double[] dst, int off, int len)
          Bulk get method for multiple double values.
 void get(long offset, float[] dst, int off, int len)
          Bulk get method for multiple float values.
 void get(long offset, int[] dst, int off, int len)
          Bulk get method for multiple int values.
 void get(long offset, long[] dst, int off, int len)
          Bulk get method for multiple long values.
 void get(long offset, short[] dst, int off, int len)
          Bulk get method for multiple short values.
 byte getByte(long offset)
          Reads an byte (8 bit) value at the given offset.
 double getDouble(long offset)
          Reads a double (64 bit) value at the given offset.
 float getFloat(long offset)
          Reads a float (32 bit) value at the given offset.
 int getInt(long offset)
          Reads an int (32 bit) value at the given offset.
 long getLongLong(long offset)
          Reads a long (64 bit) value at the given offset.
 Pointer getPointer(long offset)
          Reads an Pointer value at the given offset.
 Pointer getPointer(long offset, long size)
          Reads an Pointer value at the given offset.
 short getShort(long offset)
          Reads a short (16 bit) value at the given offset.
 java.lang.String getString(long offset)
          Reads an String value at the given offset.
 java.lang.String getString(long offset, int maxLength, java.nio.charset.Charset cs)
          Reads a String value at the given offset, using a specific Charset
 boolean hasArray()
           
 int hashCode()
           
 int indexOf(long offset, byte value, int maxlen)
          Returns the location of a byte value within the memory area represented by this Pointer.
 boolean isDirect()
          Indicates whether or not this memory object represents a native memory address.
 void put(long offset, byte[] src, int off, int len)
          Bulk put method for multiple byte values.
 void put(long offset, double[] src, int off, int len)
          Bulk put method for multiple double values.
 void put(long offset, float[] src, int off, int len)
          Bulk put method for multiple float values.
 void put(long offset, int[] src, int off, int len)
          Bulk put method for multiple int values.
 void put(long offset, long[] src, int off, int len)
          Bulk put method for multiple long values.
 void put(long offset, short[] src, int off, int len)
          Bulk put method for multiple short values.
 void putByte(long offset, byte value)
          Writes a byte (8 bit) value at the given offset.
 void putDouble(long offset, double value)
          Writes a double (64 bit, double precision) value at the given offset.
 void putFloat(long offset, float value)
          Writes a float (32 bit, single precision) value at the given offset.
 void putInt(long offset, int value)
          Writes an int (32 bit) value at the given offset.
 void putLongLong(long offset, long value)
          Writes a long (64 bit) value at the given offset.
 void putPointer(long offset, Pointer value)
          Writes a Pointer value at the given offset.
 void putShort(long offset, short value)
          Writes a short (16 bit) value at the given offset.
 void putString(long offset, java.lang.String string, int maxLength, java.nio.charset.Charset cs)
          Writes a String value at the given offset, using a specific Charset
 void putZeroTerminatedByteArray(long offset, byte[] src, int off, int len)
           
 void setMemory(long offset, long size, byte value)
          Sets the value of each byte in the memory area represented by this Pointer.
 long size()
          Gets the size of this memory object (optional operation).
 java.lang.String toString()
           
 
Methods inherited from class jnr.ffi.provider.AbstractMemoryIO
checkBounds, checkBounds, getAddress, getInt, getLong, getNativeLong, getRuntime, indexOf, putAddress, putAddress, putInt, putLong, putNativeLong, slice, slice, transferFrom, transferTo
 
Methods inherited from class jnr.ffi.Pointer
newIntPointer, wrap, wrap, wrap
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

address

protected final long address
Method Detail

allocate

public static jnr.ffi.provider.jffi.DirectMemoryIO allocate(Runtime runtime,
                                                            int size,
                                                            int align,
                                                            boolean clear)

size

public long size()
Description copied from class: Pointer
Gets the size of this memory object (optional operation).

Returns:
the size of the memory area this Pointer points to. If the size is unknown, Long.MAX_VALUE is returned}.

hashCode

public int hashCode()

equals

public boolean equals(java.lang.Object obj)

toString

public java.lang.String toString()

dispose

public final void dispose()

address

public final long address()
Description copied from class: Pointer
Gets the native address of this memory object (optional operation).

Specified by:
address in class Pointer
Returns:
the native address of this memory object. If this object is not a native memory address, an address of zero is returned.

hasArray

public boolean hasArray()
Specified by:
hasArray in class Pointer

array

public java.lang.Object array()
Specified by:
array in class Pointer

arrayOffset

public int arrayOffset()
Specified by:
arrayOffset in class Pointer

arrayLength

public int arrayLength()
Specified by:
arrayLength in class Pointer

getByte

public final byte getByte(long offset)
Description copied from class: Pointer
Reads an byte (8 bit) value at the given offset.

Specified by:
getByte in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be read.
Returns:
the byte value at the offset.

getShort

public final short getShort(long offset)
Description copied from class: Pointer
Reads a short (16 bit) value at the given offset.

Specified by:
getShort in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be read.
Returns:
the short value at the offset.

getInt

public final int getInt(long offset)
Description copied from class: Pointer
Reads an int (32 bit) value at the given offset.

Specified by:
getInt in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be read.
Returns:
the int value contained in the memory at the offset.

getLongLong

public final long getLongLong(long offset)
Description copied from class: Pointer
Reads a long (64 bit) value at the given offset.

Specified by:
getLongLong in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be read.
Returns:
the long value at the offset.

getFloat

public final float getFloat(long offset)
Description copied from class: Pointer
Reads a float (32 bit) value at the given offset.

Specified by:
getFloat in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be read.
Returns:
the float value at the offset.

getDouble

public final double getDouble(long offset)
Description copied from class: Pointer
Reads a double (64 bit) value at the given offset.

Specified by:
getDouble in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be read.
Returns:
the double value at the offset.

putByte

public final void putByte(long offset,
                          byte value)
Description copied from class: Pointer
Writes a byte (8 bit) value at the given offset.

Specified by:
putByte in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be written.
value - the byte value to be written.

putShort

public final void putShort(long offset,
                           short value)
Description copied from class: Pointer
Writes a short (16 bit) value at the given offset.

Specified by:
putShort in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be written.
value - the short value to be written.

putInt

public final void putInt(long offset,
                         int value)
Description copied from class: Pointer
Writes an int (32 bit) value at the given offset.

Specified by:
putInt in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be written.
value - the int value to be written.

putLongLong

public final void putLongLong(long offset,
                              long value)
Description copied from class: Pointer
Writes a long (64 bit) value at the given offset.

Specified by:
putLongLong in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be written.
value - the long value to be written.

putFloat

public final void putFloat(long offset,
                           float value)
Description copied from class: Pointer
Writes a float (32 bit, single precision) value at the given offset.

Specified by:
putFloat in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be written.
value - the float value to be written.

putDouble

public final void putDouble(long offset,
                            double value)
Description copied from class: Pointer
Writes a double (64 bit, double precision) value at the given offset.

Specified by:
putDouble in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be written.
value - the double value to be written.

get

public final void get(long offset,
                      byte[] dst,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk get method for multiple byte values. This method reads multiple byte values from consecutive addresses, beginning at the given offset, and stores them in an array.

Specified by:
get in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the first value will be read.
dst - the array into which values are to be stored.
off - the start index in the dst array to begin storing the values.
len - the number of values to be read.

put

public final void put(long offset,
                      byte[] src,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk put method for multiple byte values. This method writes multiple byte values to consecutive addresses, beginning at the given offset, from an array.

Specified by:
put in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
src - the array to get values from.
off - the start index in the dst array to begin reading values.
len - the number of values to be written.

get

public final void get(long offset,
                      short[] dst,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk get method for multiple short values. This method reads multiple short values from consecutive addresses, beginning at the given offset, and stores them in an array.

Specified by:
get in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the first value will be read.
dst - The array into which values are to be stored.
off - the start index in the dst array to begin storing the values.
len - the number of values to be read.

put

public final void put(long offset,
                      short[] src,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk put method for multiple short values. This method writes multiple short values to consecutive addresses, beginning at the given offset, from an array.

Specified by:
put in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
src - the array to get values from.
off - the start index in the dst array to begin reading values.
len - the number of values to be written.

get

public final void get(long offset,
                      int[] dst,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk get method for multiple int values. This method reads multiple int values from consecutive addresses, beginning at the given offset, and stores them in an array.

Specified by:
get in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the first value will be read.
dst - The array into which values are to be stored.
off - the start index in the dst array to begin storing the values.
len - the number of values to be read.

put

public final void put(long offset,
                      int[] src,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk put method for multiple int values. This method writes multiple int values to consecutive addresses, beginning at the given offset, from an array.

Specified by:
put in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
src - the array to get values from.
off - the start index in the dst array to begin reading values.
len - the number of values to be written.

get

public final void get(long offset,
                      long[] dst,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk get method for multiple long values. This method reads multiple long values from consecutive addresses, beginning at the given offset, and stores them in an array.

Specified by:
get in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the first value will be read.
dst - The array into which values are to be stored.
off - the start index in the dst array to begin storing the values.
len - the number of values to be read.

put

public final void put(long offset,
                      long[] src,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk put method for multiple long values. This method writes multiple long values to consecutive addresses, beginning at the given offset, from an array.

Specified by:
put in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
src - the array to get values from.
off - the start index in the dst array to begin reading values.
len - the number of values to be written.

get

public final void get(long offset,
                      float[] dst,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk get method for multiple float values. This method reads multiple float values from consecutive addresses, beginning at the given offset, and stores them in an array.

Specified by:
get in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the first value will be read.
dst - The array into which values are to be stored.
off - the start index in the dst array to begin storing the values.
len - the number of values to be read.

put

public final void put(long offset,
                      float[] src,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk put method for multiple float values. This method writes multiple float values to consecutive addresses, beginning at the given offset, from an array.

Specified by:
put in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
src - the array to get values from.
off - the start index in the dst array to begin reading values.
len - the number of values to be written.

get

public final void get(long offset,
                      double[] dst,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk get method for multiple double values. This method reads multiple double values from consecutive addresses, beginning at the given offset, and stores them in an array.

Specified by:
get in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the first value will be read.
dst - The array into which values are to be stored.
off - the start index in the dst array to begin storing the values.
len - the number of values to be read.

put

public final void put(long offset,
                      double[] src,
                      int off,
                      int len)
Description copied from class: Pointer
Bulk put method for multiple double values. This method writes multiple double values to consecutive addresses, beginning at the given offset, from an array.

Specified by:
put in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the first value will be written.
src - the array to get values from.
off - the start index in the dst array to begin reading values.
len - the number of values to be written.

getPointer

public Pointer getPointer(long offset)
Description copied from class: Pointer
Reads an Pointer value at the given offset.

Specified by:
getPointer in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the value will be read.
Returns:
the Pointer value read from memory.

getPointer

public Pointer getPointer(long offset,
                          long size)
Description copied from class: Pointer
Reads an Pointer value at the given offset.

Specified by:
getPointer in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the value will be read.
size - the maximum size of the memory location the returned Pointer represents.
Returns:
the Pointer value read from memory.

putPointer

public void putPointer(long offset,
                       Pointer value)
Description copied from class: Pointer
Writes a Pointer value at the given offset.

Specified by:
putPointer in class Pointer
Parameters:
offset - The offset from the start of the memory this Pointer represents at which the value will be written.
value - the Pointer value to be written to memory.

getString

public java.lang.String getString(long offset)
Description copied from class: Pointer
Reads an String value at the given offset.

Specified by:
getString in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the value will be read.
Returns:
the String value read from memory.

getString

public java.lang.String getString(long offset,
                                  int maxLength,
                                  java.nio.charset.Charset cs)
Description copied from class: Pointer
Reads a String value at the given offset, using a specific Charset

Specified by:
getString in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the value will be read.
maxLength - the maximum size of memory to search for a NUL byte.
cs - the Charset to use to decode the string.
Returns:
the String value read from memory.

putString

public void putString(long offset,
                      java.lang.String string,
                      int maxLength,
                      java.nio.charset.Charset cs)
Description copied from class: Pointer
Writes a String value at the given offset, using a specific Charset

Specified by:
putString in class Pointer
Parameters:
offset - the offset from the start of the memory this Pointer represents at which the value will be written.
maxLength - the maximum size of memory to use to store the string.
cs - the Charset to use to decode the string.

putZeroTerminatedByteArray

public void putZeroTerminatedByteArray(long offset,
                                       byte[] src,
                                       int off,
                                       int len)

indexOf

public int indexOf(long offset,
                   byte value,
                   int maxlen)
Description copied from class: Pointer
Returns the location of a byte value within the memory area represented by this Pointer.

Specified by:
indexOf in class Pointer
Parameters:
offset - the offset from the start of the memory location this Pointer represents to begin searching.
value - the byte value to locate.
maxlen - the maximum number of bytes to search for the desired value.
Returns:
the offset from the start of the search area (i.e. relative to the offset parameter), or -1 if not found.

isDirect

public final boolean isDirect()
Description copied from class: Pointer
Indicates whether or not this memory object represents a native memory address.

Memory objects can be either direct (representing native memory), or non-direct (representing java heap memory).

Non-direct memory objects can still be passed to native functions as pointer (void *, char *, etc) parameters, but the java memory will first be copied to a temporary native memory area. The temporary memory area will then be used as the parameter value for the call. If needed, the java memory will be automatically reloaded from the temporary native memory after the native function returns.

Note: the transient nature of the temporary memory allocated for non-direct memory means native functions which store the address value passed to them will fail in unpredictable ways when using non-direct memory. You will need to explicitly allocate direct memory to use those types of functions.

Specified by:
isDirect in class Pointer
Returns:
true if, and only if, this memory object represents a native address.

setMemory

public final void setMemory(long offset,
                            long size,
                            byte value)
Description copied from class: Pointer
Sets the value of each byte in the memory area represented by this Pointer. to a specified value.

Specified by:
setMemory in class Pointer
Parameters:
offset - the offset from the start of the memory location this Pointer represents to begin writing to.
size - the number of bytes to set to the value.
value - the value to set each byte to.


Copyright © 2012. All Rights Reserved.