Ai
1 Star 1 Fork 0

ScSofts/quickjspp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
multicontext.cpp 1.65 KB
一键复制 编辑 原始数据 按行查看 历史
ftk 提交于 2019-09-22 17:45 +08:00 . more tests
#include "quickjspp.hpp"
#include <iostream>
class MyClass
{
public:
MyClass() {}
void print_context(qjs::Value value) { std::cout << "Context: " << value.ctx << '\n'; }
};
void println(const std::string& str) { std::cout << str << std::endl; }
static void glue(qjs::Context::Module& module)
{
module.function<&println>("println");
module.class_<MyClass>("MyClass")
.constructor<>()
.fun<&MyClass::print_context>("print_context");
}
int main()
{
qjs::Runtime runtime;
qjs::Context context1(runtime);
qjs::Context context2(runtime);
try
{
// export classes as a module
glue(context1.addModule("MyModule"));
// evaluate js code
context1.eval("import * as my from 'MyModule'; " "\n"
"(new my.MyClass()).print_context(undefined);" "\n"
, "<eval>", JS_EVAL_TYPE_MODULE
);
}
catch(qjs::exception)
{
auto exc = context1.getException();
std::cerr << (std::string) exc << std::endl;
if((bool) exc["stack"])
std::cerr << (std::string) exc["stack"] << std::endl;
return 1;
}
try
{
glue(context2.addModule("MyModule"));
context2.eval("import * as my from 'MyModule'; " "\n"
"(new my.MyClass()).print_context(undefined);" "\n"
,"<eval>", JS_EVAL_TYPE_MODULE
);
}
catch(qjs::exception)
{
auto exc = context2.getException();
std::cerr << (std::string) exc << std::endl;
if((bool) exc["stack"])
std::cerr << (std::string) exc["stack"] << std::endl;
return 1;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/gitnow/quickjspp.git
git@gitee.com:gitnow/quickjspp.git
gitnow
quickjspp
quickjspp
master

搜索帮助