TCL:获取C/C++生成的TCL对象

问题描述 投票:0回答:1

第三方软件,让我们命名为3RD已嵌入

TCL

3RD中的某些函数执行TCL或创建

TCL objects
。在执行过程中按特定顺序生成多个命令事件?),例如:

  1. cmd初始化
  2. cmd开始
  3. cmdF1
  4. cmdF2
  5. cmdF2
  6. cmdF1
  7. cmdF5
  8. cmd输出

对于每个命令通风口,还会创建新变量或现有变量更改其状态。 用户并不完全了解上述命令名称。 我猜想在 3RD 中调用的每个命令,都会发送包含一组 TCL 对象(命令、过程、事件、变量)的包以供最终用户(我)使用。然后我可以编写脚本调用 3RD 创建的每个命令通风口。

我的问题是:我可以按顺序获取这些命令通风口名称吗?

info commands
info procs
不提供这种可能性

tcl
1个回答
0
投票

如果您想让事物保持特定的顺序,您可以将它们放入列表或字典中(字典保留首次创建密钥的顺序)。当您使用 C(或 C++)时,列表可能是最方便的选择,因为您可以将标志

TCL_APPEND_VALUE | TCL_LIST_ELEMENT
传递到
Tcl_SetVar2Ex()
以获得
lappend

如果 C 代码没有建议事物名称的顺序,则必须在 Tcl 中构建该列表,可能使用

lappend
list
。我不确定如何决定将事物放入的顺序的标准是什么(除了在开头有一个 ...Init 和 ...Start 以及在末尾有一个 ...Out );我真的不知道你的问题空间。

一旦你有了一个列表,你就可以这样做:

foreach cmd $theList {
    $cmd;  # In this case, you don't need eval for just command names
}

如果您想传递不同的额外参数,事情可能会变得更复杂。或者更复杂。我们需要更多信息才能有效提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.