モジュール jdk.incubator.foreign
パッケージ jdk.incubator.foreign

クラスValueLayout

java.lang.Object
jdk.incubator.foreign.ValueLayout
すべての実装されたインタフェース:
Constable, MemoryLayout

public final class ValueLayout
extends Object
implements MemoryLayout
値レイアウト。 値レイアウトは、「整数」タイプの(署名済または未署名)やfloating-pointタイプなど、基本データ型の値に関連付けられたメモリー・レイアウトをモデル化するために使用します。 各値レイアウトには、サイズとバイト順序(ByteOrderを参照してください)があります。

これはvalue-basedクラスで、ValueLayoutのインスタンスでアイデンティティに依存する操作(参照の等価性の(==)、アイデンティティ・ハッシュ・コード、同期化など)を使用すると、予測できない結果が生じる可能性があるため、使用しないでください。 比較する場合は、equalsメソッドを使用することをお薦めします。

実装要件:
このクラスは不変でスレッドセーフです。
  • メソッドの詳細

    • order

      public ByteOrder order()
      値バイト順を返します。
      戻り値:
      値バイト順。
    • withOrder

      public ValueLayout withOrder​(ByteOrder order)
      指定されたバイト順で新しい値レイアウトを返します。
      パラメータ:
      order - 必要なバイト順。
      戻り値:
      指定されたバイト順で、新規の値レイアウト。
    • describeConstable

      public Optional<DynamicConstantDesc<ValueLayout>> describeConstable()
      インタフェースからコピーされた説明:MemoryLayout
      このレイアウトの公称記述子を含むOptional(構成できる場合)または空のOptional(作成できない場合)を返します。
      定義:
      インタフェースConstable内のdescribeConstable
      定義:
      インタフェースMemoryLayout内のdescribeConstable
      戻り値:
      最終的な名目記述子を含むOptional、または作成できない場合は空のOptional
    • withName

      public ValueLayout withName​(String name)
      必要なレイアウトnameが機能する新しいレイアウトを作成します。
      定義:
      インタフェースMemoryLayout内のwithName
      パラメータ:
      name - レイアウト名。
      戻り値:
      関連付けられたnameを除き、このレイアウトと同じ新しいレイアウト。
      関連項目:
      MemoryLayout.name()
    • withBitAlignment

      public ValueLayout withBitAlignment​(long alignmentBits)
      目的の位置合せ制約を機能する新しいレイアウトを作成します。
      定義:
      インタフェースMemoryLayout内のwithBitAlignment
      パラメータ:
      alignmentBits - レイアウト位置合せ制約。ビットで表されます。
      戻り値:
      このレイアウトと同じ新しいレイアウト。ただし、関連付けられている位置合せ制約を除きます。
    • name

      public final Optional<String> name()
      インタフェースからコピーされた説明:MemoryLayout
      このレイアウトに関連するname (もしあれば)を返します。
      定義:
      インタフェースMemoryLayout内のname
      戻り値:
      レイアウトname (もしあれば)。
      関連項目:
      MemoryLayout.withName(String)
    • 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)を参照してください)に明示的な位置合せ制約が設定されていない場合、このメソッドはこのレイアウトに関連付けられた「自然整列」制約(ビット単位)を返します。
      定義:
      インタフェースMemoryLayout内のbitAlignment
      戻り値:
      レイアウト位置合せ制約をビット単位で指定します。
    • hasSize

      public boolean hasSize()
      インタフェースからコピーされた説明:MemoryLayout
      このレイアウトには指定されたサイズがありますか? レイアウトが(次を含む)でサイズが未指定の(SequenceLayout.elementCount()を参照してください)の順序レイアウトである場合、そのレイアウトには指定されたサイズがありません。 値レイアウト(ValueLayoutを参照してください)およびパディングのレイアウト(MemoryLayout.ofPaddingBits(long)を参照してください) alwaysには指定されたサイズがあるため、このメソッドは常にtrueを返します。
      定義:
      インタフェースMemoryLayout内のhasSize
      戻り値:
      このレイアウトが指定されたサイズの場合、true
    • bitSize

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