gpt4 book ai didi

c++ - Tcl API 如何从 Tcl 获取列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:25 26 4
gpt4 key购买 nike

Tcl 8.4

在我的 Tcl 脚本中:

set foo1 false
set foo2 "yes"
set foo3 [list item1 item2 item3]

有一个 API 可以获取 foo1 或 foo2 等标量。例如:Tcl_GetVar(tcl_interp, string("foo1").c_str(), flags)。我想知道是否有任何 API 可以从 Tcl 获取列表(如 foo3)?

最佳答案

这是一个两阶段的事情。您首先使用 Tcl_GetVar 函数家族之一获取值,然后获取您感兴趣的列表部分(使用 Tcl_SplitListTcl_ListObjGetElements ,通常)。

举个更具体的例子:

////// FETCH FROM VARIABLE //////
// The NULL is conventional when you're dealing with scalar variable,
// and the 0 could be TCL_GLOBAL_ONLY or
Tcl_Obj *theList = Tcl_GetVar2Ex(interp, string("foo1").c_str(), NULL, TCL_LEAVE_ERR_MSG);
if (theList == NULL) {
// Was an error; message in interpreter result...
}

////// EXTRACT ELEMENTS //////
int objc;
Tcl_Obj **objv;
if (Tcl_ListObjGetElements(interp, theList, &objc, &objv) == TCL_ERROR) {
// Not a list! error message in interpreter result...
}

////// WORK WITH VALUES //////
for (int i=0 ; i<objc ; i++) {
const char *value = Tcl_GetString(objv[i]);
// Whatever...
}

关于c++ - Tcl API 如何从 Tcl 获取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10832265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com