13 Star 69 Fork 22

johnsonyl/cpps

Create your Gitee Account
Explore and code with more than 14 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
cpps_dofunction.cpp 1.62 KB
Copy Edit Raw Blame History
johnsonyl authored 2021-01-01 22:15 +08:00 . 统一cpps_std_vector.增加string的[]支持.
#include "cpps/cpps.h"
namespace cpps
{
object dofunction(C *c, object func)
{
cpps_value ret;
if (func.value.tt == CPPS_TLAMBDAFUNCTION) {
cpps_cppsclassvar* cppsclassvar = (cpps_cppsclassvar*)func.value.value.domain;
cpps_lambda_function* pfunc = (cpps_lambda_function*)cppsclassvar->getclsptr();
func.value = pfunc;
func.value.tt = CPPS_TFUNCTION;
}
if (func.value.tt == CPPS_TFUNCTION)
{
cpps_function *f = func.value.value.func;
if (f)
{
cpps_std_vector paramlist;
cpps_domain *execdomain = c->_G;
cpps_stack* stack = c->stack_alloc();
stack->init("", 0, f->funcname.c_str());
c->push_stack(stack);
f->callfunction(c, &ret, execdomain, &paramlist);
c->pop_stack();
c->stack_free(stack);
}
}
return ret;
}
object doclassfunction(C *c, object domain, object func)
{
cpps_value ret;
if (func.value.tt == CPPS_TLAMBDAFUNCTION) {
cpps_cppsclassvar* cppsclassvar = (cpps_cppsclassvar*)func.value.value.domain;
cpps_lambda_function* pfunc = (cpps_lambda_function*)cppsclassvar->getclsptr();
func.value = pfunc;
func.value.tt = CPPS_TFUNCTION;
}
if (func.value.tt == CPPS_TFUNCTION)
{
cpps_function *f = func.value.value.func;
if (f)
{
cpps_std_vector paramlist;
cpps_domain *execdomain = domain.value.value.domain;
cpps_stack* stack = c->stack_alloc();
stack->init("", 0, f->funcname.c_str());
c->push_stack(stack);
f->callfunction(c, &ret, execdomain, &paramlist);
c->pop_stack();
c->stack_free( stack);
}
}
return ret;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/cppscript/cpps.git
git@gitee.com:cppscript/cpps.git
cppscript
cpps
cpps
v1.0.0

Search