モジュール java.base
パッケージ java.lang.foreign

クラスSequenceLayout

java.lang.Object
java.lang.foreign.SequenceLayout
すべての実装されたインタフェース:
MemoryLayoutPREVIEW

public final class SequenceLayout extends Object implements MemoryLayoutPREVIEW
SequenceLayoutは、JavaプラットフォームのプレビューAPIです。
プレビュー機能が有効な場合のみ、プログラムでSequenceLayoutを使用できます。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
指定された「要素レイアウト」の繰返しを示す複合レイアウト。 繰返し回数は、順序レイアウト「エレメント件数」と呼ばれます。 有限シーケンスは、順序レイアウト要素レイアウトが順序レイアウト要素数と等しい回数繰り返されるグループ・レイアウトと考えることができます。 つまり、次のレイアウトになります:
MemoryLayout.sequenceLayout(3, ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN));
次のレイアウトと同等です:
MemoryLayout.structLayout(
    ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN),
    ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN),
    ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN));
実装要件:
このクラスは、不変、スレッド・セーフおよびvalue-basedです。
導入されたバージョン:
19
  • メソッドの詳細

    • elementLayout

      public MemoryLayoutPREVIEW elementLayout()
      この順序レイアウトに関連付けられた要素レイアウトを返します。
      戻り値:
      この順序レイアウトに関連付けられた要素レイアウト
    • elementCount

      public long elementCount()
      この順序レイアウトの要素数を返します。
      戻り値:
      この順序レイアウトの要素数
    • withElementCount

      public SequenceLayoutPREVIEW withElementCount(long elementCount)
      指定した要素数で、この順序レイアウトと同じ要素レイアウト、配置制約および名前を持つ順序レイアウトを返します。
      パラメータ:
      elementCount - 新規要素数。
      戻り値:
      指定された要素数を含む順序レイアウト。
      例外:
      IllegalArgumentException - elementCount < 0の場合。
    • reshape

      public SequenceLayoutPREVIEW reshape(long... elementCounts)
      この順序レイアウトの要素を多ディメンション順序レイアウトに再配置します。 結果のレイアウトは、この順序レイアウト(flatten()を参照してください)のフラット化された投影の要素レイアウトが、指定された要素数に従って1つ以上のネストされた順序レイアウトに再配置される順序レイアウトです。 この変換では、レイアウト・サイズが保持されます。つまり、指定された要素数を乗算すると、このシーケンス・レイアウトのフラット化された投影と同じ要素数が生成される必要があります。

      たとえば、次のような種類のシーケンス・レイアウトがあるとします:

      var seq = MemoryLayout.sequenceLayout(4, MemoryLayout.sequenceLayout(3, ValueLayout.JAVA_INT));
      
      seq.reshape(2, 6)をコールすると、次のシーケンス・レイアウトが生成されます:
      var reshapeSeq = MemoryLayout.sequenceLayout(2, MemoryLayout.sequenceLayout(6, ValueLayout.JAVA_INT));
      

      指定された要素数のいずれかが特別な値-1の場合、その位置の要素数は、残りの要素数およびこのレイアウトのフラット化された投影の要素数から推測されます。 たとえば、前述のreshapeSeqに相当するレイアウトは、次の方法で計算することもできます:

      var reshapeSeqImplicit1 = seq.reshape(-1, 6);
      var reshapeSeqImplicit2 = seq.reshape(2, -1);
      

      パラメータ:
      elementCounts - 要素数の配列。この配列の最大数は-1です。
      戻り値:
      この順序レイアウト(flatten()を参照してください)のフラット化された投影の要素レイアウトが1つ以上のネストされた順序レイアウトに再配置される順序レイアウト。
      例外:
      IllegalArgumentException - 複数の要素数が-1に設定されている場合、または1つ以上の要素数が<= 0 (ただし、-1以外)である場合、または必要な推論後に要素数を乗算しても、この順序レイアウトのフラット化された投影と同じ要素数は得られません。
    • flatten

      public SequenceLayoutPREVIEW flatten()
      フラット化された順序レイアウトを返します。 戻される順序レイアウトの要素レイアウトは、この順序レイアウトの要素レイアウトを再帰的にトラバースすることによって検出される最初の非順序要素レイアウトです。 この変換によってレイアウト・サイズが保持されます。このシーケンスのレイアウトにネストされたシーケンスのレイアウトがドロップされ、返されたシーケンスのレイアウトにその要素数が組み込まれます。 たとえば、次のような種類のシーケンス・レイアウトがあるとします:
      var seq = MemoryLayout.sequenceLayout(4, MemoryLayout.sequenceLayout(3, ValueLayout.JAVA_INT));
      
      seq.flatten()をコールすると、次のシーケンス・レイアウトが生成されます:
      var flattenedSeq = MemoryLayout.sequenceLayout(12, ValueLayout.JAVA_INT);
      
      戻り値:
      このレイアウト(ただし、要素数が異なる可能性があります。)と同じサイズの順序レイアウト。要素レイアウトは順序レイアウトではありません。
    • toString

      public String toString()
      このレイアウトの文字列表現を返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のtoString
      戻り値:
      このレイアウトの文字列表現
    • equals

      public boolean equals(Object other)
      指定されたオブジェクトをこのレイアウトと比較し、等価性を維持します。 指定されたオブジェクトもレイアウトであり、このレイアウトと等しい場合にのみ、trueを返します。 2つのレイアウトが同じ種類であり、同じサイズ、名前および位置合せ制約を持つ場合は、それらが等価であるとみなされます。 また、レイアウトの種類に応じて、追加の条件を満たす必要があります:
      定義:
      インタフェースMemoryLayoutPREVIEW内のequals
      パラメータ:
      other - このレイアウトと等価性を持たせるために比較するオブジェクト。
      戻り値:
      指定されたオブジェクトがこのレイアウトに等しい場合、true
      関連項目:
    • hashCode

      public int hashCode()
      このレイアウトのハッシュ・コード値を返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のhashCode
      戻り値:
      このレイアウトのハッシュ・コード値
      関連項目:
    • withName

      public SequenceLayoutPREVIEW withName(String name)
      サイズと位置合わせの制約がこのレイアウトと同じですが、指定された名前でメモリー・レイアウトを返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のwithName
      パラメータ:
      name - レイアウト名。
      戻り値:
      指定された名前のメモリー・レイアウト。
      関連項目:
    • withBitAlignment

      public SequenceLayoutPREVIEW withBitAlignment(long alignmentBits)
      このレイアウトと同じサイズおよび名前のメモリー・レイアウトを返しますが、指定された整列制約(ビット単位)を使用します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のwithBitAlignment
      パラメータ:
      alignmentBits - レイアウト位置合せ制約。ビットで表されます。
      戻り値:
      指定された整列制約を持つメモリー・レイアウト。
    • name

      public final Optional<String> name()
      インタフェースからコピーされた説明:MemoryLayout
      このレイアウトに関連付けられている名前(もしあれば)を返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のname
      戻り値:
      このレイアウトに関連付けられている名前(もしあれば)
      関連項目:
    • bitAlignment

      public final long bitAlignment()
      インタフェースからコピーされた説明:MemoryLayout
      このレイアウトに関連付けられている配置制約をビット単位で返します。 レイアウトの位置合せにより、レイアウトのビット単位の位置合せである2つのAの機能が定義されます。 A <= 8の場合、A/8は、このレイアウトを適切にポイントするポインタに対して整列する必要があるバイト数です。 このため、:
      • A=8では、すべての(通常の意味で)がパケットで共有されないことを意味します。
      • A=64は、aligned (on LP64)、A=32 int aligned、A=16 short alignedなどの単語を意味します。
      • A=512は、x86/SV ABI (AVX-512データ)で必要とされる最も厳密な位置合せです。
      このレイアウト(MemoryLayout.withBitAlignment(long)PREVIEWを参照してください)に明示的な位置合せ制約が設定されていない場合、このメソッドは、このレイアウトに関連付けられている「自然整列」制約(ビット単位)を返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のbitAlignment
      戻り値:
      レイアウト位置合せ制約をビット単位で指定します。
    • byteSize

      public long byteSize()
      インタフェースからコピーされた説明:MemoryLayout
      レイアウト・サイズをバイト単位で返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のbyteSize
      戻り値:
      レイアウト・サイズ(バイト)
    • bitSize

      public long bitSize()
      インタフェースからコピーされた説明:MemoryLayout
      レイアウト・サイズをビット単位で返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のbitSize
      戻り値:
      レイアウト・サイズ(ビット単位)
    • isPadding

      public boolean isPadding()
      インタフェースからコピーされた説明:MemoryLayout
      このレイアウトがパディング・レイアウトの場合、trueを返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のisPadding
      戻り値:
      このレイアウトがパディング・レイアウトの場合、true