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;
関数 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 でなければならない。