static void scArrayPush(const CFunctionsScopePtr &c, void *data) { CScriptVarPtr arr = c->getArgument("this"); uint32_t len = c->getLength(arr); uint32_t args = c->getArgumentsLength(); for (uint32_t i=0; i<args; ++i) c->setProperty(arr, i, c->getArgument(i)); }
static void scArrayFill(const CFunctionsScopePtr &c, void *data) { CScriptVarPtr arr = c->getArgument("this"); uint32_t len = c->getLength(arr); CNumber startNumber=0, endNumber=len; CScriptVarPtr value = c->getArgument(0); CScriptVarPtr startVar = c->getArgument(1); CScriptVarPtr endVar = c->getArgument(2); c->setReturnVar(arr); if(!startVar->isUndefined()) startNumber = startVar->toNumber(); if(!endVar->isUndefined()) endNumber = endVar->toNumber(); uint32_t start = (startNumber.sign()<0 ? startNumber+len : startNumber).clamp(0, len).toUInt32(); uint32_t end = (endNumber.sign()<0 ? endNumber+len : endNumber).clamp(0, len).toUInt32(); for(; start < end; ++start) c->setProperty(arr, start, value); }