MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / AddMethod

Method AddMethod

src/script/squirrel.cpp:256–271  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

254}
255
256void Squirrel::AddMethod(std::string_view method_name, SQFUNCTION proc, std::string_view params, void *userdata, int size)
257{
258 ScriptAllocatorScope alloc_scope(this);
259
260 sq_pushstring(this->vm, method_name);
261
262 if (size != 0) {
263 void *ptr = sq_newuserdata(vm, size);
264 std::copy_n(static_cast<std::byte *>(userdata), size, static_cast<std::byte *>(ptr));
265 }
266
267 sq_newclosure(this->vm, proc, size != 0 ? 1 : 0);
268 if (!params.empty()) sq_setparamscheck(this->vm, params.size(), params);
269 sq_setnativeclosurename(this->vm, -1, method_name);
270 sq_newslot(this->vm, -3, SQFalse);
271}
272
273void Squirrel::AddConst(std::string_view var_name, SQInteger value)
274{

Callers 10

RegisterAPIMethod · 0.80
squirrel_register_stdFunction · 0.80
DefSQMethodMethod · 0.80
DefSQAdvancedMethodMethod · 0.80
DefSQStaticMethodMethod · 0.80
AddConstructorMethod · 0.80
RegisterAPIMethod · 0.80

Calls 8

sq_pushstringFunction · 0.85
sq_newuserdataFunction · 0.85
sq_newclosureFunction · 0.85
sq_setparamscheckFunction · 0.85
sq_setnativeclosurenameFunction · 0.85
sq_newslotFunction · 0.85
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected