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

インタフェースSequenceLayout

すべてのスーパー・インタフェース:
MemoryLayoutPREVIEW

public sealed interface SequenceLayout extends 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

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

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

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

      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

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

      SequenceLayoutPREVIEW withName(String name)
      インタフェースからコピーされた説明:MemoryLayout
      このレイアウトと同じサイズおよび整列制約を持つ、指定された名前の同じタイプのメモリー・レイアウトを返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のwithName
      パラメータ:
      name - レイアウト名。
      戻り値:
      指定された名前のメモリー・レイアウト。
      関連項目:
    • withBitAlignment

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