XtConvertAndStore(3) リソースコンバータを呼び出す

Other Alias

XtCallConverter

書式

Boolean XtConvertAndStore(widget, from_type, from, to_type, to_in_out)

    Widget widget;

    String from_type;

    XrmValuePtr from;

    String to_type;

    XrmValuePtr to_in_out;

void XtCallConverter(dpy, converter, args, num_args, from, to_in_out, cache_ref_return)

    Display* dpy;

    XtConverter converter;

    XrmValuePtr args;

    Cardinal num_args;

    XrmValuePtr from;

    XrmValuePtr to_in_out;

    XtCacheRef* cache_ref_return;

引き数

args
変換を実行するために必要な追加的な引き数を含む引き数リストを指定する。 または NULL を指定する。
converter
呼び出される変換手続きを指定する。
from
変換される値を指定する。
from_type
変換前の型を指定する。
num_args
追加的な引き数の数を指定する(0のことが多い)。
to_type
変換後の型を指定する。
to_in_out
変換された値が返される。
widget
必要ならば、追加的な引き数として使うウィジェットと破棄コールバックリスト を指定する。
dpy
変換が関連づけられるディスプレイを指定する。

説明

関数 XtConvertAndStore は、from_type から to_type への変換を行うために登録されている 型コンバータを見つけ、必要な追加的な引き数を求め、そして引き数 from と to_in_out を使って XtCallConverter を呼び出す。( XtAddConverterXtAppAddConverter を使って古い形式のコンバータが登録されている場合には XtDirectConvert を呼び出す。 )

関数 XtCallConverter は、ディスプレイに関連づけられているアプリケーションコンテクストから 指定された型コンバータを見つける。 そして、コンバータが登録されていないかキャッシュ型 XtCacheAll または XtCacheByDisplay で登録されている場合には、変換のキャッシュを検索してこの変換手続きが指 定された変換の引き数を使って呼び出されているかどうか調べる。 この変換手続きが呼び出されている場合には、前の呼び出しの成功ステータス を調べ、その変換が失敗していれば XtCallConverter は即座に False を返す。成功している場合には引き数 to で指定されたサイズを調べ、こ れがキャッシュに格納されているデータのサイズ以上であれば、キャッシュに 格納されている情報を to->addr で指定した位置にコピーし、キャッシュ のサイズを to->size に格納し、最後に True を返す。 引き数 to で指定したサイズがキャッシュに格納されているデータのサイ ズよりも小さい場合には、 XtCallConverter はキャッシュのサイズを to->size にコピーしてから False を返す。 コンバータがキャッシュ型 XtCacheNone で登録されているか、変換キャッシュにデータが見つからない場合には、 XtCallConverter はコンバータを呼び出す。コンバータがキャッシュ型 XtCacheNone で登録されていない場合には、変換結果はキャッシュに格納される。 それから、 XtCallConverter はコンバータが返したデータを返す。

cache_ref_return フィールドは呼び出し側が割り当てた、可読形 式でない値が格納される領域を指定する。型コンバータが XtCacheRefCount モディファイア付きで登録されており、cache_ref_return に返された 値が NULL でない場合、この呼び出しは変換された値が必要でなくなったとき に参照数を減らすために cache_ref_return の値を格納する。呼び出し 側が値を格納したくない場合や格納できない場合には、引き数 cache_ref_return は NULL でなければならない。