- すべてのスーパー・インタフェース:
Addressable
- 含まれているインタフェース:
- CLinker
va_list
をモデル化するインタフェース。
vaリストは、一連の可変引数の反復処理に使用されるステートフル・カーソルです。
C仕様の(C標準の6.5.2.2ファンクション・コールを参照 - アイテム6)では、可変呼出しの引数は'デフォルトの引数プロモーション'を介して消去されます。これにより、整数昇格(C標準6.3.1.1を参照 - アイテム2)を介して整数型が消去され、double
に対するすべてのfloat
引数が消去されます。
そのため、このインタフェースでは、int
、double
およびlong
に適合するその他のタイプの読取りのみがサポートされます。
特に指定がないかぎり、null
引数、またはこのクラスのメソッドに1つ以上のnull
要素を含む配列引数を渡すと、NullPointerException
がスローされます。
-
ネストされたクラスのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明address()
このインスタンスに関連付けられたCva_list
のメモリー・アドレスを返します。copy()
このCva_list
を現在の位置にコピーします。static CLinker.VaList
empty()
空のCva_list
定数を返します。static CLinker.VaList
make
(Consumer<CLinker.VaList.Builder> actions, ResourceScope scope) 特定の「リソース・スコープ」に関連付けられたビルダー(CLinker.VaList.Builder
を参照してください)を使用して、新しいVaList
を作成します。static CLinker.VaList
ofAddress
(MemoryAddress address) 「グローバル」リソース・スコープによって支えられた既存のCva_list
を指すメモリー・アドレスから新しいVaList
インスタンスを構築します。static CLinker.VaList
ofAddress
(MemoryAddress address, ResourceScope scope) 指定されたリソース・スコープを持つ既存のCva_list
を指し示すメモリー・アドレスから新しいVaList
インスタンスを構築します。scope()
このインスタンスに関連付けられたリソース・スコープを返します。void
skip
(MemoryLayout... layouts) 指定されたメモリー・レイアウトのいくつかの要素をスキップし、このvaリストの位置を進めます。vargAsAddress
(MemoryLayout layout) 次の値をMemoryAddress
として読み取り、このvaリストの位置を進めます。double
vargAsDouble
(MemoryLayout layout) 次の値をdouble
として読み取り、このvaリストの位置を進めます。int
vargAsInt
(MemoryLayout layout) 次の値をint
として読み取り、このvaリストの位置を進めます。long
vargAsLong
(MemoryLayout layout) 次の値をlong
として読み取り、このvaリストの位置を進めます。vargAsSegment
(MemoryLayout layout, ResourceScope scope) 次の値をMemorySegment
として読み取り、このvaリストの位置を進めます。vargAsSegment
(MemoryLayout layout, SegmentAllocator allocator) 次の値をMemorySegment
として読み取り、このvaリストの位置を進めます。
-
メソッドの詳細
-
vargAsInt
int vargAsInt(MemoryLayout layout) 次の値をint
として読み取り、このvaリストの位置を進めます。- パラメータ:
layout
- 値のレイアウト- 戻り値:
int
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているリソース・スコープが(scope()
を参照してください)をクローズした場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがint
と互換性がない場合
-
vargAsLong
long vargAsLong(MemoryLayout layout) 次の値をlong
として読み取り、このvaリストの位置を進めます。- パラメータ:
layout
- 値のレイアウト- 戻り値:
long
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているリソース・スコープが(scope()
を参照してください)をクローズした場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがlong
と互換性がない場合
-
vargAsDouble
double vargAsDouble(MemoryLayout layout) 次の値をdouble
として読み取り、このvaリストの位置を進めます。- パラメータ:
layout
- 値のレイアウト- 戻り値:
double
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているリソース・スコープが(scope()
を参照してください)をクローズした場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがdouble
と互換性がない場合
-
vargAsAddress
MemoryAddress vargAsAddress(MemoryLayout layout) 次の値をMemoryAddress
として読み取り、このvaリストの位置を進めます。- パラメータ:
layout
- 値のレイアウト- 戻り値:
MemoryAddress
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているリソース・スコープが(scope()
を参照してください)をクローズした場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがMemoryAddress
と互換性がない場合
-
vargAsSegment
MemorySegment vargAsSegment(MemoryLayout layout, SegmentAllocator allocator) 次の値をMemorySegment
として読み取り、このvaリストの位置を進めます。このメソッドによって返されるメモリー・セグメントは、指定された
SegmentAllocator
を使用して割り当てられます。- パラメータ:
layout
- 値のレイアウトallocator
- ネイティブ・セグメント割当てに使用されるロケータ- 戻り値:
MemorySegment
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているリソース・スコープが(scope()
を参照してください)をクローズした場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがMemorySegment
と互換性がない場合
-
vargAsSegment
MemorySegment vargAsSegment(MemoryLayout layout, ResourceScope scope) 次の値をMemorySegment
として読み取り、このvaリストの位置を進めます。このメソッドによって返されるメモリー・セグメントは、指定された
ResourceScope
に関連付けられます。- パラメータ:
layout
- 値のレイアウトscope
- 返されるセグメントに関連付けるリソース・スコープ- 戻り値:
MemorySegment
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているリソース・スコープが(scope()
を参照してください)をクローズした場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがMemorySegment
と互換性がない場合IllegalStateException
-scope
がすでにクローズされている場合、またはscope
を所有するスレッド以外のスレッドからアクセスが発生した場合。
-
skip
void skip(MemoryLayout... layouts) 指定されたメモリー・レイアウトのいくつかの要素をスキップし、このvaリストの位置を進めます。- パラメータ:
layouts
- 値のレイアウト- 例外:
IllegalStateException
- このインスタンスに関連付けられているリソース・スコープが(scope()
を参照してください)をクローズした場合。
-
scope
ResourceScope scope()このインスタンスに関連付けられたリソース・スコープを返します。- 戻り値:
- このインスタンスに関連付けられているリソース・スコープ。
-
copy
CLinker.VaList copy()このCva_list
を現在の位置にコピーします。 コピーは、元のvaリストの状態に影響を与えずに、現在の位置からvaリスト要素をトラバースする場合に便利で、基本的に要素を複数回トラバースできます。このメソッドの実行に必要なネイティブ・リソースは、このインスタンス(
scope()
を参照してください)に関連付けられたリソース・スコープに割り当てられます。このメソッドは、vaリスト・カーソル自体のみをコピーし、その要素を保持するvaリストにアタッチできるメモリーはコピーしません。 つまり、このvaリストが
make(Consumer, ResourceScope)
メソッドで作成された場合、このvaリストを閉じると、その要素を保持するネイティブ・メモリーも解放され、コピーが使用できなくなります。- 戻り値:
- このC
va_list
のコピー。 - 例外:
IllegalStateException
- このインスタンスに関連付けられているリソース・スコープが(scope()
を参照してください)をクローズした場合。
-
address
MemoryAddress address()このインスタンスに関連付けられたCva_list
のメモリー・アドレスを返します。 返されるメモリー・アドレスは、このインスタンスに関連付けられたものと同じリソース・スコープに関連付けられます。- 定義:
- インタフェース
Addressable
内のaddress
- 戻り値:
- このインスタンスに関連付けられたC
va_list
のメモリー・アドレス。
-
ofAddress
static CLinker.VaList ofAddress(MemoryAddress address) 「グローバル」リソース・スコープによって支えられた既存のCva_list
を指すメモリー・アドレスから新しいVaList
インスタンスを構築します。このメソッドは「制限付き」です。 制限されたメソッドは安全ではなく、誤って使用するとJVMがクラッシュしたり、悪化したりするとメモリーが破損する可能性があります。 したがって、クライアントは制限付きメソッドに応じて屈折し、可能な場合は安全でサポートされている機能を使用する必要があります。
- パラメータ:
address
- 既存のCva_list
を指すメモリー・アドレス。- 戻り値:
address
でCva_list
によってバックアップされた新しいVaList
インスタンス。- 例外:
IllegalCallerException
- このメソッドへのアクセスがモジュールM
から発生し、コマンドライン・オプション--enable-native-access
がない場合、またはモジュール名M
が名前なしモジュールの場合はALL-UNNAMED
は説明しません。
-
ofAddress
static CLinker.VaList ofAddress(MemoryAddress address, ResourceScope scope) 指定されたリソース・スコープを持つ既存のCva_list
を指し示すメモリー・アドレスから新しいVaList
インスタンスを構築します。このメソッドは「制限付き」です。 制限されたメソッドは安全ではなく、誤って使用するとJVMがクラッシュしたり、悪化したりするとメモリーが破損する可能性があります。 したがって、クライアントは制限付きメソッドに応じて屈折し、可能な場合は安全でサポートされている機能を使用する必要があります。
- パラメータ:
address
- 既存のCva_list
を指すメモリー・アドレス。scope
- 返されるVaList
インスタンスに関連付けるリソース・スコープ。- 戻り値:
address
でCva_list
によってバックアップされた新しいVaList
インスタンス。- 例外:
IllegalStateException
-scope
がすでにクローズされている場合、またはscope
を所有するスレッド以外のスレッドからアクセスが発生した場合。IllegalCallerException
- このメソッドへのアクセスがモジュールM
から発生し、コマンドライン・オプション--enable-native-access
がない場合、またはモジュール名M
が名前なしモジュールの場合はALL-UNNAMED
は説明しません。
-
make
static CLinker.VaList make(Consumer<CLinker.VaList.Builder> actions, ResourceScope scope) 特定の「リソース・スコープ」に関連付けられたビルダー(CLinker.VaList.Builder
を参照してください)を使用して、新しいVaList
を作成します。このメソッドがネイティブ・メモリーを割り当てる必要がある場合、このようなメモリーは指定された「リソース・スコープ」によって管理され、リソース・スコープがclosedのときに解放されます。
作成されたvaリストに要素が追加されていない場合、このメソッドは
empty()
と同じものを返します。- パラメータ:
actions
- 基礎となるCva_list
の要素を指定するために使用できるビルダー(CLinker.VaList.Builder
を参照してください)のコンシューマ。scope
- 値リストの割当てに使用されるスコープ。- 戻り値:
- 新しいC
va_list
によって支えられた新しいVaList
インスタンス。 - 例外:
IllegalStateException
-scope
がすでにクローズされている場合、またはscope
を所有するスレッド以外のスレッドからアクセスが発生した場合。
-
empty
static CLinker.VaList empty()空のCva_list
定数を返します。返された
VaList
をクローズできません。- 戻り値:
- 空のC
va_list
をモデル化するVaList
。
-