Package club.doki7.ffm.ptr
package club.doki7.ffm.ptr
Utility classes encapsulating MemorySegment
, providing type-safe way
to access native memory.
Quick start
Java 22 FFM presents a new way to access native memory, using the new
MemorySegment
. However, unlike previous practices like
Buffer
, MemorySegment
does not have any type
information attached to it. Type information are more relevant with read/write operations,
not the memory segment itself.
In order to fill the gap, a dozen of handy pointer wrapper types are provided in this package.
For example, to manipulate a pointer to integer(s), you may use
IntPtr
:
try (Arena arena = Arena.ofConfined()) {
IntPtr ptr = IntPtr.allocate(arena);
ptr.write(42);
assert ptr.read() == 42;
// pointer to an array of integers
int[] arr = {1, 2, 3, 4, 5};
IntPtr pArray = IntPtr.allocate(arena, arr); // copy from Java array
assert pArray.size() == 5;
for (int i = 0; i < pArray.size(); i++) {
assert pArray.read(i) == arr[i];
}
}
See the documentation of classes in this package for more details.
-
Record ClassesClassDescriptionRepresents a pointer to byte(s) in native memory.Represents a pointer to 32-bit integer(s) in native memory.Represents a pointer to 64-bit double-precision float(s) in native memoryRepresents a pointer to 32-bit float(s) in native memoryRepresents a pointer to 32-bit integer(s) in native memory.Represents a pointer to 64-bit long integer(s) in native memory.Reperesents a pointer to pointer(s) in native memory.Represents a pointer to 16-bit short integer(s) in native memory.