在Lua中跟踪变量以进行读访问,以启动用户定义的c++方法/函数
Tracing variables in Lua for read access to start user defined C++ method/function
我正在评估要嵌入到c++应用程序中的脚本语言解释器。TCL/cpptcl和Lua是我目前关注的重点。TCL有一个很好的特性,使我能够"跟踪变量访问"。因此,每当我读取一个已定义的变量时,我的read-callback函数就会被触发:
int read_trace(const int& v, void *) {
cout << "read trace triggered" << endl;
return v;
}
...
void tclInterpreter() {
std::cout << ": Starting TCL interpreter!" << std::endl;
// new TCL
Tcl::interpreter i;
i.def_read_trace("tracedVar", "read", read_trace);
// load the script
ifstream script("helloworld.tcl");
// run the script with the given arguments
i.eval(script);
}
因此,如果我现在从我的c++应用程序中执行以下TCL:
set tracedVar 10
for { set i 0 } { $i <= 5 } { incr i } {
puts $tracedVar
}
我收到输出:
read trace triggered
10
read trace triggered
10
read trace triggered
10
read trace triggered
10
read trace triggered
10
read trace triggered
10
我得到变量read回调的执行,然后是var的put_value
问题:我可以用Lua做到这一点吗?如果可以,怎么做?我没有找到任何直接的主题。唯一引起我注意的是调试Lua,其中调试器(调试API)将监视变量的值。但是我不想监视值的变化,而是监视值的访问。
我认为lua中与此最接近的是表上的__index
元方法(如果您只想触发一个键,则检查特定键)。
如果需要,甚至可以在默认的全局表(_G
)上完成。
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- Visual C++(VS2017)中用户定义的转换不明确
- 使用用户定义的参数调用future/async并调用类方法
- 带有用户定义类的c++折叠表达式
- g++用户定义的动态链接库上的全局new和delete运算符
- 直接在 unordered_map 的方法中使用哈希,而不是生成哈希的用户定义对象
- 修改"std::set"中用户定义类型的值
- 参数包构造函数在类模板中隐藏用户定义的转换
- MAKE:找不到包含的用户定义的头文件?
- C++:用户定义的显式类型转换函数错误
- 从用户定义的类生成格式字符串?
- 为用户定义的类正确调用复制构造函数/赋值运算符
- C++ 向量与用户定义的类比较?(==, <, >)
- STL 用户定义的二进制操作
- 将用户定义的类型与 std::vector 和 std::sort 一起使用
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 使用宏编译时使用用户定义的数学函数,或者仅使用 c++ 中标准数学库中的函数
- C++:用户定义的类,以成员字段作为地址