# Uses of Interface
jdk.incubator.foreign.Addressable

Packages that use Addressable
Package
Description
jdk.incubator.foreign
Classes to support low-level and efficient foreign memory/function access, directly from Java.

- ## Uses of Addressable in jdk.incubator.foreign

  Subinterfaces of Addressable in jdk.incubator.foreign
  Modifier and Type
  Interface
  Description
  `static interface`
  `CLinker.VaList`
  An interface that models a C `va_list`.
  `interface`
  `MemoryAddress`
  A memory address models a reference into a memory location.
  `interface`
  `MemorySegment`
  A memory segment models a contiguous region of memory.
  Methods in jdk.incubator.foreign with parameters of type Addressable
  Modifier and Type
  Method
  Description
  `default MemorySegment`
  SegmentAllocator.`allocate(ValueLayout layout, Addressable value)`
  Allocate a block of memory with given layout and initialize it with given address value (expressed as an `Addressable` instance).
  `default MemorySegment`
  SegmentAllocator.`allocateArray(ValueLayout elementLayout, Addressable[] array)`
  Allocate a block of memory with given layout and initialize it with given address array.
  `MethodHandle`
  CLinker.`downcallHandle(Addressable symbol, MethodType type, FunctionDescriptor function)`
  Obtains a foreign method handle, with the given type and featuring the given function descriptor, which can be used to call a target foreign function at the given address.
  `MethodHandle`
  CLinker.`downcallHandle(Addressable symbol, SegmentAllocator allocator, MethodType type, FunctionDescriptor function)`
  Obtain a foreign method handle, with the given type and featuring the given function descriptor, which can be used to call a target foreign function at the given address.
  `static void`
  MemoryAccess.`setAddress(MemorySegment segment, Addressable value)`
  Writes a memory address at given segment, with byte order set to `ByteOrder.nativeOrder()`.
  `static void`
  MemoryAccess.`setAddressAtIndex(MemorySegment segment, long index, Addressable value)`
  Writes a memory address at given segment and element index, with byte order set to `ByteOrder.nativeOrder()`.
  `static void`
  MemoryAccess.`setAddressAtOffset(MemorySegment segment, long offset, Addressable value)`
  Writes a memory address at given segment and offset, with byte order set to `ByteOrder.nativeOrder()`.
  `CLinker.VaList.Builder`
  CLinker.VaList.Builder.`vargFromAddress(ValueLayout layout, Addressable value)`
  Adds a native value represented as a `MemoryAddress` to the C `va_list` being constructed.