13 Star 69 Fork 22

johnsonyl/cpps

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
cpps_xrange.cpp 1.64 KB
一键复制 编辑 原始数据 按行查看 历史
johnsonyl 提交于 2023-12-14 21:49 +08:00 . c++17及以上修改lock为shared_lock
#include "cpps/cpps.h"
namespace cpps
{
cpps_value cpps_range_range(C* c,cpps_integer v1,object v2, object v3)
{
cpps_integer begin = 0;
cpps_integer end = v1;
cpps_integer inc = 1;
if (!v3.isnull()) {
begin = v1;
end = v2.toint();
inc = v3.toint();
}
else if (!v2.isnull()) {
begin = v1;
end = v2.toint();
}
cpps_create_class_var(cpps_range, c, cpps_range_var, cpps_range_ptr);
cpps_range_ptr->begin = begin;
cpps_range_ptr->end = end;
cpps_range_ptr->inc = inc;
return cpps_range_var;
}
cpps_value cpps_xrange(C* c, cpps_integer begin, cpps_integer end)
{
cpps_create_class_var(cpps_range, c, cpps_range_var, cpps_range_ptr);
cpps_range_ptr->begin = begin;
cpps_range_ptr->end = end;
cpps_range_ptr->inc = 1;
return cpps_range_var;
}
cpps_value cpps_nrange(C* c, cpps_integer begin, cpps_integer end,cpps_integer inc)
{
cpps_create_class_var(cpps_range, c, cpps_range_var, cpps_range_ptr);
cpps_range_ptr->begin = begin;
cpps_range_ptr->end = end;
cpps_range_ptr->inc = inc;
return cpps_range_var;
}
void cpps_regrange(C* c)
{
cpps::_module(c)[
_class<cpps_range>("RANGE")
.def("start",&cpps_range::start_func)
.def("end",&cpps_range::end_func)
.def("step",&cpps_range::step_func),
def_inside("slice", cpps_nrange),
def_inside("range", cpps_range_range),
def_inside("xrange",cpps_xrange),
def_inside("nrange",cpps_nrange)
];
}
cpps_integer cpps_range::start_func()
{
return begin;
}
cpps_integer cpps_range::end_func()
{
return end;
}
cpps_integer cpps_range::step_func()
{
return inc;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/cppscript/cpps.git
git@gitee.com:cppscript/cpps.git
cppscript
cpps
cpps
master

搜索帮助