Module java.base

Interface GroupLayout

All Superinterfaces:
MemoryLayoutPREVIEW
All Known Subinterfaces:
StructLayoutPREVIEW, UnionLayoutPREVIEW

public sealed interface GroupLayout extends MemoryLayoutPREVIEW permits StructLayoutPREVIEW, UnionLayoutPREVIEW
GroupLayout is a preview API of the Java platform.
Programs can only use GroupLayout when preview features are enabled.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
A compound layout that aggregates multiple 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 said to be a struct layout (see MemoryLayout.structLayout(MemoryLayout...)PREVIEW); conversely, if all member layouts are laid out at the same starting offset, the resulting group layout is said to be a union layout (see MemoryLayout.unionLayout(MemoryLayout...)PREVIEW).
Implementation Requirements:
This class is immutable, thread-safe and value-based.
Since:
19
  • Method Details

    • memberLayouts

      List<MemoryLayoutPREVIEW> memberLayouts()
      Returns the member layouts associated with this group.
      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...)PREVIEW, MemoryLayout.unionLayout(MemoryLayout...)PREVIEW).
      Returns:
      the member layouts associated with this group.
    • withName

      GroupLayoutPREVIEW withName(String name)
      Returns a memory layout of the same type with the same size and alignment constraint as this layout, but with the specified name.
      Specified by:
      withName in interface MemoryLayoutPREVIEW
      Parameters:
      name - the layout name.
      Returns:
      a memory layout with the given name.
      See Also:
    • withoutName

      GroupLayoutPREVIEW withoutName()
      Returns a memory layout of the same type with the same size and alignment constraint as this layout, but without a name.

      This can be useful to compare two layouts that have different names, but are otherwise equal.

      Specified by:
      withoutName in interface MemoryLayoutPREVIEW
      Returns:
      a memory layout without a name.
      See Also:
    • withBitAlignment

      GroupLayoutPREVIEW withBitAlignment(long bitAlignment)
      Returns a memory layout of the same type with the same size and name as this layout, but with the specified alignment constraint (in bits).
      Specified by:
      withBitAlignment in interface MemoryLayoutPREVIEW
      Parameters:
      bitAlignment - the layout alignment constraint, expressed in bits.
      Returns:
      a memory layout with the given alignment constraint.
      Throws:
      IllegalArgumentException - if bitAlignment is not a power of two, or if it's less than 8.
      IllegalArgumentException - if bitAlignment is less than M, where M is the maximum alignment constraint in any of the member layouts associated with this group layout.