本文整理汇总了C++中VM::call方法的典型用法代码示例。如果您正苦于以下问题:C++ VM::call方法的具体用法?C++ VM::call怎么用?C++ VM::call使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VM
的用法示例。
在下文中一共展示了VM::call方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main()
{
using namespace moon;
Compiler compiler; // Script parsing and bytecode output.
VM vm; // Executes bytecode produced by a Compiler.
try
{
compiler.parseScript(&vm, "tests/script/globals.ml");
compiler.compile(&vm);
// Init the globals:
logStream() << "C++: First run...\n";
vm.execute();
// Print the current values:
logStream() << "C++: Calling print_globals()...\n";
vm.call("print_globals");
// Change them:
logStream() << "C++: Editing globals vars...\n";
{
Variant var;
var.type = Variant::Type::Integer;
var.value.asInteger = 1337;
MOON_ASSERT(vm.globals.setGlobal("an_integer", var) == true);
var.type = Variant::Type::Float;
var.value.asFloat = 3.141592;
MOON_ASSERT(vm.globals.setGlobal("a_float", var) == true);
var.type = Variant::Type::Range;
var.value.asRange.begin = -5;
var.value.asRange.end = +5;
MOON_ASSERT(vm.globals.setGlobal("a_range", var) == true);
var.type = Variant::Type::Str;
const char * s = "hello from C++";
var.value.asString = Str::newFromString(vm, s, std::strlen(s), true);
MOON_ASSERT(vm.globals.setGlobal("a_string", var) == true);
}
// Print the new values:
logStream() << "C++: Calling print_globals() again...\n";
vm.call("print_globals");
}
catch (...)
{
#if MOON_SAVE_SCRIPT_CALLSTACK
if (!vm.callstack.isEmpty())
{
vm.printStackTrace(logStream());
}
#endif // MOON_SAVE_SCRIPT_CALLSTACK
logStream() << color::red() << "terminating with error(s)...\n" << color::restore();
return EXIT_FAILURE;
}
}