Interface GroupLayout

All Superinterfaces:
MemoryLayout
All Known Subinterfaces:
StructLayout, UnionLayout

public sealed interface GroupLayout extends MemoryLayout permits StructLayout, UnionLayout
A compound layout that is an aggregation of multiple, heterogeneous member layouts. There are two ways in which member layouts can be combined: if member layouts are laid out one after the other, the resulting group layout is a struct layout; conversely, if all member layouts are laid out at the same starting offset, the resulting group layout is a union layout.
Implementation Requirements:
This class is immutable, thread-safe and value-based.
Since:
22
  • Method Details

    • memberLayouts

      List<MemoryLayout> memberLayouts()
      Returns the member layouts of this group layout.
      API Note:
      the order in which member layouts are returned is the same order in which member layouts have been passed to one of the group layout factory methods (see MemoryLayout.structLayout(MemoryLayout...) and MemoryLayout.unionLayout(MemoryLayout...)).
      Returns:
      the member layouts of this group layout
    • withName

      GroupLayout withName(String name)
      Returns a memory layout with the same characteristics as this layout, but with the given name.
      Specified by:
      withName in interface MemoryLayout
      Parameters:
      name - the layout name
      Returns:
      a memory layout with the same characteristics as this layout, but with the given name
      See Also:
    • withoutName

      GroupLayout withoutName()
      Returns a memory layout with the same characteristics as this layout, but with no name.
      Specified by:
      withoutName in interface MemoryLayout
      Returns:
      a memory layout with the same characteristics as this layout, but with no name
      See Also:
    • withByteAlignment

      GroupLayout withByteAlignment(long byteAlignment)
      Returns a memory layout with the same characteristics as this layout, but with the given alignment constraint (in bytes).
      Specified by:
      withByteAlignment in interface MemoryLayout
      Parameters:
      byteAlignment - the layout alignment constraint, expressed in bytes
      Returns:
      a memory layout with the same characteristics as this layout, but with the given alignment constraint (in bytes)
      Throws:
      IllegalArgumentException - if byteAlignment is not a power of two
      IllegalArgumentException - if byteAlignment is less than M, where M is the maximum alignment constraint in any of the member layouts associated with this group layout