java.lang.Object
java.lang.foreign.SequenceLayout
- すべての実装されたインタフェース:
MemoryLayoutPREVIEW
public final class SequenceLayout extends Object implements MemoryLayoutPREVIEW
SequenceLayout
は、JavaプラットフォームのプレビューAPIです。
プレビュー機能は、今後のリリースで削除するか、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
-
ネストされたクラスのサマリー
インタフェースjava.lang.foreign.MemoryLayoutPREVIEWで宣言されたネストされたクラス/インタフェース
MemoryLayout.PathElementPREVIEW
-
メソッドのサマリー
修飾子と型メソッド説明final long
このレイアウトに関連付けられている配置制約をビット単位で返します。long
bitSize()
レイアウト・サイズをビット単位で返します。long
byteSize()
レイアウト・サイズをバイト単位で返します。long
この順序レイアウトの要素数を返します。この順序レイアウトに関連付けられた要素レイアウトを返します。boolean
指定されたオブジェクトをこのレイアウトと比較し、等価性を維持します。flatten()
フラット化された順序レイアウトを返します。int
hashCode()
このレイアウトのハッシュ・コード値を返します。boolean
このレイアウトがパディング・レイアウトの場合、trueを返します。name()
このレイアウトに関連付けられている名前(もしあれば)を返します。reshape
(long... elementCounts) この順序レイアウトの要素を多ディメンション順序レイアウトに再配置します。toString()
このレイアウトの文字列表現を返します。withBitAlignment
(long alignmentBits) このレイアウトと同じサイズおよび名前のメモリー・レイアウトを返しますが、指定された整列制約(ビット単位)を使用します。withElementCount
(long elementCount) 指定した要素数で、この順序レイアウトと同じ要素レイアウト、配置制約および名前を持つ順序レイアウトを返します。サイズと位置合わせの制約がこのレイアウトと同じですが、指定された名前でメモリー・レイアウトを返します。インタフェースjava.lang.foreign.MemoryLayoutPREVIEWで宣言されたメソッド
bitAlignment, bitOffset, bitOffsetHandle, bitSize, byteAlignment, byteOffset, byteOffsetHandle, byteSize, isPadding, name, select, sliceHandle, varHandle
-
メソッドの詳細
-
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つのレイアウトが同じ種類であり、同じサイズ、名前および位置合せ制約を持つ場合は、それらが等価であるとみなされます。 また、レイアウトの種類に応じて、追加の条件を満たす必要があります:- orderPREVIEWとcarrierPREVIEWが同じ場合、2つの値のレイアウトは等しいとみなされます
- 2つの順序レイアウトが同じ要素カウント(
elementCount()
を参照してください)を持つ場合、およびその要素レイアウト(elementLayout()
を参照してください)も同じである場合は、2つの順序レイアウトが等しいとみなされます - 2つのグループ・レイアウトは同じ種類の(
GroupLayout.isStruct()
PREVIEW、GroupLayout.isUnion()
PREVIEWを参照してください)であり、メンバー・レイアウト(GroupLayout.memberLayouts()
PREVIEWを参照してください)も同じ場合、同じとみなされます
- 定義:
- インタフェース
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
インタフェースからコピーされた説明: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
-
SequenceLayout
を使用できます。