Warning: session_start(): open(/var/lib/php/sessions/sess_9ph5dcja7qi8m0rvci8omi4l1r, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
// example:
// sS loadTextFile(File/S file) { ... }
svoid tok_multiTypeArguments_v2(LS tok) {
int i;
// File/S
while ((i = jfind(tok, "File/ ", (_tok, nIdx) ->
eqGetOneOf(_tok, nIdx+5, "S", "String"))) >= 0) {
S argName = tok.get(i+6);
S mainType = tok.get(i), altType = tok.get(i+4);
S converter = "newFile";
S expr = converter + "(" + argName + ")";
tok_expandMultiTypeArgument(tok,
i, i+8,
argName,
mainType, altType, expr);
}
// Graphics2D etc, IIntegralImage etc, ...
while ((i = jfind(tok, " etc ")) >= 0) {
S mainType = tok.get(i);
S argName = tok.get(i+4);
int iArgEnd = i+6;
new LPairS alts; // altType, converter
if (eq(mainType, "Graphics2D"))
alts.add(pair("BufferedImage", "graphics"));
else if (eq(mainType, "File"))
alts.add(pair("S", "toFile"));
else if (eq(mainType, "IIntegralImage")) {
alts.add(pair("BufferedImage", "IntegralImage"));
alts.add(pair("MakesBufferedImage", "IntegralImage"));
} else if (eq(mainType, "BufferedImage"))
alts.add(pair("MakesBufferedImage", "toBufferedImage"));
else if (eq(mainType, "Runnable"))
alts.add(pair("IF0", "if0ToRunnable"));
else if (eq(mainType, "Pt")) {
alts.add(pair("int \*argName*/_x, int \*argName*/_y",
"pt(\*argName*/_x, \*argName*/_y)"));
tok_expandMultiTypeArgument_v3(tok,
i, iArgEnd,
argName,
mainType, alts);
continue;
} else if (eq(mainType, "DoublePt")) {
alts.add(pair("double \*argName*/_x, double \*argName*/_y",
"doublePt(\*argName*/_x, \*argName*/_y)"));
tok_expandMultiTypeArgument_v3(tok,
i, iArgEnd,
argName,
mainType, alts);
continue;
}
if (empty(alts))
fail("Unknown multi-type: " + joinSubList(tok, i, iArgEnd));
alts = mapPairB(alts, converter -> converter + "(" + argName + ")");
tok_expandMultiTypeArgument_v2(tok,
i, iArgEnd,
argName,
mainType, alts);
}
// Iterable or X[], Iterable<> or X...
IntRange r;
for (S modifier : ll("[]", "..."))
while ((r = jfind_range(tok, "Iterable<> or " + modifier + " ")) != null) {
i = r.start+1;
S mainType = joinSubList(tok, i, i+7);
S altType = joinSubList(tok, i+10, r.end-3);
S argName = tok.get(r.end-2);
S converter = "asList";
S expr = converter + "(" + argName + ")";
tok_expandMultiTypeArgument(tok, i, r.end, argName, mainType, altType, expr);
}
// Iterable or O[], Iterable or X..., Cl/O[], etc
for (S modifier : ll("[]", "..."))
while ((r = jfind_range(tok, " * *" + modifier + " ", func(LS tok, int nIdx) {
eqOneOf(tok.get(nIdx+1), "Iterable", "Collection", "Cl", "List", "L")
&& eqGetOneOf(tok, nIdx+3, "or", "/")
&& eqGetOneOf(tok, nIdx+5, "O", "Object")
})) != null) {
i = r.start+1;
S mainType = tok.get(i);
S altType = joinSubList(tok, i+4, r.end-3);
S argName = tok.get(r.end-2);
S converter = "asList";
S expr = converter + "(" + argName + ")";
tok_expandMultiTypeArgument(tok, i, r.end, argName, mainType, altType, expr);
}
}