|
JNA API> 3.1.0 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sun.jna.Pointer
com.sun.jna.Memory
public class Memory
A Pointer
to memory obtained from the native heap via a
call to malloc
.
In some cases it might be necessary to use memory obtained from
malloc
. For example, Memory
helps
accomplish the following idiom:
void *buf = malloc(BUF_LEN * sizeof(char)); call_some_function(buf); free(buf);
The finalize()
method will free allocated memory when
this object is no longer referenced.
Pointer
Field Summary | |
---|---|
protected long |
size
|
Fields inherited from class com.sun.jna.Pointer |
---|
NULL, peer, SIZE |
Constructor Summary | |
---|---|
protected |
Memory()
|
|
Memory(long size)
Allocate space in the native heap via a call to C's malloc . |
Method Summary | |
---|---|
Memory |
align(int byteBoundary)
Provide a view onto this structure with the given alignment. |
protected void |
boundsCheck(long off,
long sz)
Check that indirection won't cause us to write outside the malloc'ed space. |
void |
clear()
Zero the full extent of this memory region. |
protected void |
finalize()
|
protected static void |
free(long ptr)
Call the real native free |
byte |
getByte(long offset)
Indirect the native pointer to malloc space, a la
Pointer.getByte . |
java.nio.ByteBuffer |
getByteBuffer(long offset,
long length)
Get a ByteBuffer mapped to a portion of this memory. |
char |
getChar(long offset)
Indirect the native pointer to malloc space, a la
Pointer.getByte . |
double |
getDouble(long offset)
Indirect the native pointer to malloc space, a la
Pointer.getDouble . |
float |
getFloat(long offset)
Indirect the native pointer to malloc space, a la
Pointer.getFloat . |
int |
getInt(long offset)
Indirect the native pointer to malloc space, a la
Pointer.getInt . |
long |
getLong(long offset)
Indirect the native pointer to malloc space, a la
Pointer.getLong . |
Pointer |
getPointer(long offset)
Indirect the native pointer to malloc space, a la
Pointer.getPointer . |
short |
getShort(long offset)
Indirect the native pointer to malloc space, a la
Pointer.getShort . |
long |
getSize()
|
java.lang.String |
getString(long offset,
boolean wide)
Indirect the native pointer to malloc space, a la
Pointer.getString . |
boolean |
isValid()
Returns false if the memory has been freed. |
protected static long |
malloc(long size)
Call the real native malloc |
void |
read(long bOff,
byte[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.read . |
void |
read(long bOff,
char[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.read . |
void |
read(long bOff,
double[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.read . |
void |
read(long bOff,
float[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.read . |
void |
read(long bOff,
int[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.read . |
void |
read(long bOff,
long[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.read . |
void |
read(long bOff,
short[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.read . |
void |
setByte(long offset,
byte value)
Indirect the native pointer to malloc space, a la
Pointer.setByte . |
void |
setChar(long offset,
char value)
Indirect the native pointer to malloc space, a la
Pointer.setChar . |
void |
setDouble(long offset,
double value)
Indirect the native pointer to malloc space, a la
Pointer.setDouble . |
void |
setFloat(long offset,
float value)
Indirect the native pointer to malloc space, a la
Pointer.setFloat . |
void |
setInt(long offset,
int value)
Indirect the native pointer to malloc space, a la
Pointer.setInt . |
void |
setLong(long offset,
long value)
Indirect the native pointer to malloc space, a la
Pointer.setLong . |
void |
setPointer(long offset,
Pointer value)
Indirect the native pointer to malloc space, a la
Pointer.setPointer . |
void |
setShort(long offset,
short value)
Indirect the native pointer to malloc space, a la
Pointer.setShort . |
void |
setString(long offset,
java.lang.String value,
boolean wide)
Indirect the native pointer to malloc space, a la
Pointer.setString . |
Pointer |
share(long offset)
Provide a view onto this structure from the given offset. |
Pointer |
share(long offset,
long sz)
Provide a view onto this structure from the given offset. |
java.lang.String |
toString()
|
void |
write(long bOff,
byte[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.write . |
void |
write(long bOff,
char[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.write . |
void |
write(long bOff,
double[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.write . |
void |
write(long bOff,
float[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.write . |
void |
write(long bOff,
int[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.write . |
void |
write(long bOff,
long[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.write . |
void |
write(long bOff,
short[] buf,
int index,
int length)
Indirect the native pointer to malloc space, a la
Pointer.write . |
Methods inherited from class com.sun.jna.Pointer |
---|
_setMemory, clear, createConstant, equals, getByteArray, getCharArray, getDoubleArray, getFloatArray, getIntArray, getLongArray, getNativeLong, getPointerArray, getPointerArray, getShortArray, getString, getStringArray, getStringArray, hashCode, indexOf, read, setMemory, setNativeLong, setString, write |
Methods inherited from class java.lang.Object |
---|
clone, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected long size
Constructor Detail |
---|
public Memory(long size)
malloc
.
size
- number of bytes of space to allocateprotected Memory()
Method Detail |
---|
public Pointer share(long offset)
Pointer
will have the same size as the original,
reduced by the offset.
share
in class Pointer
java.lang.IndexOutOfBoundsException
- if the requested memory is outside
the allocated bounds.public Pointer share(long offset, long sz)
share
in class Pointer
java.lang.IndexOutOfBoundsException
- if the requested memory is outside
the allocated bounds.public Memory align(int byteBoundary)
byteBoundary
- Align memory to this number of bytes; should be a
power of two.
java.lang.IndexOutOfBoundsException
- if the requested alignment can
not be met.
java.lang.IllegalArgumentException
- if the requested alignment is not
a positive power of two.protected void finalize()
finalize
in class java.lang.Object
public void clear()
public boolean isValid()
public long getSize()
protected void boundsCheck(long off, long sz)
public void read(long bOff, byte[] buf, int index, int length)
malloc
space, a la
Pointer.read
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
read
in class Pointer
bOff
- byte offset from pointer into which data is copiedbuf
- byte
array into which data is copiedindex
- array index from which to start copyinglength
- number of elements from native pointer that must be copiedPointer.read(long,byte[],int,int)
public void read(long bOff, short[] buf, int index, int length)
malloc
space, a la
Pointer.read
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
read
in class Pointer
bOff
- byte offset from pointer from which data is copiedbuf
- short
array into which data is copiedindex
- array index to which data is copiedlength
- number of elements from native pointer that must be copiedPointer.read(long,short[],int,int)
public void read(long bOff, char[] buf, int index, int length)
malloc
space, a la
Pointer.read
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
read
in class Pointer
bOff
- byte offset from pointer from which data is copiedbuf
- char
array into which data is copiedindex
- array index to which data is copiedlength
- number of elements from native pointer that must be copiedPointer.read(long,char[],int,int)
public void read(long bOff, int[] buf, int index, int length)
malloc
space, a la
Pointer.read
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
read
in class Pointer
bOff
- byte offset from pointer from which data is copiedbuf
- int
array into which data is copiedindex
- array index to which data is copiedlength
- number of elements from native pointer that must be copiedPointer.read(long,int[],int,int)
public void read(long bOff, long[] buf, int index, int length)
malloc
space, a la
Pointer.read
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
read
in class Pointer
bOff
- byte offset from pointer from which data is copiedbuf
- long
array into which data is copiedindex
- array index to which data is copiedlength
- number of elements from native pointer that must be copiedPointer.read(long,long[],int,int)
public void read(long bOff, float[] buf, int index, int length)
malloc
space, a la
Pointer.read
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
read
in class Pointer
bOff
- byte offset from pointer from which data is copiedbuf
- float
array into which data is copiedindex
- array index to which data is copiedlength
- number of elements from native pointer that must be copiedPointer.read(long,float[],int,int)
public void read(long bOff, double[] buf, int index, int length)
malloc
space, a la
Pointer.read
. But this method performs a bounds checks to
ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
read
in class Pointer
bOff
- byte offset from pointer from which data is copiedbuf
- double
array into which data is copiedindex
- array index to which data is copiedlength
- number of elements from native pointer that must be copiedPointer.read(long,double[],int,int)
public void write(long bOff, byte[] buf, int index, int length)
malloc
space, a la
Pointer.write
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
write
in class Pointer
bOff
- byte offset from pointer into which data is copiedbuf
- byte
array from which to copyindex
- array index from which to start copyinglength
- number of elements from buf
that must be
copiedPointer.write(long,byte[],int,int)
public void write(long bOff, short[] buf, int index, int length)
malloc
space, a la
Pointer.write
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
write
in class Pointer
bOff
- byte offset from pointer into which data is copiedbuf
- short
array from which to copyindex
- array index from which to start copyinglength
- number of elements from buf
that must be
copiedPointer.write(long,short[],int,int)
public void write(long bOff, char[] buf, int index, int length)
malloc
space, a la
Pointer.write
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
write
in class Pointer
bOff
- byte offset from pointer into which data is copiedbuf
- char
array from which to copyindex
- array index from which to start copyinglength
- number of elements from buf
that must be
copiedPointer.write(long,char[],int,int)
public void write(long bOff, int[] buf, int index, int length)
malloc
space, a la
Pointer.write
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
write
in class Pointer
bOff
- byte offset from pointer into which data is copiedbuf
- int
array from which to copyindex
- array index from which to start copyinglength
- number of elements from buf
that must be
copiedPointer.write(long,int[],int,int)
public void write(long bOff, long[] buf, int index, int length)
malloc
space, a la
Pointer.write
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
write
in class Pointer
bOff
- byte offset from pointer into which data is copiedbuf
- long
array from which to copyindex
- array index from which to start copyinglength
- number of elements from buf
that must be
copiedPointer.write(long,long[],int,int)
public void write(long bOff, float[] buf, int index, int length)
malloc
space, a la
Pointer.write
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
write
in class Pointer
bOff
- byte offset from pointer into which data is copiedbuf
- float
array from which to copyindex
- array index from which to start copyinglength
- number of elements from buf
that must be
copiedPointer.write(long,float[],int,int)
public void write(long bOff, double[] buf, int index, int length)
malloc
space, a la
Pointer.write
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
write
in class Pointer
bOff
- byte offset from pointer into which data is copiedbuf
- double
array from which to copyindex
- array index from which to start copyinglength
- number of elements from buf
that must be
copiedPointer.write(long,double[],int,int)
public byte getByte(long offset)
malloc
space, a la
Pointer.getByte
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
getByte
in class Pointer
offset
- offset from pointer to perform the indirection
byte
value being pointed toPointer.getByte(long)
public char getChar(long offset)
malloc
space, a la
Pointer.getByte
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
getChar
in class Pointer
offset
- offset from pointer to perform the indirection
wchar_t
value being pointed toPointer.getByte(long)
public short getShort(long offset)
malloc
space, a la
Pointer.getShort
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
getShort
in class Pointer
offset
- byte offset from pointer to perform the indirection
short
value being pointed toPointer.getShort(long)
public int getInt(long offset)
malloc
space, a la
Pointer.getInt
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
getInt
in class Pointer
offset
- byte offset from pointer to perform the indirection
int
value being pointed toPointer.getInt(long)
public long getLong(long offset)
malloc
space, a la
Pointer.getLong
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
getLong
in class Pointer
offset
- byte offset from pointer to perform the indirection
long
value being pointed toPointer.getLong(long)
public float getFloat(long offset)
malloc
space, a la
Pointer.getFloat
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
getFloat
in class Pointer
offset
- byte offset from pointer to perform the indirection
float
value being pointed toPointer.getFloat(long)
public double getDouble(long offset)
malloc
space, a la
Pointer.getDouble
. But this method performs a
bounds check to ensure that the indirection does not cause memory
outside the malloc
ed space to be accessed.
getDouble
in class Pointer
offset
- byte offset from pointer to perform the indirection
double
value being pointed toPointer.getDouble(long)
public Pointer getPointer(long offset)
malloc
space, a la
Pointer.getPointer
. But this method performs
a bounds checks to ensure that the indirection does not cause memory
outside the malloc
ed space to be accessed.
getPointer
in class Pointer
offset
- byte offset from pointer to perform the indirection
Pointer
equivalent of the pointer value
being pointed to, or null
if the pointer value is
NULL
;Pointer.getPointer(long)
public java.nio.ByteBuffer getByteBuffer(long offset, long length)
getByteBuffer
in class Pointer
offset
- byte offset from pointer to start the bufferlength
- Length of ByteBuffer
public java.lang.String getString(long offset, boolean wide)
malloc
space, a la
Pointer.getString
. But this method performs a
bounds checks to ensure that the indirection does not cause memory
outside the malloc
ed space to be accessed.
getString
in class Pointer
offset
- byte offset from pointer to obtain the native string
v * @param wide whether to convert from a wide or standard C string
String
value being pointed toPointer.getString(long, boolean)
public void setByte(long offset, byte value)
malloc
space, a la
Pointer.setByte
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
setByte
in class Pointer
offset
- byte offset from pointer at which value
must be setvalue
- byte
value to setPointer.setByte(long, byte)
public void setChar(long offset, char value)
malloc
space, a la
Pointer.setChar
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
setChar
in class Pointer
offset
- byte offset from pointer at which value
must be setvalue
- char
value to setPointer.setChar(long, char)
public void setShort(long offset, short value)
malloc
space, a la
Pointer.setShort
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
setShort
in class Pointer
offset
- byte offset from pointer at which value
must be setvalue
- short
value to setPointer.setShort(long, short)
public void setInt(long offset, int value)
malloc
space, a la
Pointer.setInt
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
setInt
in class Pointer
offset
- byte offset from pointer at which value
must be setvalue
- int
value to setPointer.setInt(long, int)
public void setLong(long offset, long value)
malloc
space, a la
Pointer.setLong
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
setLong
in class Pointer
offset
- byte offset from pointer at which value
must be setvalue
- long
value to setPointer.setLong(long, long)
public void setFloat(long offset, float value)
malloc
space, a la
Pointer.setFloat
. But this method performs a bounds
checks to ensure that the indirection does not cause memory outside the
malloc
ed space to be accessed.
setFloat
in class Pointer
offset
- byte offset from pointer at which value
must be setvalue
- float
value to setPointer.setFloat(long, float)
public void setDouble(long offset, double value)
malloc
space, a la
Pointer.setDouble
. But this method performs a
bounds checks to ensure that the indirection does not cause memory
outside the malloc
ed space to be accessed.
setDouble
in class Pointer
offset
- byte offset from pointer at which value
must be setvalue
- double
value to setPointer.setDouble(long, double)
public void setPointer(long offset, Pointer value)
malloc
space, a la
Pointer.setPointer
. But this method performs
a bounds checks to ensure that the indirection does not cause memory
outside the malloc
ed space to be accessed.
setPointer
in class Pointer
offset
- byte offset from pointer at which value
must be setvalue
- Pointer
holding the actual pointer value to
set, which may be null
to indicate a NULL
pointer.Pointer.setPointer(long, com.sun.jna.Pointer)
public void setString(long offset, java.lang.String value, boolean wide)
malloc
space, a la
Pointer.setString
. But this method performs a
bounds checks to ensure that the indirection does not cause memory
outside the malloc
ed space to be accessed.
setString
in class Pointer
offset
- byte offset from pointer at which characters in
value
must be setvalue
- java.lang.String
value to setwide
- whether to write the native string as an array of
wchar_t
. If false, writes as a NUL-terminated array of
char
using the default platform encoding.Pointer.setString(long,String,boolean)
protected static long malloc(long size)
protected static void free(long ptr)
public java.lang.String toString()
toString
in class Pointer
|
JNA API> 3.1.0 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |