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