public class Pointer extends Object
write,
read, getXXX, and setXXX, provide
means to access memory underlying the native pointer.While a constructor exists to create a Pointer from an integer value, it's not generally a good idea to be creating pointers that way.
Function| Modifier and Type | Field and Description |
|---|---|
static Pointer |
NULL
Convenience constant, same as
null. |
protected long |
peer
Pointer value of the real native pointer.
|
static int |
SIZE
Size of a native pointer, in bytes.
|
| Constructor and Description |
|---|
Pointer()
Derived class must assign peer pointer value.
|
Pointer(long peer)
Create from native pointer.
|
| Modifier and Type | Method and Description |
|---|---|
void |
clear(long size)
Zero memory for the given number of bytes.
|
static Pointer |
createConstant(int peer)
Convenience constant, equivalent to
(void*)CONSTANT. |
static Pointer |
createConstant(long peer)
Convenience constant, equivalent to
(void*)CONSTANT. |
String |
dump(long offset,
int size)
Dump memory for debugging purposes.
|
boolean |
equals(Object o) |
byte |
getByte(long offset)
Indirect the native pointer as a pointer to
byte. |
byte[] |
getByteArray(long offset,
int arraySize)
|
ByteBuffer |
getByteBuffer(long offset,
long length)
Get a ByteBuffer mapped to the memory pointed to by the pointer,
ensuring the buffer uses native byte order.
|
char |
getChar(long offset)
Indirect the native pointer as a pointer to
wchar_t. |
char[] |
getCharArray(long offset,
int arraySize)
|
double |
getDouble(long offset)
Indirect the native pointer as a pointer to
double. |
double[] |
getDoubleArray(long offset,
int arraySize)
|
float |
getFloat(long offset)
Indirect the native pointer as a pointer to
float. |
float[] |
getFloatArray(long offset,
int arraySize)
|
int |
getInt(long offset)
Indirect the native pointer as a pointer to
int. |
int[] |
getIntArray(long offset,
int arraySize)
|
long |
getLong(long offset)
Indirect the native pointer as a pointer to
long. |
long[] |
getLongArray(long offset,
int arraySize)
|
NativeLong |
getNativeLong(long offset)
Indirect the native pointer as a pointer to
long. |
Pointer |
getPointer(long offset)
Indirect the native pointer as a pointer to pointer.
|
Pointer[] |
getPointerArray(long offset)
Returns an array of
Pointer. |
Pointer[] |
getPointerArray(long offset,
int arraySize)
Returns an array of
Pointer of the requested size. |
short |
getShort(long offset)
Indirect the native pointer as a pointer to
short. |
short[] |
getShortArray(long offset,
int arraySize)
|
String |
getString(long offset)
Copy native memory to a Java String.
|
String |
getString(long offset,
boolean wide)
Deprecated.
use
getString(long,String) or getWideString(long) instead. |
String |
getString(long offset,
String encoding)
Copy native memory to a Java String using the requested encoding.
|
String[] |
getStringArray(long offset)
Returns an array of
String based on a native array
of char *. |
String[] |
getStringArray(long offset,
boolean wide)
Deprecated.
use
getStringArray(long,String) or getWideStringArray(long) instead. |
String[] |
getStringArray(long offset,
int length)
Returns an array of
String based on a native array
of char *, using the given array length. |
String[] |
getStringArray(long offset,
int length,
boolean wide)
Deprecated.
use
getStringArray(long,int,String) or getWideStringArray(long,int) instead. |
String[] |
getStringArray(long offset,
int length,
String encoding)
Returns an array of
String based on a native array
of char* or wchar_t* based on the
wide parameter, using the given array length. |
String[] |
getStringArray(long offset,
String encoding)
Returns an array of
String based on a native array
of char *, using the requested encoding. |
(package private) Object |
getValue(long offset,
Class<?> type,
Object currentValue) |
String |
getWideString(long offset)
Read a wide (
const wchar_t *) string from memory. |
String[] |
getWideStringArray(long offset) |
String[] |
getWideStringArray(long offset,
int length) |
int |
hashCode() |
long |
indexOf(long offset,
byte value)
Returns the offset of the given value in memory from the given offset,
or -1 if the value is not found.
|
static long |
nativeValue(Pointer p)
Read the native peer value.
|
static void |
nativeValue(Pointer p,
long value)
Set the native peer value.
|
void |
read(long offset,
byte[] buf,
int index,
int length)
Indirect the native pointer, copying from memory pointed to by
native pointer, into the specified array.
|
void |
read(long offset,
char[] buf,
int index,
int length)
Indirect the native pointer, copying from memory pointed to by
native pointer, into the specified array.
|
void |
read(long offset,
double[] buf,
int index,
int length)
Indirect the native pointer, copying from memory pointed to by
native pointer, into the specified array.
|
void |
read(long offset,
float[] buf,
int index,
int length)
Indirect the native pointer, copying from memory pointed to by
native pointer, into the specified array.
|
void |
read(long offset,
int[] buf,
int index,
int length)
Indirect the native pointer, copying from memory pointed to by
native pointer, into the specified array.
|
void |
read(long offset,
long[] buf,
int index,
int length)
Indirect the native pointer, copying from memory pointed to by
native pointer, into the specified array.
|
void |
read(long offset,
Pointer[] buf,
int index,
int length)
Indirect the native pointer, copying from memory pointed to by
native pointer, into the specified array.
|
void |
read(long offset,
short[] buf,
int index,
int length)
Indirect the native pointer, copying from memory pointed to by
native pointer, into the specified array.
|
void |
setByte(long offset,
byte value)
Set
value at location being pointed to. |
void |
setChar(long offset,
char value)
Set
value at location being pointed to. |
void |
setDouble(long offset,
double value)
Set
value at location being pointed to. |
void |
setFloat(long offset,
float value)
Set
value at location being pointed to. |
void |
setInt(long offset,
int value)
Set
value at location being pointed to. |
void |
setLong(long offset,
long value)
Set
value at location being pointed to. |
void |
setMemory(long offset,
long length,
byte value)
Write
value to the requested bank of memory. |
void |
setNativeLong(long offset,
NativeLong value)
Set
value at location being pointed to. |
void |
setPointer(long offset,
Pointer value)
Set
value at location being pointed to. |
void |
setShort(long offset,
short value)
Set
value at location being pointed to. |
void |
setString(long offset,
String value)
Copy bytes out of string
value to the location being
pointed to, using the encoding indicated by Native.getDefaultStringEncoding(). |
void |
setString(long offset,
String value,
boolean wide)
Deprecated.
use
setWideString(long,String) instead. |
void |
setString(long offset,
String value,
String encoding)
Copy string
value to the location being pointed to, using
the requested encoding. |
void |
setString(long offset,
WString value)
Copy string
value to the location being pointed to as a
wide string (wchar_t*). |
(package private) void |
setValue(long offset,
Object value,
Class<?> type) |
void |
setWideString(long offset,
String value)
Copy string
value to the location being pointed to as a
wide string (wchar_t*). |
Pointer |
share(long offset)
Provide a view of this memory using the given offset to calculate a new base address.
|
Pointer |
share(long offset,
long sz)
Provide a view of this memory using the given offset to calculate a
new base address, bounds-limiting the memory with the given size.
|
String |
toString() |
void |
write(long offset,
byte[] buf,
int index,
int length)
Indirect the native pointer, copying into memory pointed to by
native pointer, from the specified array.
|
void |
write(long offset,
char[] buf,
int index,
int length)
Indirect the native pointer, copying into memory pointed to by
native pointer, from the specified array.
|
void |
write(long offset,
double[] buf,
int index,
int length)
Indirect the native pointer, copying into memory pointed to by
native pointer, from the specified array.
|
void |
write(long offset,
float[] buf,
int index,
int length)
Indirect the native pointer, copying into memory pointed to by
native pointer, from the specified array.
|
void |
write(long offset,
int[] buf,
int index,
int length)
Indirect the native pointer, copying into memory pointed to by
native pointer, from the specified array.
|
void |
write(long offset,
long[] buf,
int index,
int length)
Indirect the native pointer, copying into memory pointed to by
native pointer, from the specified array.
|
void |
write(long bOff,
Pointer[] buf,
int index,
int length)
Write the given array of Pointer to native memory.
|
void |
write(long offset,
short[] buf,
int index,
int length)
Indirect the native pointer, copying into memory pointed to by
native pointer, from the specified array.
|
public static final int SIZE
public static final Pointer NULL
null.protected long peer
Pointer()
public Pointer(long peer)
public static final Pointer createConstant(long peer)
(void*)CONSTANT.public static final Pointer createConstant(int peer)
(void*)CONSTANT.
This version will avoid setting any of the high bits on 64-bit
systems.public Pointer share(long offset)
public Pointer share(long offset, long sz)
public void clear(long size)
public long indexOf(long offset,
byte value)
public void read(long offset,
byte[] buf,
int index,
int length)
offset - 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 copiedpublic void read(long offset,
short[] buf,
int index,
int length)
offset - 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 copiedpublic void read(long offset,
char[] buf,
int index,
int length)
offset - 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 copiedpublic void read(long offset,
int[] buf,
int index,
int length)
offset - 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 copiedpublic void read(long offset,
long[] buf,
int index,
int length)
offset - 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 copiedpublic void read(long offset,
float[] buf,
int index,
int length)
offset - 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 copiedpublic void read(long offset,
double[] buf,
int index,
int length)
offset - 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 copiedpublic void read(long offset,
Pointer[] buf,
int index,
int length)
offset - byte offset from pointer from which data is copiedbuf - Pointer array into which data is copiedindex - array index to which data is copiedlength - number of elements from native pointer that must be copiedpublic void write(long offset,
byte[] buf,
int index,
int length)
offset - 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
copiedpublic void write(long offset,
short[] buf,
int index,
int length)
offset - 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
copiedpublic void write(long offset,
char[] buf,
int index,
int length)
offset - 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
copiedpublic void write(long offset,
int[] buf,
int index,
int length)
offset - 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
copiedpublic void write(long offset,
long[] buf,
int index,
int length)
offset - 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
copiedpublic void write(long offset,
float[] buf,
int index,
int length)
offset - 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
copiedpublic void write(long offset,
double[] buf,
int index,
int length)
offset - 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
copiedpublic void write(long bOff,
Pointer[] buf,
int index,
int length)
bOff - byte offset from pointer into which data is copiedbuf - Pointer array from which to copyindex - array index from which to start copyinglength - number of elements from buf that must be
copiedpublic byte getByte(long offset)
byte. This is
equivalent to the expression
*((jbyte *)((char *)Pointer + offset)).offset - offset from pointer to perform the indirectionbyte value being pointed topublic char getChar(long offset)
wchar_t. This
is equivalent to the expression
*((wchar_t*)((char *)Pointer + offset)).offset - offset from pointer to perform the indirectionwchar_t value being pointed topublic short getShort(long offset)
short. This is
equivalent to the expression
*((jshort *)((char *)Pointer + offset)).offset - byte offset from pointer to perform the indirectionshort value being pointed topublic int getInt(long offset)
int. This is
equivalent to the expression
*((jint *)((char *)Pointer + offset)).offset - byte offset from pointer to perform the indirectionint value being pointed topublic long getLong(long offset)
long. This is
equivalent to the expression
*((jlong *)((char *)Pointer + offset)).offset - byte offset from pointer to perform the indirectionlong value being pointed topublic NativeLong getNativeLong(long offset)
long. This is
equivalent to the expression
*((long *)((char *)Pointer + offset)).offset - byte offset from pointer to perform the indirectionlong value being pointed topublic float getFloat(long offset)
float. This is
equivalent to the expression
*((jfloat *)((char *)Pointer + offset)).offset - byte offset from pointer to perform the indirectionfloat value being pointed topublic double getDouble(long offset)
double. This
is equivalent to the expression
*((jdouble *)((char *)Pointer + offset)).offset - byte offset from pointer to perform the indirectiondouble value being pointed topublic Pointer getPointer(long offset)
*((void **)((char *)Pointer + offset)).offset - byte offset from pointer to perform the indirectionPointer equivalent of the pointer value
being pointed to, or null if the pointer value is
NULL;public ByteBuffer getByteBuffer(long offset, long length)
offset - byte offset from pointer to start the bufferlength - Length of ByteBuffer@Deprecated public String getString(long offset, boolean wide)
getString(long,String) or getWideString(long) instead.wide is true,
access the memory as an array of wchar_t, otherwise
as an array of char, using the default platform encoding.offset - byte offset from pointer to obtain the native string
v * @param wide whether to convert from a wide or standard C stringString value being pointed topublic String getWideString(long offset)
const wchar_t *) string from memory.public String getString(long offset)
Native.getDefaultStringEncoding().offset - byte offset from pointer to start reading bytesString value being pointed topublic String getString(long offset, String encoding)
offset - byte offset from pointer to obtain the native stringencoding - the desired encodingString value being pointed topublic byte[] getByteArray(long offset,
int arraySize)
public char[] getCharArray(long offset,
int arraySize)
public short[] getShortArray(long offset,
int arraySize)
public int[] getIntArray(long offset,
int arraySize)
public long[] getLongArray(long offset,
int arraySize)
public float[] getFloatArray(long offset,
int arraySize)
public double[] getDoubleArray(long offset,
int arraySize)
public Pointer[] getPointerArray(long offset)
Pointer. The array length is
determined by a NULL-valued terminating element.public Pointer[] getPointerArray(long offset, int arraySize)
Pointer of the requested size.public String[] getStringArray(long offset)
Returns an array of String based on a native array
of char *. The array length is determined by a
NULL-valued terminating element.
Native.getDefaultStringEncoding().public String[] getStringArray(long offset, String encoding)
String based on a native array
of char *, using the requested encoding. The array length
is determined by a NULL-valued terminating element.public String[] getStringArray(long offset, int length)
Returns an array of String based on a native array
of char *, using the given array length.
Native.getDefaultStringEncoding().@Deprecated public String[] getStringArray(long offset, boolean wide)
getStringArray(long,String) or getWideStringArray(long) instead.String based on a native array
of char* or wchar_t* based on the
wide parameter. The array length is determined by a
NULL-valued terminating element.public String[] getWideStringArray(long offset)
public String[] getWideStringArray(long offset, int length)
@Deprecated public String[] getStringArray(long offset, int length, boolean wide)
getStringArray(long,int,String) or getWideStringArray(long,int) instead.String based on a native array
of char* or wchar_t* based on the
wide parameter, using the given array length.public String[] getStringArray(long offset, int length, String encoding)
String based on a native array
of char* or wchar_t* based on the
wide parameter, using the given array length.offset - length - encoding - public void setMemory(long offset,
long length,
byte value)
value to the requested bank of memory.offset - byte offset from pointer to startlength - number of bytes to writevalue - value to be writtenpublic void setByte(long offset,
byte value)
value at location being pointed to. This is equivalent
to the expression
*((jbyte *)((char *)Pointer + offset)) = value.offset - byte offset from pointer at which value
must be setvalue - byte value to setpublic void setShort(long offset,
short value)
value at location being pointed to. This is equivalent
to the expression
*((jshort *)((char *)Pointer + offset)) = value.offset - byte offset from pointer at which value
must be setvalue - short value to setpublic void setChar(long offset,
char value)
value at location being pointed to. This is equivalent
to the expression
*((wchar_t *)((char *)Pointer + offset)) = value.offset - byte offset from pointer at which value
must be setvalue - char value to setpublic void setInt(long offset,
int value)
value at location being pointed to. This is equivalent
to the expression
*((jint *)((char *)Pointer + offset)) = value.offset - byte offset from pointer at which value
must be setvalue - int value to setpublic void setLong(long offset,
long value)
value at location being pointed to. This is equivalent
to the expression
*((jlong *)((char *)Pointer + offset)) = value.offset - byte offset from pointer at which value
must be setvalue - long value to setpublic void setNativeLong(long offset,
NativeLong value)
value at location being pointed to. This is equivalent
to the expression
*((long *)((char *)Pointer + offset)) = value.offset - byte offset from pointer at which value
must be setvalue - long value to setpublic void setFloat(long offset,
float value)
value at location being pointed to. This is equivalent
to the expression
*((jfloat *)((char *)Pointer + offset)) = value.offset - byte offset from pointer at which value
must be setvalue - float value to setpublic void setDouble(long offset,
double value)
value at location being pointed to. This is equivalent
to the expression
*((jdouble *)((char *)Pointer + offset)) = value.offset - byte offset from pointer at which value
must be setvalue - double value to setpublic void setPointer(long offset,
Pointer value)
value at location being pointed to. This is equivalent
to the expression
*((void **)((char *)Pointer + offset)) = value.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.@Deprecated public void setString(long offset, String value, boolean wide)
setWideString(long,String) instead.value to the location being pointed to.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 encoding indicated by Native.getDefaultStringEncoding().public void setWideString(long offset,
String value)
value to the location being pointed to as a
wide string (wchar_t*).offset - byte offset from pointer at which characters in
value must be setvalue - java.lang.String value to setpublic void setString(long offset,
WString value)
value to the location being pointed to as a
wide string (wchar_t*).offset - byte offset from pointer at which characters in
value must be setvalue - WString value to setpublic void setString(long offset,
String value)
value to the location being
pointed to, using the encoding indicated by Native.getDefaultStringEncoding().offset - byte offset from pointer at which characters in
value must be setvalue - java.lang.String value to setpublic void setString(long offset,
String value,
String encoding)
value to the location being pointed to, using
the requested encoding.offset - byte offset from pointer at which characters in
value must be setvalue - java.lang.String value to setencoding - desired encodingpublic String dump(long offset, int size)
public static long nativeValue(Pointer p)
public static void nativeValue(Pointer p, long value)