initStdIPairs method
void
initStdIPairs()
Implementation
void initStdIPairs() {
ipairs() {
final t = findVar('table');
if (!(t?.isTable ?? false)) {
final type = t?.typeinfo;
throw 'Expected table input for ipairs(...). Was $type.';
}
int i = 1;
t as LuaObject;
return LuaFuncBuilder
.create('closure')
.exec(call: () {
if(i > t.tableSize) return null;
final ii = i++;
return [ii, t.readField(ii)];
});
}
final token = Token.synthesized('ipairs');
final defIPairs = FuncExpr.named(
token,
body: [],
args: [DeclArg(Token.synthesized('table'))],
idParts: [RawExpr(token)],
);
defGlobal(LuaObject.func('ipairs', defIPairs, ipairs)).doc = LuaDoc(
category: catRuntime,
html: '''
Enumerates over a lua table and returns a <code>{index, value}</code>
pair. Used in for-loops where integer index is expected.
''',
);
}