- 既知のすべての実装クラス:
GroupLayoutPREVIEW,SequenceLayoutPREVIEW,ValueLayoutPREVIEW,ValueLayout.OfAddressPREVIEW,ValueLayout.OfBooleanPREVIEW,ValueLayout.OfBytePREVIEW,ValueLayout.OfCharPREVIEW,ValueLayout.OfDoublePREVIEW,ValueLayout.OfFloatPREVIEW,ValueLayout.OfIntPREVIEW,ValueLayout.OfLongPREVIEW,ValueLayout.OfShortPREVIEW
MemoryLayoutは、JavaプラットフォームのプレビューAPIです。
ValueLayoutPREVIEWを参照してください)および「パディング・レイアウト」の値を表すために使用されます。これは、コンテンツを無視する必要があるメモリー・セグメントの一部を表し、主に整列理由(paddingLayout(long)を参照してください)のために存在します。 共通の値レイアウト定数は、ValueLayoutPREVIEWクラスで定義されます。
より複雑なレイアウトをより単純なものから導出できます: 「順序レイアウト」は、1つ以上の要素レイアウト(SequenceLayoutPREVIEWを参照してください)の繰返しを示します。「グループ・レイアウト」は、(typically)異機種間メンバー・レイアウト(GroupLayoutPREVIEWを参照してください)の集計を示します。
レイアウトは、オプションでnameに関連付けることができます。 レイアウト名は、「レイアウト・パス」の作成時に参照できます。
Cでは、次の構造体宣言を考慮してください:
typedef struct {
char kind;
int value;
} TaggedValues[5];
SequenceLayout taggedValues = MemoryLayout.sequenceLayout(5,
MemoryLayout.structLayout(
ValueLayout.JAVA_BYTE.withName("kind"),
MemoryLayout.paddingLayout(24),
ValueLayout.JAVA_INT.withName("value")
)
).withName("TaggedValues");
サイズ、位置合せおよびバイト順序
すべてのレイアウトにはサイズが設定され、値とパディングのレイアウト・サイズは常に明示的に指定されています。これは、使用されているプラットフォームに関係なく、レイアウト摘要が常に同じサイズであることを意味します。 派生レイアウトの場合、サイズは次のように計算されます:- 要素レイアウトがEでサイズがLである順序レイアウトSの場合、SのサイズはEのサイズで、Lを掛けます
- メンバー・レイアウトM1を含むグループ・レイアウトGの場合、サイズがS1、S2、... Sn、それぞれM2、... Mn、Gのサイズは、グループが「構造体」であるかunionであるかに応じて、それぞれS1 + S2 + ... + Snまたはmax(S1, S2, ... Sn)のどちらかになります
さらに、すべてのレイアウトは、次のように推測できる「自然整列」の機能です:
- パディング・レイアウトLの場合、自然位置合せはサイズに関係なく1です。つまり、明示的位置合せ制約がない場合、パディング・レイアウトはネスト先のグループ・レイアウトの位置合せ制約に影響しません。
- サイズがNの値レイアウトLの場合、Lの自然位置合せはNです。
- 要素レイアウトがEである順序レイアウトSの場合、Sでは自然の位置合せがEです。
- メンバー・レイアウトがM1、M2、... Mnのグループ・レイアウトGの場合、位置がA1、A2、... 「1つの」となります。Gの自然な位置合せはmax(A1, A2 ... An)です。
withBitAlignment(long)を参照してください)が必要な場合は、レイアウトの自然位置合せを上書きできます。これは、ハイパーリンク化されたレイアウトを記述するのに役立ちます。
すべての値レイアウトには、レイアウトの作成時に設定されるexplicitバイト順(ByteOrderを参照してください)があります。
レイアウト・パス
「レイアウト・パス」はrootレイアウト(通常、グループまたは順序レイアウトです)から派生し、ルート・レイアウト内にネストされたレイアウトで終了 - これはレイアウト・パスによってレイアウトselectedされたものです。 レイアウト・パスは通常、1つ以上のMemoryLayout.PathElementPREVIEWインスタンスのシーケンスとして表されます。
たとえば、レイアウト・パスは、別のレイアウト内で任意のネストされたレイアウトのoffsetsを取得したり、選択したレイアウトに対応する「メモリー・アクセス・ハンドル」を迅速に取得したり、別のレイアウト内で任意のネストされたレイアウトを「選択」するために役立ちます。
このような「レイアウト・パス」は、このクラスのメソッドを使用してプログラムで作成できます。 たとえば、前述のように構築されたtaggedValuesレイアウト・インスタンスの場合、次のようにfirst順序要素でvalueというメンバー・レイアウトのオフセットをビット単位で取得できます:
long valueOffset = taggedValues.bitOffset(PathElement.sequenceElement(0),
PathElement.groupElement("value")); // yields 32
valueという名前のメンバー・レイアウトを次のように選択できます:
MemoryLayout value = taggedValues.select(PathElement.sequenceElement(),
PathElement.groupElement("value"));
MemoryLayout.PathElement.sequenceElement()PREVIEWメソッドで取得されました)を横断するレイアウト・パスには、実行時にバインドする必要がある追加の空きディメンションがあります。 これは、次のコードのように、レイアウトから「メモリー・セグメント・ビューの可変ハンドル」PREVIEWを取得する場合に重要です:
VarHandle valueHandle = taggedValues.varHandle(PathElement.sequenceElement(),
PathElement.groupElement("value"));
valueという名前のwhichメンバー・レイアウトを囲みシーケンスのレイアウトから選択する必要があることを指定していないため)のみを備えているため、varハンドルvalueHandleが「追加」 longアクセス座標を備えていることになります。
フリー・ディメンションのレイアウト・パスは、bitOffset(PathElement...)またはbyteOffsetHandle(PathElement...)メソッドを使用したオフセット計算メソッド・ハンドルの作成にも使用できます。 ここでも、フリー・ディメンションは、作成されたメソッド・ハンドルのlongパラメータに変換されます。 メソッド・ハンドルを使用すると、メソッド・ハンドルの起動時にこれらの索引を指定することで、異なる索引で順序の要素のオフセットをコンピュートできます。 次に例を示します。
MethodHandle offsetHandle = taggedValues.byteOffsetHandle(PathElement.sequenceElement(),
PathElement.groupElement("kind"));
long offset1 = (long) offsetHandle.invokeExact(1L); // 8
long offset2 = (long) offsetHandle.invokeExact(2L); // 16
- 実装要件:
- このインタフェースの実装は不変、スレッド・セーフ、およびvalue-basedです。
- 導入されたバージョン:
- 19
-
ネストされたクラスのサマリー
ネストされたクラス -
メソッドのサマリー
修飾子と型メソッド説明longこのレイアウトに関連付けられている配置制約をビット単位で返します。default longbitOffset(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトのオフセットをビット単位で計算します。パスはこのレイアウトでルートとみなされます。default MethodHandlebitOffsetHandle(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトのオフセットをビット単位でコンピュートするために使用できるメソッド・ハンドルを作成します。パスはこのレイアウトでルートとみなされます。longbitSize()レイアウト・サイズをビット単位で返します。default longこのレイアウトに関連付けられているバイト単位の配置制約を返します。default longbyteOffset(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトのオフセットをバイト単位で計算します。パスはこのレイアウトでルートとみなされます。default MethodHandlebyteOffsetHandle(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトのオフセット(バイト単位)をコンピュートするために使用できるメソッド・ハンドルを作成します。パスはこのレイアウトでルートとみなされます。longbyteSize()レイアウト・サイズをバイト単位で返します。boolean指定されたオブジェクトをこのレイアウトと比較し、等価性を維持します。inthashCode()このレイアウトのハッシュ・コード値を返します。booleanこのレイアウトがパディング・レイアウトの場合、trueを返します。name()このレイアウトに関連付けられている名前(もしあれば)を返します。static MemoryLayoutPREVIEWpaddingLayout(long size) 指定したサイズでパディング・レイアウトを作成します。default MemoryLayoutPREVIEWselect(MemoryLayout.PathElementPREVIEW... elements) このレイアウトのルートとなっているパスからレイアウトを選択します。static SequenceLayoutPREVIEWsequenceLayout(long elementCount, MemoryLayoutPREVIEW elementLayout) 指定された要素レイアウトおよび要素数を使用して順序レイアウトを作成します。default MethodHandlesliceHandle(MemoryLayout.PathElementPREVIEW... elements) static GroupLayoutPREVIEWstructLayout(MemoryLayoutPREVIEW... elements) 指定されたメンバー・レイアウトを使用して構造体レイアウトを作成します。toString()このレイアウトの文字列表現を返します。static GroupLayoutPREVIEWunionLayout(MemoryLayoutPREVIEW... elements) 指定されたメンバー・レイアウトを使用してユニオン・レイアウトを作成します。static ValueLayoutPREVIEWvalueLayout(Class<?> carrier, ByteOrder order) 指定されたJavaキャリアおよびバイト順序の値レイアウトを作成します。default VarHandlevarHandle(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトでメモリーを参照解除するために使用できるアクセス変数ハンドルを作成します。パスはこのレイアウトでルートとみなされます。withBitAlignment(long bitAlignment) このレイアウトと同じサイズおよび名前のメモリー・レイアウトを返しますが、指定された整列制約(ビット単位)を使用します。サイズと位置合わせの制約がこのレイアウトと同じですが、指定された名前でメモリー・レイアウトを返します。
-
メソッドの詳細
-
bitSize
long bitSize()レイアウト・サイズをビット単位で返します。- 戻り値:
- レイアウト・サイズ(ビット単位)
-
byteSize
long byteSize()レイアウト・サイズをバイト単位で返します。- 戻り値:
- レイアウト・サイズ(バイト)
- 例外:
UnsupportedOperationException-bitSize()が8の倍数でない場合。
-
name
このレイアウトに関連付けられている名前(もしあれば)を返します。- 戻り値:
- このレイアウトに関連付けられている名前(もしあれば)
- 関連項目:
-
withName
MemoryLayoutPREVIEW withName(String name) サイズと位置合わせの制約がこのレイアウトと同じですが、指定された名前でメモリー・レイアウトを返します。- パラメータ:
name- レイアウト名。- 戻り値:
- 指定された名前のメモリー・レイアウト。
- 関連項目:
-
bitAlignment
long bitAlignment()このレイアウトに関連付けられている配置制約をビット単位で返します。 レイアウトの位置合せにより、レイアウトのビット単位の位置合せである2つのAの機能が定義されます。A <= 8の場合、A/8は、このレイアウトを適切にポイントするポインタに対して整列する必要があるバイト数です。 このため、:A=8では、すべての(通常の意味で)がパケットで共有されないことを意味します。A=64は、aligned (on LP64)、A=32int aligned、A=16short alignedなどの単語を意味します。A=512は、x86/SV ABI (AVX-512データ)で必要とされる最も厳密な位置合せです。
withBitAlignment(long)を参照してください)に明示的な位置合せ制約が設定されていない場合、このメソッドはこのレイアウトに関連付けられた「自然整列」制約(ビット単位)を返します。- 戻り値:
- レイアウト位置合せ制約をビット単位で指定します。
-
byteAlignment
default long byteAlignment()このレイアウトに関連付けられているバイト単位の配置制約を返します。 レイアウトの位置合せでは、レイアウトのバイト単位の位置合せである2つのAの累乗を定義します。Aは、このレイアウトを適切に示すポインタに対して整列する必要があるバイト数です。 このため、:A=1では、すべての(通常の意味で)がパケットで共有されないことを意味します。A=8は、aligned (on LP64)、A=4int aligned、A=2short alignedなどの単語を意味します。A=64は、x86/SV ABI (AVX-512データ)で必要とされる最も厳密な位置合せです。
withBitAlignment(long)を参照してください)に明示的な位置合せ制約が設定されていない場合、このメソッドはこのレイアウトに関連付けられた「自然整列」制約(バイト単位)を返します。- 戻り値:
- レイアウト位置合せ制約(バイト)。
- 例外:
UnsupportedOperationException-bitAlignment()が8の倍数でない場合。
-
withBitAlignment
MemoryLayoutPREVIEW withBitAlignment(long bitAlignment) このレイアウトと同じサイズおよび名前のメモリー・レイアウトを返しますが、指定された整列制約(ビット単位)を使用します。- パラメータ:
bitAlignment- レイアウト位置合せ制約。ビットで表されます。- 戻り値:
- 指定された整列制約を持つメモリー・レイアウト。
- 例外:
IllegalArgumentException-bitAlignmentが2の累乗でない場合、または8未満の場合。
-
bitOffset
default long bitOffset(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトのオフセットをビット単位で計算します。パスはこのレイアウトでルートとみなされます。- パラメータ:
elements- レイアウト・パスの要素。- 戻り値:
elementsのレイアウト・パスで選択されるレイアウトのオフセット(ビット単位)。- 例外:
IllegalArgumentException- レイアウト・パスがこのレイアウトにネストされたレイアウトを選択しない場合、またはレイアウト・パスに複数の順序要素索引(MemoryLayout.PathElement.sequenceElement()PREVIEWおよびMemoryLayout.PathElement.sequenceElement(long, long)PREVIEWを参照してください)を選択するパス要素が1つ以上含まれている場合。NullPointerException-elements == null、またはelementsの要素のいずれかがnullの場合。
-
bitOffsetHandle
default MethodHandle bitOffsetHandle(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトのオフセットをビット単位でコンピュートするために使用できるメソッド・ハンドルを作成します。パスはこのレイアウトでルートとみなされます。戻されるメソッド・ハンドルの戻り型は
longで、指定されたレイアウト・パス(MemoryLayout.PathElement.sequenceElement()PREVIEWを参照してください)に空きディメンションがあるのと同じ数のlongパラメータ型が特徴で、パラメータの順序はパス要素の順序に対応します。 返されるメソッド・ハンドルを使用して、bitOffset(PathElement...)のようなレイアウト・オフセットをコンピュートできますが、メソッド・ハンドルの呼出し時にのみシーケンス索引が指定されます。メソッド・ハンドルによって返される最後のオフセットは、次のように計算されます:
whereoffset = c_1 + c_2 + ... + c_m + (x_1 * s_1) + (x_2 * s_2) + ... + (x_n * s_n)x_1、x_2、 ...x_nはlong引数として指定される「動的」値、c_1、c_2、...です。c_mは、staticオフセット定数、s_0、s_1、...です。s_nは、レイアウト・パスから導出されるstaticスタイルの定数です。- パラメータ:
elements- レイアウト・パスの要素。- 戻り値:
- 欠落しているシーケンス要素インデックスで指定された場合に、指定されたレイアウト・パス要素で指定されたレイアウト要素のビット・オフセットをコンピュートするために使用できるメソッド・ハンドル。
- 例外:
IllegalArgumentException- レイアウト・パスに複数の順序要素索引(MemoryLayout.PathElement.sequenceElement(long, long)PREVIEWを参照してください)を選択するパス要素を1つ以上含む場合。
-
byteOffset
default long byteOffset(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトのオフセットをバイト単位で計算します。パスはこのレイアウトでルートとみなされます。- パラメータ:
elements- レイアウト・パスの要素。- 戻り値:
elementsのレイアウト・パスによって選択されたレイアウトのオフセット(バイト単位)。- 例外:
IllegalArgumentException- レイアウト・パスがこのレイアウトにネストされたレイアウトを選択しない場合、またはレイアウト・パスに複数の順序要素索引(MemoryLayout.PathElement.sequenceElement()PREVIEWおよびMemoryLayout.PathElement.sequenceElement(long, long)PREVIEWを参照してください)を選択するパス要素が1つ以上含まれている場合。UnsupportedOperationException-bitOffset(elements)が8の倍数でない場合。NullPointerException-elements == null、またはelementsの要素のいずれかがnullの場合。
-
byteOffsetHandle
default MethodHandle byteOffsetHandle(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトのオフセット(バイト単位)をコンピュートするために使用できるメソッド・ハンドルを作成します。パスはこのレイアウトでルートとみなされます。戻されるメソッド・ハンドルの戻り型は
longで、指定されたレイアウト・パス(MemoryLayout.PathElement.sequenceElement()PREVIEWを参照してください)に空きディメンションがあるのと同じ数のlongパラメータ型が特徴で、パラメータの順序はパス要素の順序に対応します。 返されるメソッド・ハンドルを使用して、byteOffset(PathElement...)のようなレイアウト・オフセットをコンピュートできますが、メソッド・ハンドルの呼出し時にのみシーケンス索引が指定されます。メソッド・ハンドルによって返される最後のオフセットは、次のように計算されます:
wherebitOffset = c_1 + c_2 + ... + c_m + (x_1 * s_1) + (x_2 * s_2) + ... + (x_n * s_n) offset = bitOffset / 8x_1、x_2、 ...x_nはlong引数として指定される「動的」値、c_1、c_2、...です。c_mは、staticオフセット定数、s_0、s_1、...です。s_nは、レイアウト・パスから導出されるstaticスタイルの定数です。計算されたビット単位のオフセットが8の倍数でない場合、メソッド・ハンドルは
UnsupportedOperationExceptionをスローします。- パラメータ:
elements- レイアウト・パスの要素。- 戻り値:
- 欠落しているシーケンス要素インデックスで指定された場合に、指定されたレイアウト・パス要素で指定されたレイアウト要素のバイト・オフセットをコンピュートするために使用できるメソッド・ハンドル。
- 例外:
IllegalArgumentException- レイアウト・パスに複数の順序要素索引(MemoryLayout.PathElement.sequenceElement(long, long)PREVIEWを参照してください)を選択するパス要素を1つ以上含む場合。
-
varHandle
default VarHandle varHandle(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトでメモリーを参照解除するために使用できるアクセス変数ハンドルを作成します。パスはこのレイアウトでルートとみなされます。返されるvarハンドルによってアクセスされる最終的なメモリーのロケーションは次のように計算できます:
ここで、address = base + offsetbaseは、MemorySegmentPREVIEWアクセス座標(MemorySegment.address()PREVIEWおよびMemoryAddress.toRawLongValue()PREVIEWを参照してください)およびoffsetによって表されるベース・アドレスを次の形式で表します:
ここで、offset = c_1 + c_2 + ... + c_m + (x_1 * s_1) + (x_2 * s_2) + ... + (x_n * s_n)x_1、x_2、...x_nはlong引数として提供される「動的」値です。一方、c_1、c_2、...c_mはstaticオフセット定数で、s_1、s_2、...s_nは、レイアウト・パスから導出されるstaticの積層定数です。また、指定された動的値は、レイアウト・パス(
0 <= x_i < b_i)から導出されるバインド(1 <= i <= nまたはIndexOutOfBoundsExceptionがスローされる)に準拠している必要があります。- APIのノート:
- 結果のvarハンドルには、このレイアウト・パスに含まれる未指定の各シーケンス・アクセス・コンポーネントについて、追加の
longアクセス座標があります。 さらに、結果のvarハンドルは、すべてのメモリー・セグメント・ビュー・ハンドルに共通する特定の「アクセス・モード制限」を備えています。 - パラメータ:
elements- レイアウト・パスの要素。- 戻り値:
elementsのレイアウト・パスで選択された(ネストする可能性がある)レイアウトでメモリーを参照解除するために使用できるvarハンドルです。- 例外:
UnsupportedOperationException- 配置パスに、配置制約に互換性がない要素が1つ以上ある場合。IllegalArgumentException-elementsのレイアウト・パスで値レイアウト(ValueLayoutPREVIEWを参照してください)が選択されていない場合。- 関連項目:
-
sliceHandle
default MethodHandle sliceHandle(MemoryLayout.PathElementPREVIEW... elements) メモリー・セグメントを指定して、指定されたレイアウト・パスによって選択されたレイアウトに対応するslicePREVIEWを返すメソッド・ハンドルを作成します。パスはこのレイアウトでルートとみなされます。返されるメソッド・ハンドルの戻り型は
MemorySegmentで、スライスされるセグメントを表す先頭パラメータとしてMemorySegmentパラメータを備え、指定されたレイアウト・パス(MemoryLayout.PathElement.sequenceElement()PREVIEWを参照してください)に空きディメンションがあるのと同じ数の末尾のlongパラメータ・タイプを備えています。パラメータの順序はパス要素の順序に対応します。 戻されたメソッド・ハンドルを使用して、MemorySegment.asSlice(long, long)PREVIEWの使用に似たスライスを作成できますが、オフセット引数は、メソッド・ハンドルの起動時に指定された索引に基づいて動的にコンピュートされます。返されたセグメントのオフセットは次のように計算されます:
ここで、bitOffset = c_1 + c_2 + ... + c_m + (x_1 * s_1) + (x_2 * s_2) + ... + (x_n * s_n) offset = bitOffset / 8x_1、x_2、...x_nはlong引数として提供される「動的」値です。一方、c_1、c_2、...c_mはstaticオフセット定数で、s_1、s_2、...s_nは、レイアウト・パスから導出されるstaticの積層定数です。オフセットの計算後、返されたセグメントは、次のようにコールして作成されます:
ここで、segment.asSlice(offset, layout.byteSize());segmentはスライスされるセグメントで、layoutは、select(PathElement...)のように、特定のレイアウト・パスによって選択されたレイアウトです。計算されたビット単位のオフセットが8の倍数でない場合、メソッド・ハンドルは
UnsupportedOperationExceptionをスローします。- パラメータ:
elements- レイアウト・パスの要素。- 戻り値:
- セグメントを指定して、選択したレイアウト要素のスライスを作成するために使用できるメソッド・ハンドル。
- 例外:
UnsupportedOperationException- 選択したレイアウトのサイズが8の倍数でない場合。
-
select
default MemoryLayoutPREVIEW select(MemoryLayout.PathElementPREVIEW... elements) このレイアウトのルートとなっているパスからレイアウトを選択します。- パラメータ:
elements- レイアウト・パスの要素。- 戻り値:
elementsでレイアウト・パスによって選択されるレイアウト。- 例外:
IllegalArgumentException- レイアウト・パスがこのレイアウトにネストされたレイアウトを選択しない場合、またはレイアウト・パスに1つ以上のパス要素が含まれる索引(MemoryLayout.PathElement.sequenceElement(long)PREVIEWおよびMemoryLayout.PathElement.sequenceElement(long, long)PREVIEWを参照してください)を選択します。
-
isPadding
boolean isPadding()このレイアウトがパディング・レイアウトの場合、trueを返します。- 戻り値:
- このレイアウトがパディング・レイアウトの場合、true
-
equals
boolean equals(Object other) 指定されたオブジェクトをこのレイアウトと比較し、等価性を維持します。 指定されたオブジェクトもレイアウトであり、このレイアウトと等しい場合にのみ、trueを返します。 2つのレイアウトが同じ種類であり、同じサイズ、名前および位置合せ制約を持つ場合は、それらが等価であるとみなされます。 また、レイアウトの種類に応じて、追加の条件を満たす必要があります:- orderPREVIEWとcarrierPREVIEWが同じ場合、2つの値のレイアウトは等しいとみなされます
- 同じ要素数(
SequenceLayout.elementCount()PREVIEWを参照してください)を持つ場合、およびそれらの要素レイアウト(SequenceLayout.elementLayout()PREVIEWを参照してください)も等しい場合、2つの順序レイアウトは等しいとみなされます - 2つのグループ・レイアウトは同じ種類の(
GroupLayout.isStruct()PREVIEW、GroupLayout.isUnion()PREVIEWを参照してください)であり、メンバー・レイアウト(GroupLayout.memberLayouts()PREVIEWを参照してください)も同じ場合、同じとみなされます
-
hashCode
int hashCode()このレイアウトのハッシュ・コード値を返します。 -
toString
String toString()このレイアウトの文字列表現を返します。 -
paddingLayout
static MemoryLayoutPREVIEW paddingLayout(long size) 指定したサイズでパディング・レイアウトを作成します。- パラメータ:
size- パディングのサイズ(ビット)。- 戻り値:
- 新しいセレクタ・レイアウト。
- 例外:
IllegalArgumentException-size <= 0の場合
-
valueLayout
static ValueLayoutPREVIEW valueLayout(Class<?> carrier, ByteOrder order) 指定されたJavaキャリアおよびバイト順序の値レイアウトを作成します。 結果値レイアウトのタイプは、指定されたキャリアによって決まります:ValueLayout.OfBooleanPREVIEW (boolean.classの場合)ValueLayout.OfBytePREVIEW (byte.classの場合)ValueLayout.OfShortPREVIEW (short.classの場合)ValueLayout.OfCharPREVIEW (char.classの場合)ValueLayout.OfIntPREVIEW (int.classの場合)ValueLayout.OfFloatPREVIEW (float.classの場合)ValueLayout.OfLongPREVIEW (long.classの場合)ValueLayout.OfDoublePREVIEW (double.classの場合)ValueLayout.OfAddressPREVIEW (MemoryAddress.classの場合)
- パラメータ:
carrier- 値レイアウト・キャリア。order- 値レイアウトのバイト順。- 戻り値:
- 指定されたJavaキャリアおよびバイト順序での値のレイアウト。
- 例外:
IllegalArgumentException- キャリア・タイプがサポートされていない場合。
-
sequenceLayout
static SequenceLayoutPREVIEW sequenceLayout(long elementCount, MemoryLayoutPREVIEW elementLayout) 指定された要素レイアウトおよび要素数を使用して順序レイアウトを作成します。 要素数が特殊な値-1を持つ場合、要素数は、次の式を使用して、順序レイアウト・サイズがオーバーフローしないように可能な最大数であるとみなされます:inferredElementCount = Long.MAX_VALUE / elementLayout.bitSize();- パラメータ:
elementCount- 順序要素数。-1に設定すると、順序要素数が推測されます。elementLayout- 順序要素レイアウト。- 戻り値:
- 指定された要素レイアウトおよびサイズの新しい順序レイアウト。
- 例外:
IllegalArgumentException-elementCount < -1の場合。IllegalArgumentException-elementCount != -1および計算elementCount * elementLayout.bitSize()がオーバーフローした場合。
-
structLayout
static GroupLayoutPREVIEW structLayout(MemoryLayoutPREVIEW... elements) 指定されたメンバー・レイアウトを使用して構造体レイアウトを作成します。- パラメータ:
elements- 構造体レイアウトのメンバー・レイアウト。- 戻り値:
- 指定されたメンバー・レイアウトを持つ構造体レイアウト。
- 例外:
IllegalArgumentException- メンバー・レイアウトの「ビット・サイズ」の合計がオーバーフローした場合。
-
unionLayout
static GroupLayoutPREVIEW unionLayout(MemoryLayoutPREVIEW... elements) 指定されたメンバー・レイアウトを使用してユニオン・レイアウトを作成します。- パラメータ:
elements- 結合レイアウトのメンバー・レイアウト。- 戻り値:
- 特定のメンバー・レイアウトを含むユニオン・レイアウト。
-
MemoryLayoutを使用できます。