开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
开源项目 > 程序开发 > 编程语言/脚本语言 &&
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
13 Star 69 Fork 22

johnsonyl/cpps

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
v1.0.2
分支 (1)
标签 (4)
master
v1.0.3-beta
v1.0.3
v1.0.2
v1.0.0
v1.0.2
分支 (1)
标签 (4)
master
v1.0.3-beta
v1.0.3
v1.0.2
v1.0.0
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
v1.0.2
分支 (1)
标签 (4)
master
v1.0.3-beta
v1.0.3
v1.0.2
v1.0.0
cpps
/
example
/
test
/
main.cpp
cpps
/
example
/
test
/
main.cpp
main.cpp 5.68 KB
一键复制 编辑 原始数据 按行查看 历史
johnsonyl 提交于 2021年01月26日 14:47 +08:00 . 2021年01月26日 更新
#include <iostream>
#include <cpps/cpps.h>
using namespace cpps;
using namespace std;
namespace cpps { std::string cpps_io_getfilepath(std::string str);std::string cpps_rebuild_filepath(std::string path);std::string cpps_real_path(); }
class CppParentClassTest
{
public:
int i;
void parentTestFunc()
{
printf("call CppParentClassTest::parentTestFunc() : %d",i);
}
};
class CppClassTest : public CppParentClassTest
{
public:
object a;
object b;
void testFunc(cpps::object val)
{
i = 100;
if (val.isint())
{
printf("val:%d\r\n", object_cast<int32>(val));
}
printf("%s:%s\r\n", "CppClassTest::testFunc",type_s(val).c_str());
}
object test_operator(cpps::object right)
{
return a.ref();//.,
}
void testcb(C*c,object cb) {
b = cb;
dofunction(c, b);
}
};
void globalfunc(CppClassTest *pself)
{
printf("globalfunc %lld\r\n",pself->a.toint());
}
enum TESTENUM
{
ENUM_ONE = 1,
ENUM_TWO,
};
int32 main(int argc,char **argv)
{
std::string path = "main.cpp";
if (argc >= 2) {
path = argv[1];
}
path = cpps_rebuild_filepath(path);
#ifdef WIN32
SetCurrentDirectoryA(cpps_io_getfilepath(path).c_str());
#else
if (chdir(cpps_io_getfilepath(path).c_str())) {}
#endif
C* c = cpps::create(argc,argv);
cpps::_module(c)[
_class<CppParentClassTest>("CppParentClassTest")
.def("parentTestFunc",&CppParentClassTest::parentTestFunc),
_class<CppClassTest>("CppClassTest")
.base<CppParentClassTest>()
.def_operator("[]",&CppClassTest::test_operator)
.def("testFunc",&CppClassTest::testFunc)
.def("globalfunc", globalfunc)
.def_inside("testcb",&CppClassTest::testcb),
_enum(c,"TESTENUM")
.value("ENUM_ONE", TESTENUM::ENUM_ONE)
.value("ENUM_TWO", TESTENUM::ENUM_TWO)
];
_CPPS_TRY
cpps::dofile(c, path.c_str());
_CPPS_CATCH;
/*
// script page
class Agent
{
var val;
var test()
{
println(val);
}
}
var a = [1,2,3,4,1000];
var b = { a:1 , b:2 ,c:3};
*/
{
//loop vector
cpps::object a = cpps::object::globals(c)["a"];
for (cpps::object v : cpps::object::vector(a))
{
cpps_integer val = v.toint();
cout << val << endl;
}
//print vector a value
cpps::object vv = a[4];
cout << "a[4] = " << object_cast<cpps_integer>(vv) << endl;
cpps::object::vector vec(a);
vec[4] = cpps::object::create(c, 3000);
cout << "a[4] = " << object_cast<cpps_integer>(vec[4]) << endl;
//////////////////////////////////////////////////////////////////////////
//loop map
cpps::object b = cpps::object::globals(c)["b"];
for (auto v : cpps::object::map(c, b))
{
std::string key = object_cast<std::string>(v.first); // object_cast or std::string key = object(v.first).tostring();
cpps_integer val = cpps::object(v.second).toint();
cout << key << ":" << val << endl;
}
//print map a value.
cpps::object bb = b["b"];
cout << "b['b'] = " << object_cast<cpps_integer>(bb) << endl;
cpps::object key = cpps::object::create(c, "z");
cpps::object::map bmap(c, b);
bmap["z00"] = cpps::object::create(c, "hello world");
cout << "bmap-> It's Work bmap['z00'] = " << object_cast<std::string>(bmap["z00"]).c_str() << endl;
bmap[1] = cpps::object::create(c, "interge key it's work too");
cout << "bmap-> It's Work bmap[1] = " << object_cast<std::string>(bmap[1]).c_str() << endl;
//////////////////////////////////////////////////////////////////////////
//defined a global var;
cpps::object::define(c, "x", cpps::object::create(c, "hello world"));
cout << "x = " << object_cast<std::string>(cpps::object::globals(c)["x"]).c_str() << endl;
cpps::object::globals(c)["x"] = cpps::object::create(c, "wonderful world");
cout << "x = " << object_cast<std::string>(cpps::object::globals(c)["x"]).c_str() << endl;
_G(c)["x"] = cpps::object::create(c, "_G get var it's work.");// work too
cout << "x = " << object_cast<std::string>(_G(c)["x"]).c_str() << endl;
//////////////////////////////////////////////////////////////////////////
//new script class var ,and set dofunction.
cpps::object Agent = cpps::object::globals(c)["Agent"];
if (Agent.isclass())
{
cpps::object Agentvar = cpps::object::create_with_cppsclassvar(c, Agent);
Agentvar["val"] = cpps::object::create(c, "this is string.");
cpps::object testfunc = Agentvar["test"];
if (testfunc.isfunction())
{
cpps::doclassfunction(c, Agentvar, testfunc);
}
Agentvar["val"] = cpps::object::create(c, "change string value.");
if (testfunc.isfunction())
{
cpps::doclassfunction(c, Agentvar, testfunc);
}
}
//////////////////////////////////////////////////////////////////////////
//new cpp class var
CppClassTest* ptr = NULL; //You don't need to delete it. it has GC to delete it.
cpps::object cppclassvar = cpps::object::create_with_classvar< CppClassTest >(c, &ptr);
//ptr->testFunc(xxx); //you can do something in cpp .
cpps::object testFunc = cppclassvar["testFunc"];
if (testFunc.isfunction()) {
cpps::doclassfunction(c, cppclassvar, testFunc); //or get function and call it.
}
if (testFunc.isfunction()) {
cpps::doclassfunction(c, cppclassvar, testFunc, cpps::object::create(c, 123456)); //or get function and call it.
}
if (testFunc.isfunction()) {
cpps::doclassfunction(c, cppclassvar, testFunc, cpps::object::create(c, "asdfsadf")); //or get function and call it.
}
cpps::object parentTestFunc = cppclassvar["parentTestFunc"];
if (parentTestFunc.isfunction()) {
cpps::doclassfunction(c, cppclassvar, parentTestFunc); //or get function and call it.
}
}
cpps::close(c);
return 0;
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

CPPS是一种轻量级的嵌入式脚本语言,其语法类似于C++。它具有当前主流语言的许多特性,包括协程、面向对象、lambda、闭包、泛型变量、自定义模块支持、GC垃圾收集和跨平台。CPPS将程序解释为字节码,通过内置语法解析在虚拟机中运行
取消

发行版 (3)

全部

开源评估指数源自 OSS-Compass 评估体系,评估体系围绕以下三个维度对项目展开评估:

1. 开源生态

  • 生产力:来评估开源项目输出软件制品和开源价值的能力。
  • 创新力:用于评估开源软件及其生态系统的多样化程度。
  • 稳健性:用于评估开源项目面对多变的发展环境,抵御内外干扰并自我恢复的能力。

2. 协作、人、软件

  • 协作:代表了开源开发行为中协作的程度和深度。
  • 人:观察开源项目核心人员在开源项目中的影响力,并通过第三方视角考察用户和开发者对开源项目的评价。
  • 软件:从开源项目对外输出的制品评估其价值最终落脚点。也是开源评估最"古老"的主流方向之一"开源软件" 的具体表现。

3. 评估模型

    基于"开源生态"与"协作、人、软件"的维度,找到与该目标直接或间接相关的可量化指标,对开源项目健康与生态进行量化评估,最终形成开源评估指数。

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/cppscript/cpps.git
git@gitee.com:cppscript/cpps.git
cppscript
cpps
cpps
v1.0.2
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /