C で Tcl 連想配列にアクセスして操作しようとしています。Tcl_GetVar2 が値を読み取ることはわかっていますが、配列のキーにアクセスするにはどうすればよいですか? ありがとう
1 に答える
0
連想配列のキーを一覧表示するための便利な C API はありません (これは、Tcl の内部インターフェイスを使用していたとしても実際には当てはまります。問題は、配列に実際にあるものの性質が非常に重要であるということです)。最も簡単な方法は、Tcl_Eval
または関連する関数の 1 つを使用して呼び出すことarray names
です。この C 関数のようなものでうまくまとめられます (ただし、結果の有効期間などを管理するには注意が必要です)。
Tcl_Obj *GetArrayKeys(
Tcl_Interp *interp,
const char *arrayName) {
Tcl_Obj *script = Tcl_NewStringObj("array names", -1);
int result;
Tcl_ListObjAppendElement(NULL, script, Tcl_NewStringObj(arrayName, -1));
Tcl_IncrRefCount(script);
result = Tcl_EvalObjEx(interp, script, TCL_EVAL_DIRECT);
Tcl_DecrRefCount(script);
if (result != TCL_OK)
return NULL;
return Tcl_GetObjResult(interp);
}
于 2013-06-08T11:24:37.083 に答える