- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我刚刚发现了 chaiscript,我非常喜欢它。现在我想添加对我非常简单的 opengl 3d 引擎的支持。
我有 C++ 数学类:vec2T、vec3T、vec4T、mat2T、mat3T、mat4T……(它们实际上是模板类,并且有类型定义使它们成为 vec4i、vec4f、vec4d……)
我想我可以将它们添加到 chaiscript 中:
chai.add(chaiscript::user_type<vec4i>(), "vec4i");
对吗?
现在,我想测试我的脚本是否包含名为“onFrame”的函数。如果是,我希望它以 vec4i 参数作为第一个参数来调用。我该怎么做?
我知道我可以做这样的事情:
try
{
chai("onFrame();");
}
catch (const std::exception &)
{
}
如果脚本中没有定义onFrame,这种方式会忽略异常。我什至可以通过这种方式传递一些整数或字符串参数。但是我该如何继续将 vec4(x, y, z, w) 参数传递给它呢?
感谢任何帮助!
最佳答案
这里好像有几个问题。
您可以使用 user_type
将类型名称添加到 ChaiScript,但您仍然需要添加您想要使用的任何方法。
既然你提到它们是模板化类型,我建议在你这边添加一个模板化函数,以便为你添加你想要的每个模板实例化。
是的,您是正确的,捕获异常会默默地忽略不存在的函数。然而,在实践中,如果你真的在每一帧上都这样做,你的运行时间将会受到影响。抛出/捕获异常的代价很高。
对于如何将 vec4i 对象传递给函数,您有很多选择。例如,您想从 C++ 还是在 ChaiScript 内部执行此操作?
一个选择是在 C++ 中以强类型的方式完成它
auto func = chai.eval<std::function<void (const vec4i &)>>("onframe");
func(somevector);
我建议查看 cheatsheet看看它是否回答了剩下的问题。
关于c++ - 如何检查函数是否在 chaiscript 中定义以及如何使用类型化参数执行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35310953/
我开始学习 chaiscript,但在文档中找不到它。 我知道有一个 API 可以通过调用 ChaiScript::eval_file 从 C++ 评估一个 chaiscript 文件 但是是否可以从
我将脚本语言 ChaiScript 与 C++ 和 Qt 结合使用。我定义了这样的函数: void ChaiPainter::drawRectangle(QPainter *painter, int
我正在考虑为我的项目使用 chaiscript。但是,我对性能有疑问。也许它已经在某个地方得到了回答,但我找不到它...... 我有一个使用大型数据结构(至少 1-2GB)的模拟。因此,我担心我会通过
我在使用 C++ 和 Chaiscript 时遇到了一个特殊问题,希望有人能帮助我,并且我会尽量提供所需的信息。 基本上,通过chaiscript调用一个用c++定义的c++函数,它返回一个Vecto
是否ChaiScript支持类似调试器的行为?例如,我能否设置执行暂停的断点,并允许我在恢复之前检查堆栈?如果是,怎么办? 最佳答案 目前无法破解 ChaiScript。 您有两个选择。您可能会导致发
我刚刚发现了 chaiscript,我非常喜欢它。现在我想添加对我非常简单的 opengl 3d 引擎的支持。 我有 C++ 数学类:vec2T、vec3T、vec4T、mat2T、mat3T、mat
我想使用 Chaiscript 让我的应用程序的用户使用脚本语言来执行任务或有状态算法。这些算法“取决于一段时间内的事件”。换句话说,由应用程序调度的算法应该被允许在任何时候yield它们的执行,并在
我正在尝试将自定义 C++ 对象引用传递给简单的 chai 脚本,以便 chai 脚本最终可以读取/访问/调用公共(public)变量和方法。 我不确定这是否可能,也不确定一旦它被传递到 chai 脚
我有下一个定义类: class MyType { public: MyType(); MyType(int x); MyType(std::initializer_list l
我想创建一个依赖于 chaiscript block (lefticus/ChaiScript) 的 biicode block 。如果我以这种方式包含 chaiscript header #incl
我使用这段代码来验证 ChaiScript 中一组 Qt 对象的一些属性: /// initialize the engine boost::shared_ptr chai;
我想像下面的 c++ 代码一样使用 std::wstring 类型编写 ChaiScript 代码。 #include int testfunc(std::wstring s, std::wstri
我正在尝试将 ChaiScript 集成到我的小型 Mac/c++ 项目中。虽然我可以通过构建 chaiscript_stdlib.hpp/使用 ChaiScript chai(Std_Lib.lib
我是一名优秀的程序员,十分优秀!