mirror of https://github.com/OpenTTD/OpenTTD
Codechange: put SQRegFunctions into initializer_list and use ranged for loops
parent
f4fc8f6b38
commit
8f74c08ea6
|
@ -182,7 +182,7 @@ typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
|||
typedef char32_t (*SQLEXREADFUNC)(SQUserPointer);
|
||||
|
||||
typedef struct tagSQRegFunction{
|
||||
const SQChar *name;
|
||||
std::string_view name;
|
||||
SQFUNCTION f;
|
||||
SQInteger nparamscheck;
|
||||
const SQChar *typemask;
|
||||
|
|
|
@ -67,7 +67,7 @@ SINGLE_ARG_FUNC(ceil, 1)
|
|||
SINGLE_ARG_FUNC(exp, 100)
|
||||
|
||||
#define _DECL_FUNC(name,nparams,tycheck) {#name,math_##name,nparams,tycheck}
|
||||
static SQRegFunction mathlib_funcs[] = {
|
||||
static const std::initializer_list<SQRegFunction> mathlib_funcs = {
|
||||
_DECL_FUNC(sqrt,2,".n"),
|
||||
_DECL_FUNC(sin,2,".n"),
|
||||
_DECL_FUNC(cos,2,".n"),
|
||||
|
@ -88,7 +88,6 @@ static SQRegFunction mathlib_funcs[] = {
|
|||
#endif /* EXPORT_DEFAULT_SQUIRREL_FUNCTIONS */
|
||||
_DECL_FUNC(fabs,2,".n"),
|
||||
_DECL_FUNC(abs,2,".n"),
|
||||
{nullptr,nullptr,0,nullptr},
|
||||
};
|
||||
|
||||
#ifndef M_PI
|
||||
|
@ -97,14 +96,12 @@ static SQRegFunction mathlib_funcs[] = {
|
|||
|
||||
SQRESULT sqstd_register_mathlib(HSQUIRRELVM v)
|
||||
{
|
||||
SQInteger i=0;
|
||||
while(mathlib_funcs[i].name!=nullptr) {
|
||||
sq_pushstring(v,mathlib_funcs[i].name);
|
||||
sq_newclosure(v,mathlib_funcs[i].f,0);
|
||||
sq_setparamscheck(v,mathlib_funcs[i].nparamscheck,mathlib_funcs[i].typemask);
|
||||
sq_setnativeclosurename(v,-1,mathlib_funcs[i].name);
|
||||
for(auto &func : mathlib_funcs) {
|
||||
sq_pushstring(v,func.name);
|
||||
sq_newclosure(v,func.f,0);
|
||||
sq_setparamscheck(v,func.nparamscheck,func.typemask);
|
||||
sq_setnativeclosurename(v,-1,func.name);
|
||||
sq_createslot(v,-3);
|
||||
i++;
|
||||
}
|
||||
#ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS
|
||||
sq_pushstring(v,"RAND_MAX");
|
||||
|
|
|
@ -237,7 +237,7 @@ static SQInteger base_type(HSQUIRRELVM v)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static SQRegFunction base_funcs[]={
|
||||
static const std::initializer_list<SQRegFunction> base_funcs={
|
||||
//generic
|
||||
#ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS
|
||||
{"seterrorhandler",base_seterrorhandler,2, nullptr},
|
||||
|
@ -264,20 +264,17 @@ static SQRegFunction base_funcs[]={
|
|||
{"collectgarbage",base_collectgarbage,1, "t"},
|
||||
#endif
|
||||
#endif
|
||||
{nullptr,nullptr,0,nullptr}
|
||||
};
|
||||
|
||||
void sq_base_register(HSQUIRRELVM v)
|
||||
{
|
||||
SQInteger i=0;
|
||||
sq_pushroottable(v);
|
||||
while(base_funcs[i].name!=nullptr) {
|
||||
sq_pushstring(v,base_funcs[i].name);
|
||||
sq_newclosure(v,base_funcs[i].f,0);
|
||||
sq_setnativeclosurename(v,-1,base_funcs[i].name);
|
||||
sq_setparamscheck(v,base_funcs[i].nparamscheck,base_funcs[i].typemask);
|
||||
for(auto &func : base_funcs) {
|
||||
sq_pushstring(v,func.name);
|
||||
sq_newclosure(v,func.f,0);
|
||||
sq_setnativeclosurename(v,-1,func.name);
|
||||
sq_setparamscheck(v,func.nparamscheck,func.typemask);
|
||||
sq_createslot(v,-3);
|
||||
i++;
|
||||
}
|
||||
sq_pushstring(v,"_version_");
|
||||
sq_pushstring(v,SQUIRREL_VERSION);
|
||||
|
@ -410,7 +407,7 @@ static SQInteger table_rawget(HSQUIRRELVM v)
|
|||
}
|
||||
|
||||
|
||||
SQRegFunction SQSharedState::_table_default_delegate_funcz[]={
|
||||
/* static */ const std::initializer_list<SQRegFunction> SQSharedState::_table_default_delegate_funcz={
|
||||
{"len",default_delegate_len,1, "t"},
|
||||
{"rawget",table_rawget,2, "t"},
|
||||
{"rawset",table_rawset,3, "t"},
|
||||
|
@ -419,7 +416,6 @@ SQRegFunction SQSharedState::_table_default_delegate_funcz[]={
|
|||
{"weakref",obj_delegate_weakref,1, nullptr },
|
||||
{"tostring",default_delegate_tostring,1, "."},
|
||||
{"clear",obj_clear,1, "."},
|
||||
{nullptr,nullptr,0,nullptr}
|
||||
};
|
||||
|
||||
//ARRAY DEFAULT DELEGATE///////////////////////////////////////
|
||||
|
@ -612,7 +608,7 @@ static SQInteger array_slice(HSQUIRRELVM v)
|
|||
|
||||
}
|
||||
|
||||
SQRegFunction SQSharedState::_array_default_delegate_funcz[]={
|
||||
/* static */ const std::initializer_list<SQRegFunction> SQSharedState::_array_default_delegate_funcz={
|
||||
{"len",default_delegate_len,1, "a"},
|
||||
{"append",array_append,2, "a"},
|
||||
{"extend",array_extend,2, "aa"},
|
||||
|
@ -628,7 +624,6 @@ SQRegFunction SQSharedState::_array_default_delegate_funcz[]={
|
|||
{"weakref",obj_delegate_weakref,1, nullptr },
|
||||
{"tostring",default_delegate_tostring,1, "."},
|
||||
{"clear",obj_clear,1, "."},
|
||||
{nullptr,nullptr,0,nullptr}
|
||||
};
|
||||
|
||||
//STRING DEFAULT DELEGATE//////////////////////////
|
||||
|
@ -679,7 +674,7 @@ static SQInteger string_find(HSQUIRRELVM v)
|
|||
STRING_TOFUNCZ(tolower)
|
||||
STRING_TOFUNCZ(toupper)
|
||||
|
||||
SQRegFunction SQSharedState::_string_default_delegate_funcz[]={
|
||||
/* static */ const std::initializer_list<SQRegFunction> SQSharedState::_string_default_delegate_funcz={
|
||||
{"len",default_delegate_len,1, "s"},
|
||||
{"tointeger",default_delegate_tointeger,1, "s"},
|
||||
{"tofloat",default_delegate_tofloat,1, "s"},
|
||||
|
@ -689,17 +684,15 @@ SQRegFunction SQSharedState::_string_default_delegate_funcz[]={
|
|||
{"tolower",string_tolower,1, "s"},
|
||||
{"toupper",string_toupper,1, "s"},
|
||||
{"weakref",obj_delegate_weakref,1, nullptr },
|
||||
{nullptr,nullptr,0,nullptr}
|
||||
};
|
||||
|
||||
//INTEGER DEFAULT DELEGATE//////////////////////////
|
||||
SQRegFunction SQSharedState::_number_default_delegate_funcz[]={
|
||||
/* static */ const std::initializer_list<SQRegFunction> SQSharedState::_number_default_delegate_funcz={
|
||||
{"tointeger",default_delegate_tointeger,1, "n|b"},
|
||||
{"tofloat",default_delegate_tofloat,1, "n|b"},
|
||||
{"tostring",default_delegate_tostring,1, "."},
|
||||
{"tochar",number_delegate_tochar,1, "n|b"},
|
||||
{"weakref",obj_delegate_weakref,1, nullptr },
|
||||
{nullptr,nullptr,0,nullptr}
|
||||
};
|
||||
|
||||
//CLOSURE DEFAULT DELEGATE//////////////////////////
|
||||
|
@ -778,7 +771,7 @@ static SQInteger closure_getinfos(HSQUIRRELVM v) {
|
|||
}
|
||||
|
||||
|
||||
SQRegFunction SQSharedState::_closure_default_delegate_funcz[]={
|
||||
/* static */ const std::initializer_list<SQRegFunction> SQSharedState::_closure_default_delegate_funcz={
|
||||
{"call",closure_call,-1, "c"},
|
||||
{"pcall",closure_pcall,-1, "c"},
|
||||
{"acall",closure_acall,2, "ca"},
|
||||
|
@ -787,7 +780,6 @@ SQRegFunction SQSharedState::_closure_default_delegate_funcz[]={
|
|||
{"tostring",default_delegate_tostring,1, "."},
|
||||
{"bindenv",closure_bindenv,2, "c x|y|t"},
|
||||
{"getinfos",closure_getinfos,1, "c"},
|
||||
{nullptr,nullptr,0,nullptr}
|
||||
};
|
||||
|
||||
//GENERATOR DEFAULT DELEGATE
|
||||
|
@ -802,11 +794,10 @@ static SQInteger generator_getstatus(HSQUIRRELVM v)
|
|||
return 1;
|
||||
}
|
||||
|
||||
SQRegFunction SQSharedState::_generator_default_delegate_funcz[]={
|
||||
/* static */ const std::initializer_list<SQRegFunction> SQSharedState::_generator_default_delegate_funcz={
|
||||
{"getstatus",generator_getstatus,1, "g"},
|
||||
{"weakref",obj_delegate_weakref,1, nullptr },
|
||||
{"tostring",default_delegate_tostring,1, "."},
|
||||
{nullptr,nullptr,0,nullptr}
|
||||
};
|
||||
|
||||
//THREAD DEFAULT DELEGATE
|
||||
|
@ -886,13 +877,12 @@ static SQInteger thread_getstatus(HSQUIRRELVM v)
|
|||
return 1;
|
||||
}
|
||||
|
||||
SQRegFunction SQSharedState::_thread_default_delegate_funcz[] = {
|
||||
/* static */ const std::initializer_list<SQRegFunction> SQSharedState::_thread_default_delegate_funcz = {
|
||||
{"call", thread_call, -1, "v"},
|
||||
{"wakeup", thread_wakeup, -1, "v"},
|
||||
{"getstatus", thread_getstatus, 1, "v"},
|
||||
{"weakref",obj_delegate_weakref,1, nullptr },
|
||||
{"tostring",default_delegate_tostring,1, "."},
|
||||
{nullptr,nullptr,0,nullptr},
|
||||
};
|
||||
|
||||
static SQInteger class_getattributes(HSQUIRRELVM v)
|
||||
|
@ -916,14 +906,13 @@ static SQInteger class_instance(HSQUIRRELVM v)
|
|||
return SQ_ERROR;
|
||||
}
|
||||
|
||||
SQRegFunction SQSharedState::_class_default_delegate_funcz[] = {
|
||||
/* static */ const std::initializer_list<SQRegFunction> SQSharedState::_class_default_delegate_funcz = {
|
||||
{"getattributes", class_getattributes, 2, "y."},
|
||||
{"setattributes", class_setattributes, 3, "y.."},
|
||||
{"rawin",container_rawexists,2, "y"},
|
||||
{"weakref",obj_delegate_weakref,1, nullptr },
|
||||
{"tostring",default_delegate_tostring,1, "."},
|
||||
{"instance",class_instance,1, "y"},
|
||||
{nullptr,nullptr,0,nullptr}
|
||||
};
|
||||
|
||||
static SQInteger instance_getclass(HSQUIRRELVM v)
|
||||
|
@ -933,12 +922,11 @@ static SQInteger instance_getclass(HSQUIRRELVM v)
|
|||
return SQ_ERROR;
|
||||
}
|
||||
|
||||
SQRegFunction SQSharedState::_instance_default_delegate_funcz[] = {
|
||||
/* static */ const std::initializer_list<SQRegFunction> SQSharedState::_instance_default_delegate_funcz = {
|
||||
{"getclass", instance_getclass, 1, "x"},
|
||||
{"rawin",container_rawexists,2, "x"},
|
||||
{"weakref",obj_delegate_weakref,1, nullptr },
|
||||
{"tostring",default_delegate_tostring,1, "."},
|
||||
{nullptr,nullptr,0,nullptr}
|
||||
};
|
||||
|
||||
static SQInteger weakref_ref(HSQUIRRELVM v)
|
||||
|
@ -948,11 +936,10 @@ static SQInteger weakref_ref(HSQUIRRELVM v)
|
|||
return 1;
|
||||
}
|
||||
|
||||
SQRegFunction SQSharedState::_weakref_default_delegate_funcz[] = {
|
||||
/* static */ const std::initializer_list<SQRegFunction> SQSharedState::_weakref_default_delegate_funcz = {
|
||||
{"ref",weakref_ref,1, "r"},
|
||||
{"weakref",obj_delegate_weakref,1, nullptr },
|
||||
{"tostring",default_delegate_tostring,1, "."},
|
||||
{nullptr,nullptr,0,nullptr}
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -75,18 +75,16 @@ bool CompileTypemask(SQIntVec &res,const SQChar *typemask)
|
|||
return true;
|
||||
}
|
||||
|
||||
SQTable *CreateDefaultDelegate(SQSharedState *ss,SQRegFunction *funcz)
|
||||
SQTable *CreateDefaultDelegate(SQSharedState *ss,const std::initializer_list<SQRegFunction> &funcz)
|
||||
{
|
||||
SQInteger i=0;
|
||||
SQTable *t=SQTable::Create(ss,0);
|
||||
while(funcz[i].name!=nullptr){
|
||||
SQNativeClosure *nc = SQNativeClosure::Create(ss,funcz[i].f);
|
||||
nc->_nparamscheck = funcz[i].nparamscheck;
|
||||
nc->_name = SQString::Create(ss,funcz[i].name);
|
||||
if(funcz[i].typemask && !CompileTypemask(nc->_typecheck,funcz[i].typemask))
|
||||
for (auto &func : funcz) {
|
||||
SQNativeClosure *nc = SQNativeClosure::Create(ss,func.f);
|
||||
nc->_nparamscheck = func.nparamscheck;
|
||||
nc->_name = SQString::Create(ss,func.name);
|
||||
if(func.typemask && !CompileTypemask(nc->_typecheck,func.typemask))
|
||||
return nullptr;
|
||||
t->NewSlot(SQString::Create(ss,funcz[i].name),nc);
|
||||
i++;
|
||||
t->NewSlot(SQString::Create(ss,func.name),nc);
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
|
|
@ -81,25 +81,25 @@ public:
|
|||
#endif
|
||||
SQObjectPtr _root_vm;
|
||||
SQObjectPtr _table_default_delegate;
|
||||
static SQRegFunction _table_default_delegate_funcz[];
|
||||
static const std::initializer_list<SQRegFunction> _table_default_delegate_funcz;
|
||||
SQObjectPtr _array_default_delegate;
|
||||
static SQRegFunction _array_default_delegate_funcz[];
|
||||
static const std::initializer_list<SQRegFunction> _array_default_delegate_funcz;
|
||||
SQObjectPtr _string_default_delegate;
|
||||
static SQRegFunction _string_default_delegate_funcz[];
|
||||
static const std::initializer_list<SQRegFunction> _string_default_delegate_funcz;
|
||||
SQObjectPtr _number_default_delegate;
|
||||
static SQRegFunction _number_default_delegate_funcz[];
|
||||
static const std::initializer_list<SQRegFunction> _number_default_delegate_funcz;
|
||||
SQObjectPtr _generator_default_delegate;
|
||||
static SQRegFunction _generator_default_delegate_funcz[];
|
||||
static const std::initializer_list<SQRegFunction> _generator_default_delegate_funcz;
|
||||
SQObjectPtr _closure_default_delegate;
|
||||
static SQRegFunction _closure_default_delegate_funcz[];
|
||||
static const std::initializer_list<SQRegFunction> _closure_default_delegate_funcz;
|
||||
SQObjectPtr _thread_default_delegate;
|
||||
static SQRegFunction _thread_default_delegate_funcz[];
|
||||
static const std::initializer_list<SQRegFunction> _thread_default_delegate_funcz;
|
||||
SQObjectPtr _class_default_delegate;
|
||||
static SQRegFunction _class_default_delegate_funcz[];
|
||||
static const std::initializer_list<SQRegFunction> _class_default_delegate_funcz;
|
||||
SQObjectPtr _instance_default_delegate;
|
||||
static SQRegFunction _instance_default_delegate_funcz[];
|
||||
static const std::initializer_list<SQRegFunction> _instance_default_delegate_funcz;
|
||||
SQObjectPtr _weakref_default_delegate;
|
||||
static SQRegFunction _weakref_default_delegate_funcz[];
|
||||
static const std::initializer_list<SQRegFunction> _weakref_default_delegate_funcz;
|
||||
|
||||
SQCOMPILERERROR _compilererrorhandler;
|
||||
SQPRINTFUNCTION _printfunc;
|
||||
|
|
Loading…
Reference in New Issue