● WAM に固有の知識データベース (CI) へのアクセス手段: libci ci_init(projectroot) 初期化 ci_split_id(id, handle, seq) 文字列の分割 (NOT AVAILABLE NOW) ci_handles() ハンドル一覧の取得 ci_value(handle, type) 属性値の取得(文字列) ci_flags(handle) 属性値の取得(フラグ) ci_print_dataset(stream, handle)デバッグ用プリンタ ● ID と name の対応表 (CW) のアクセス手段: libcw cw_open(path, flags) 辞書のオープン(デスクリプタを得る) cw_close(d) デスクリプタの開放 cw_ident(d) ID cw_mtime(d) modified(created) time cw_size(d) 登録されている ID の数の取得 cw_id2name(d, id) ID から対応する name を得る cw_name2id(d, name) name から対応する ID を得る cw_print_info(d, type) デバッグ用プリンタ ● WAM ベクタ (XR) へのアクセス手段: libxr xr_open(path, flags) XR のオープン(識別子を得る) xr_close(d) クローズ, 資源の解放 xr_idnet(d) ID xr_mtime(d) modified(created) time xr_size(d) XR のサイズの取得 xr_get_vec(d, id, ptr, flag) XR の行(列)ベクタの取得 xr_elem_num(d, id) 行(列)の要素数を得る xr_freq_sum(d, id) 行(列)の要素の合計を得る xr_max_elem_num(d, id) 全ての行(列)の要素数のうち最大のものを得る xr_max_freq_sum(d, id) 全ての行(列)の要素の合計のうち最大のものを得る xr_min_elem_num(d, id) not implemented xr_min_freq_sum(d, id) not implemented xr_total_elem_num(d, id) XR の全要素数 xr_total_freq_sum(d, id) 全ての行(列)の要素の合計の合計を得る xr_print_info(d) デバッグ用プリンタ xr_release_vec(d, ptr) 取得した行(列)ベクタの開放 ● libci, libcw, libxr の統一インタフェース: aka. libwam wam_init(projectroot) 初期化 wam_assoc_fname(handle, b) 個々のファイル名を得る wam_open(handle, flags) WAMのオープン(デスクリプタを得る) wam_name(f) 識別子からオープンした時のハンドルを得る wam_oflags(f) 識別子からオープンした時のフラグを得る wam_close(f) クローズ, 資源の解放 wam_print_info(f, stream, long_format) デバッグ用プリンタ ● 以下はそれぞれ対応する libcw, libxr の関数の別名である (libwam) wam_id2name ID から対応する name を得る wam_name2id name から対応する ID を得る wam_cw_size 登録されている ID の数の取得 wam_size WAM (XR) のサイズの取得 wam_get_vec WAM (XR) の行(列)ベクタの取得 wam_elem_num 行(列)の要素数を得る wam_freq_sum 行(列)の要素の合計を得る wam_max_elem_num 全ての行(列)の要素数のうち最大のものを得る wam_max_freq_sum 全ての行(列)の要素の合計のうち最大のものを得る wam_min_elem_num not implemented wam_min_freq_sum not implemented wam_total_elem_num WAM (XR) の全要素数 wam_total_freq_sum 全ての行(列)の要素の合計の合計を得る wam_release_vec 取得した行(列)ベクタの開放 ● 本文, タイトルへのアクセス手段: (libgetaux?) getaux_init(projectroot_p) 初期化 getaux(i, file, seq, l) 本文, タイトルの取得 getaux_exec(cmd, handle, key, l) 本文, タイトルの取得(on the fly 版) MAXIDLEN 綴りとして許される最大長 ● 以下は wam で使用するマクロ (libwam) WAM_ROW 行方向(順方向)の指定 WAM_COL 列方向(逆方向)の指定 WAM_CW(F, M) wam から cw のデスクリプタを得る WAM_XR(F, M) wam から xr のデスクリプタを得る WAM_REVERT_DIRECTION(M) ROW, COL をひっくり返す ● 以下は xr で使用 (libxr) ival_t 整数型 XR_PTRTEMP 一時メモリを使用 XR_PTRALLOC メモリを新たに確保して使用 XR_PTRPERM パーマネントなメモリを使用 XR_PTRCACHE このエントリはキャッシュを有効に XR_HOSTORDER hostorder に自動変換 XR_TRANSPOSE 行と列を入れ換えてオープンする XR_ENABLE_CACHE この WAM はキャッシュを有効に XR_MLOCK この WAM はキャッシュをロックする ● XR で用いられている要素の宣言 (libxr) struct xr_elem { symbol_t id; /* 要素の ID */ ival_t freq; /* 要素の値(頻度) */ }; ● XR で用いられているベクタの宣言 (libxr) struct xr_vec { ival_t elem_num; /* 値が0でない要素の数 */ ival_t freq_sum; /* 要素の freq の合計 */ struct xr_elem elems[0];/* 要素のリスト(値が0でないもののみ) */ }; ● 以下はセットアップツールで使用 RAWXR_TYPE_SIMULATE '!' 本文ファイルのセパレータ RAWXR_TYPE_COUNT '@' 頻度ファイルのセパレータ(1) RAWXR_TYPE_RAW '#' 頻度ファイルのセパレータ(2) RAWXR_TYPE_ALIASES '$' 別名ファイルのセパレータ RAWXR_TYPE_TITLES '%' タイトルファイルのセパレータ RAWXR_TYPE_MIME '^' 本文ファイルのセパレータ(MIME 64)