- すべてのスーパー・インタフェース:
Addressable
,AutoCloseable
- 含まれているインタフェース:
- 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
がスローされます。
- APIのノート:
- 将来、Java言語で許可される場合、
CLinker.VaList
がsealed
インタフェースになる可能性があり、明示的に許可されているタイプ以外はサブクラス化できなくなります。
-
ネストされたクラスのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明address()
このインスタンスに関連付けられたCva_list
のメモリー・アドレスを返します。void
close()
このインスタンスによってモデル化された基礎となるCva_list
と、その要素(make(Consumer)
を参照してください)を保持するこのvaリストにアタッチされているネイティブ・メモリーを解放します。copy()
このCva_list
を現在の位置にコピーします。copy(NativeScope scope)
このCva_list
を現在の位置にコピーします。static CLinker.VaList
empty()
空のCva_list
定数を返します。boolean
isAlive()
このインスタンスによってモデル化されたCva_list
に関連付けられたメモリーがまだ使用可能かどうかをチェックするために使用される述語。static CLinker.VaList
make(Consumer<CLinker.VaList.Builder> actions)
ビルダー(CLinker.VaList.Builder
を参照してください)を使用して新しいVaList
を構築します。static CLinker.VaList
make(Consumer<CLinker.VaList.Builder> actions, NativeScope scope)
ビルダー(CLinker.VaList.Builder
を参照してください)を使用して新しいVaList
を構築します。static CLinker.VaList
ofAddressRestricted(MemoryAddress address)
既存のCva_list
を指すメモリー・アドレスから新しいVaList
インスタンスを構築します。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)
次の値をMemorySegment
として読み取り、このvaリストの位置を進めます。vargAsSegment(MemoryLayout layout, NativeScope scope)
次の値をMemorySegment
として読み取り、このvaリストの位置を進めます。
-
メソッドの詳細
-
vargAsInt
int vargAsInt(MemoryLayout layout)次の値をint
として読み取り、このvaリストの位置を進めます。- パラメータ:
layout
- 値のレイアウト- 戻り値:
int
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているCva_list
が有効な(close()
を参照してください)でなくなった場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがint
と互換性がない場合
-
vargAsLong
long vargAsLong(MemoryLayout layout)次の値をlong
として読み取り、このvaリストの位置を進めます。- パラメータ:
layout
- 値のレイアウト- 戻り値:
long
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているCva_list
が有効な(close()
を参照してください)でなくなった場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがlong
と互換性がない場合
-
vargAsDouble
double vargAsDouble(MemoryLayout layout)次の値をdouble
として読み取り、このvaリストの位置を進めます。- パラメータ:
layout
- 値のレイアウト- 戻り値:
double
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているCva_list
が有効な(close()
を参照してください)でなくなった場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがdouble
と互換性がない場合
-
vargAsAddress
MemoryAddress vargAsAddress(MemoryLayout layout)次の値をMemoryAddress
として読み取り、このvaリストの位置を進めます。- パラメータ:
layout
- 値のレイアウト- 戻り値:
MemoryAddress
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているCva_list
が有効な(close()
を参照してください)でなくなった場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがMemoryAddress
と互換性がない場合
-
vargAsSegment
MemorySegment vargAsSegment(MemoryLayout layout)次の値をMemorySegment
として読み取り、このvaリストの位置を進めます。このメソッドによって返されるメモリー・セグメントは、
MemorySegment.allocateNative(long, long)
を使用して割り当てられ、個別にクローズする必要があります。- パラメータ:
layout
- 値のレイアウト- 戻り値:
MemorySegment
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているCva_list
が有効な(close()
を参照してください)でなくなった場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがMemorySegment
と互換性がない場合
-
vargAsSegment
MemorySegment vargAsSegment(MemoryLayout layout, NativeScope scope)次の値をMemorySegment
として読み取り、このvaリストの位置を進めます。このメソッドによって返されるメモリー・セグメントは、指定された
NativeScope
を使用して割り当てられます。- パラメータ:
layout
- 値のレイアウトscope
- セグメントを割り当てるスコープ- 戻り値:
MemorySegment
として読み取られた値- 例外:
IllegalStateException
- このインスタンスに関連付けられているCva_list
が有効な(close()
を参照してください)でなくなった場合。IllegalArgumentException
- 指定されたメモリー・レイアウトがMemorySegment
と互換性がない場合
-
skip
void skip(MemoryLayout... layouts)指定されたメモリー・レイアウトのいくつかの要素をスキップし、このvaリストの位置を進めます。- パラメータ:
layouts
- 値のレイアウト- 例外:
IllegalStateException
- このインスタンスに関連付けられているCva_list
が有効な(close()
を参照してください)でなくなった場合。
-
isAlive
boolean isAlive()このインスタンスによってモデル化されたCva_list
に関連付けられたメモリーがまだ使用可能かどうかをチェックするために使用される述語。- 戻り値:
- このインスタンスによってモデル化されたC
va_list
に関連付けられたメモリーがまだ有効な場合はtrue - 関連項目:
close()
-
close
void close()このインスタンスによってモデル化された基礎となるCva_list
と、その要素(make(Consumer)
を参照してください)を保持するこのvaリストにアタッチされているネイティブ・メモリーを解放します。このメソッドを呼び出した後、
isAlive()
はfalse
を返し、さらにこのvaリストから値を読み取ろうとすると例外が発生します。- 定義:
close
、インタフェース:AutoCloseable
- 関連項目:
isAlive()
-
copy
CLinker.VaList copy()このCva_list
を現在の位置にコピーします。 コピーは、元のvaリストの状態に影響を与えずに、現在の位置からvaリスト要素をトラバースする場合に便利で、基本的に要素を複数回トラバースできます。このメソッドでコピー用のネイティブ・メモリーを割り当てる必要がある場合は、
MemorySegment.allocateNative(long, long)
を使用して割り当てます。割り当てられたメモリーを解放するには、返されたvaリスト・インスタンスでclose()
をコールする必要があります。このメソッドは、vaリスト・カーソル自体のみをコピーし、その要素を保持するvaリストにアタッチできるメモリーはコピーしません。 つまり、このvaリストが
make(Consumer)
メソッドで作成された場合、このvaリストを閉じると、その要素を保持するネイティブ・メモリーも解放され、コピーが使用できなくなります。- 戻り値:
- このC
va_list
のコピー。 - 例外:
IllegalStateException
- このインスタンスに関連付けられているCva_list
が有効な(close()
を参照してください)でなくなった場合。
-
copy
CLinker.VaList copy(NativeScope scope)このCva_list
を現在の位置にコピーします。 コピーは、元のvaリストの状態に影響を与えずに、現在の位置からvaリスト要素をトラバースする場合に便利で、基本的に要素を複数回トラバースできます。このメソッドがコピーにネイティブ・メモリーを割り当てる必要がある場合は、指定された
NativeScope
を使用して割り当てます。このメソッドは、vaリスト・カーソル自体のみをコピーし、その要素を保持するvaリストにアタッチできるメモリーはコピーしません。 つまり、このvaリストが
make(Consumer)
メソッドで作成された場合、このvaリストを閉じると、その要素を保持するネイティブ・メモリーも解放され、コピーが使用できなくなります。- パラメータ:
scope
- コピーを割り当てるスコープ- 戻り値:
- このC
va_list
のコピー。 - 例外:
IllegalStateException
- このインスタンスに関連付けられているCva_list
が有効な(close()
を参照してください)でなくなった場合。
-
address
MemoryAddress address()このインスタンスに関連付けられたCva_list
のメモリー・アドレスを返します。- 定義:
- インタフェース
Addressable
内のaddress
- 戻り値:
- このインスタンスに関連付けられたC
va_list
のメモリー・アドレス。
-
ofAddressRestricted
static CLinker.VaList ofAddressRestricted(MemoryAddress address)既存のCva_list
を指すメモリー・アドレスから新しいVaList
インスタンスを構築します。このメソッドは「制限付き」です。 制限付きメソッドは安全ではありません。誤って使用すると、JVMがクラッシュしたり、メモリーが警告なしで破損する可能性があります。 したがって、クライアントは制限付きメソッドに応じて屈折し、可能な場合は安全でサポートされている機能を使用する必要があります。
- パラメータ:
address
- 既存のCva_list
を指すメモリー・アドレス。- 戻り値:
address
でCva_list
によってバックアップされた新しいVaList
インスタンス。
-
make
static CLinker.VaList make(Consumer<CLinker.VaList.Builder> actions)ビルダー(CLinker.VaList.Builder
を参照してください)を使用して新しいVaList
を構築します。このメソッドがvaリストにネイティブ・メモリーを割り当てる必要がある場合は、
MemorySegment.allocateNative(long, long)
を使用して割り当てます。このメソッドは、vaリスト内の要素を保持するためのネイティブ・メモリーを割り当てます。 このメモリーは、戻されたvaリスト・インスタンスに対する'添付済'であり、
close()
がコールされると解放されます。作成されたvaリストに要素が追加されていない場合、このメソッドは
empty()
と同じものを返します。- パラメータ:
actions
- 基礎となるCva_list
の要素を指定するために使用できるビルダー(CLinker.VaList.Builder
を参照してください)のコンシューマ。- 戻り値:
- 新しいC
va_list
によって支えられた新しいVaList
インスタンス。
-
make
static CLinker.VaList make(Consumer<CLinker.VaList.Builder> actions, NativeScope scope)ビルダー(CLinker.VaList.Builder
を参照してください)を使用して新しいVaList
を構築します。このメソッドがvaリストにネイティブ・メモリーを割り当てる必要がある場合は、指定された
NativeScope
を使用して割り当てます。このメソッドは、vaリスト内の要素を保持するためのネイティブ・メモリーを割り当てます。 このメモリーは指定された
NativeScope
によって管理され、スコープが閉じられると解放されます。作成されたvaリストに要素が追加されていない場合、このメソッドは
empty()
と同じものを返します。- パラメータ:
actions
- 基礎となるCva_list
の要素を指定するために使用できるビルダー(CLinker.VaList.Builder
を参照してください)のコンシューマ。scope
- 値リストの割当てに使用されるスコープ。- 戻り値:
- 新しいC
va_list
によって支えられた新しいVaList
インスタンス。
-
empty
static CLinker.VaList empty()空のCva_list
定数を返します。返された
VaList
をクローズできません。- 戻り値:
- 空のC
va_list
をモデル化するVaList
。
-