#include <cpps/cpps.h> //Single Headerusing namespace cpps;namespace cpps { std::string cpps_io_getfilepath(std::string str); std::string cpps_rebuild_filepath(std::string path); std::string cpps_real_path(); }#define ptr_cast(a) cpps_value _##a; _##a.tt = a->tt;_##a.value = a->value; _##a.incruse();extern "C" {void* tcmalloc_func(size_t _size) {return malloc(_size);}void tcfree_func(void* p) {free(p);}//basiccpps_export_type( cpps::C*) cpps_create(){return cpps::create(0,NULL, tcmalloc_func, tcfree_func);}cpps_export_type( void )cpps_close(cpps::C * c){cpps::close(c);}cpps_export_type( void )cpps_dofile(cpps::C * c, char* path){std::string path2 = cpps_rebuild_filepath(path);cpps_trycpps::dofile(c, path2.c_str());cpps_catch}//modulecpps_export_type( cpps_domain* )cpps_defmodule(cpps::C* c, char* name){cpps::cpps_init_cpps_class(c);cpps::cpps_module m = _module(c, name);return m.domain;}cpps_export_type( void )cpps_unmodule(cpps::C* c, char* name){_unmodule(c, name);}cpps_export_type( void )cpps_module_def(cpps::C* c, cpps_domain* domain, char* name, cpps_func _f){regxmodule r = def(name, _f);domain->regfunc(r.f, c);}//def classcpps_export_type( _class2* )cpps_def_class(cpps::C* c, cpps_domain* domain, char* name, cpps_class_alloc __alloc, cpps_class_free __free){_class2 *r = new _class2(name, __alloc, __free);domain->regfunc(r->f, c);return r;}cpps_export_type( void )cpps_def_class_free(_class2 *_r){delete _r;}cpps_export_type( void )cpps_class_def(cpps::C* c, _class2* r, char* name, cpps_class_func _f){r->def_inside(name, _f);}cpps_export_type( void )cpps_class_def_operator(cpps::C* c, _class2* r, char* name, cpps_class_func _f){r->def_operator_inside(name, _f);}//def enumcpps_export_type( _enum* )cpps_def_enum(cpps::C* c, cpps_domain* domain, char* name){_enum* r = new _enum(c,name);domain->regfunc(r->f, c);return r;}cpps_export_type( void )cpps_def_enum_free(_enum * _r){delete _r;}cpps_export_type( void )cpps_enum_def(cpps::C* c, _enum* r, char* name, cpps_integer i){r->value(name, i);}//cpps_value api functioncpps_export_type( bool )cpps_value_ispair(cpps_value* v){ptr_cast(v);return cpps_ispair(_v);}cpps_export_type( bool )cpps_value_isset(cpps_value* v){ptr_cast(v);return cpps_isset(_v);}cpps_export_type( bool )cpps_value_ismap(cpps_value* v){ptr_cast(v);return cpps_ismap(_v);}cpps_export_type( bool )cpps_value_isbasevar(cpps_value* v){ptr_cast(v);return cpps_isbasevar(_v);}cpps_export_type( bool )cpps_value_isstring(cpps_value* v){ptr_cast(v);return cpps_isstring(_v);}cpps_export_type( bool )cpps_value_isvector(cpps_value* v){ptr_cast(v);return cpps_isvector(_v);}cpps_export_type( bool )cpps_value_isrange(cpps_value* v){ptr_cast(v);return cpps_isrange(_v);}cpps_export_type( bool )cpps_value_isint(cpps_value* v){ptr_cast(v);return cpps_isint(_v);}cpps_export_type( bool )cpps_value_ischar(cpps_value* v){ptr_cast(v);return cpps_ischar(_v);}cpps_export_type( bool )cpps_value_isuint(cpps_value* v){ptr_cast(v);return cpps_isuint(_v);}cpps_export_type( bool )cpps_value_isbool(cpps_value* v){ptr_cast(v);return cpps_isbool(_v);}cpps_export_type( bool )cpps_value_isnumber(cpps_value* v){ptr_cast(v);return cpps_isnumber(_v);}cpps_export_type( bool )cpps_value_isnull(cpps_value* v){ptr_cast(v);return cpps_isnull(_v);}cpps_export_type( bool )cpps_value_isfunction(cpps_value* v){ptr_cast(v);return cpps_isfunction(_v);}cpps_export_type( bool )cpps_value_isclassvar(cpps_value* v){ptr_cast(v);return cpps_isclassvar(_v);}cpps_export_type( bool )cpps_value_isclass(cpps_value* v){ptr_cast(v);return cpps_isclass(_v);}cpps_export_type( bool )cpps_value_isellipsis(cpps_value* v){ptr_cast(v);return cpps_isellipsis(_v);}cpps_export_type( bool )cpps_value_istuple(cpps_value* v){ptr_cast(v);return cpps_istuple(_v);}cpps_export_type( void )cpps_value_getclassname(cpps_value* v,char *_out){ptr_cast(v);strcpy(_out,cpps_getclassname(_v).c_str());}cpps_export_type( void )cpps_value_global(C*c,cpps_value *out){*out = cpps_value(c->_G);}cpps_export_type(void) cpps_value_get_by_name(cpps_value *obj,char *name,cpps_value *out){*out = object(*obj)[name].getval();}cpps_export_type( void )cpps_value_get_by_idx(cpps_value *obj,int idx,cpps_value *out){*out = object(*obj)[idx].getval();}cpps_export_type(void)cpps_value_incruse(cpps_value *obj){obj->incruse();}cpps_export_type( void )cpps_value_decruse(cpps_value *obj){obj->decruse();}cpps_export_type( void* )cpps_value_cast(cpps_value *obj){ptr_cast(obj);if (!cpps_isclassvar(_obj)) return NULL;cpps_class_handler* handler = object_cast<cpps_class_handler*>(_obj);return handler->get_ptr();}cpps_export_type( void )cpps_value_real(cpps_value* obj, cpps_value* out){ptr_cast(obj);*out = _obj.real();}cpps_export_type(void )cpps_value_ref(cpps_value* obj, cpps_value* out){*out = obj->ref();}cpps_export_type( void )cpps_value_ref_assign(cpps_value* _ref, cpps_value *v){ptr_cast(_ref);ptr_cast(v);object _ref_object = object(_ref);_ref_object = object(_v);}//cpps_value* cpps_value_create(const cpps_value& v) {// cpps_value* ret = CPPSNEW( cpps_value)();// ret->tt = v.tt;// ret->value = v.value;// return ret;//}//__declspec(dllexport) void cpps_value_release(cpps_value* v)//{// CPPSDELETE( v);//}//vectorcpps_export_type( void )cpps_vector_push_back(cpps_value* _vct,cpps_value* _v){ptr_cast(_vct);ptr_cast(_v);cpps_vector* vct = cpps_to_cpps_vector(__vct);vct->push_back(__v);}cpps_export_type( int )cpps_vector_size(cpps_value* _vct){ptr_cast(_vct);cpps_vector* vct = cpps_to_cpps_vector(+_vct);return (int)vct->size();}cpps_export_type( void )cpps_vector_erase(cpps_value* _vct,int idx){ptr_cast(_vct);cpps_vector* vct = cpps_to_cpps_vector(+_vct);vct->erase(idx);}cpps_export_type( void )cpps_vector_at(cpps_value* _vct,int idx,cpps_value* out){ptr_cast(_vct);cpps_vector* vct = cpps_to_cpps_vector(__vct);*out = vct->at(idx);}cpps_export_type( void )cpps_vector_clear(cpps_value* _vct){ptr_cast(_vct);cpps_vector* vct = cpps_to_cpps_vector(__vct);vct->clear();}cpps_export_type( void )cpps_vector_create(C*c,cpps_value *out){cpps_create_class_var(cpps_vector, c, vct_value, vct_ptr);*out = vct_value;}//mapcpps_export_type( void )cpps_map_insert(cpps_value* _map, cpps_value* _key,cpps_value* _value){ptr_cast(_map);ptr_cast(_key);ptr_cast(_value);cpps_map* m = cpps_to_cpps_map(__map);m->insert(__key, __value);}cpps_export_type( int )cpps_map_size(cpps_value* _map){ptr_cast(_map);cpps_map* m = cpps_to_cpps_map(__map);return (int)m->size();}cpps_export_type( void )cpps_map_clear(cpps_value* _map){ptr_cast(_map);cpps_map* m = cpps_to_cpps_map(__map);m->clear();}cpps_export_type( void )cpps_map_erase(cpps_value* _map,cpps_value* _key){ptr_cast(_map);cpps_map* m = cpps_to_cpps_map(__map);m->erase(*_key);}cpps_export_type( void )cpps_map_find(cpps_value* _map,cpps_value* _key,cpps_value *out){ptr_cast(_map);ptr_cast(_key);cpps_map* m = cpps_to_cpps_map(__map);*out = m->find(__key);}cpps_export_type( void )cpps_map_create(C*c, cpps_value* out){cpps_create_class_var(cpps_map, c, map_value, map_ptr);*out = map_value;}//functioncpps_export_type( void )cpps_function_call(C* c, cpps_value* func,cpps_value *ps,cpps_value *out){ptr_cast(func);ptr_cast(ps);object ret = function_caller(c, _func, cpps_to_cpps_vector(_ps)->realvector());*out = ret.realval();}cpps_export_type( void )cpps_function_class_call(C* c, cpps_value* _class, cpps_value* func,cpps_value *ps,cpps_value *out){ptr_cast(_class);ptr_cast(func);object ret = function_caller(c,__class, _func, cpps_to_cpps_vector(*ps)->realvector());*out = ret.realval();}//stringcpps_export_type( int )cpps_string_size( cpps_value* _str){ptr_cast(_str);std::string* s = cpps_get_string(__str);return (int)s->size();}cpps_export_type( void )cpps_string_append( cpps_value* _str, char* out, int count){ptr_cast(_str);std::string* s = cpps_get_string(__str);s->append(out, (size_t)count);}cpps_export_type( void )cpps_string_strcopy( cpps_value* _str,char *out){ptr_cast(_str);std::string* s = cpps_get_string(__str);memcpy(out, s->c_str(), s->size());}cpps_export_type( void )cpps_string_assignment(cpps_value* _str,char *out,int count){ptr_cast(_str);std::string* s = cpps_get_string(__str);s->assign(out, (size_t)count);}cpps_export_type( void )cpps_string_create(C*c,cpps_value* _out){*_out = cpps_value(c, "");}//classvarcpps_export_type( void )cpps_classvar_create(C* c, cpps_value* _class,cpps_value* _out){ptr_cast(_class);if (!cpps_isclass(__class)) return;cpps_cppsclass* _cppsclass = cpps_to_cpps_cppsclass(*_class);newcppsclasvar(c, _cppsclass, _out);}}//cpps_export_finish //unix export.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型