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 Classes
    Class
    Description
    Represents 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 memory
    Represents a pointer to 32-bit float(s) in native memory
    Represents 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.