AFAIK, there is no syntax in Squirrel to easily pass vargv from one function to the next. I'm no Squirrel guru though; you might try your question/feature request at
http://squirrel-lang.org/forums/
Ugly, stupid hacks are always possible, though:
Code: Select all
function call(f, v)
{
switch (v.len()) {
case 0: return f();
case 1: return f(v[0]);
case 2: return f(v[0], v[1]);
case 3: return f(v[0], v[1], v[2]);
case 4: return f(v[0], v[1], v[2], v[3]);
case 5: return f(v[0], v[1], v[2], v[3], v[4]);
case 6: return f(v[0], v[1], v[2], v[3], v[4], v[5]);
case 7: return f(v[0], v[1], v[2], v[3], v[4], v[5], v[6]);
case 8: return f(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]);
case 9: return f(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7], v[8]);
}
throw "too many arguments";
}
function sum(...)
{
local total = 0;
for (local i = 0; i < vargc; i++)
total += vargv[i];
return total;
}
function my_sum(dummy, ...)
{
local v = [];
for (local i = 0; i < vargc; i++)
v.append(vargv[i]);
return call(sum, v);
}
print(my_sum("blah", 1, 2, 3, 4));
// output: 10