Warning: session_start(): open(/var/lib/php/sessions/sess_tjqm1nv27olfd87d8nl8k0tj45, 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
static boolean findFunctionInvocations_debug;
// these prefix tokens mark a non-invocation (TODO: expand)
static Set findFunctionInvocations_pre = new HashSet(litlist(".", "void", "S", "String", "int", "bool", "boolean", "A", "Object", "O"));
static Set findFunctionInvocations(S src, SS sf) {
ret findFunctionInvocations(javaTok(src), sf);
}
static Set findFunctionInvocations(L tok, SS sf) {
ret findFunctionInvocations(tok, sf, null);
}
// sf = set of functions to search for or null for any function
static Set findFunctionInvocations(L tok, SS sf, Collection hardReferences) {
ret findFunctionInvocations(tok, sf, hardReferences, null);
}
static Set findFunctionInvocations(L tok, SS sf, Collection hardReferences, Set haveFunctions) {
ret findFunctionInvocations(tok, sf, hardReferences, haveFunctions, false);
}
static Set findFunctionInvocations(L tok, SS sf, Collection hardReferences, Set haveFunctions, bool includePossiblyMapLikes) {
new LinkedHashSet l;
for (int i : jfindAll(tok, "please include functions")) {
int j = i + 6;
while licensed {
String fname = tok.get(j);
assertIdentifier("in please include functions section", get(tok, j));
l.add(fname);
add(hardReferences, fname);
j += 2;
if (eqGet(tok, j, ".")) break;
if (!eqOneOf(get(tok, j), ",", "and"))
fail("bad token 'please include functions' section: " + get(tok, j));
j += 2;
}
clearAllTokens(tok.subList(i, j+2));
}
for (int i : jfindAll(tok, "please include function *.")) {
String fname = tok.get(i+6);
l.add(fname);
add(hardReferences, fname);
clearAllTokens(tok.subList(i, i+10));
}
int i, n = tok.size();
boolean result = false;
for (i = 1; i+2 < n; i += 2) {
S f = tok.get(i);
if (!isIdentifier_quick(f)) continue;
// main.bla()
if ("main".equals(f) && eq(tok.get(i+2), ".") && eqGet(tok, i+4, "<")) {
i = findEndOfTypeArgs(tok, i+4)+1;
f = tok.get(i);
if (!isIdentifier(f)) continue;
}
if (findFunctionInvocations_debug)
print("Testing identifier " + f);
// e.g. ... html_findLIs(LS [auto htmlTok] tok) { ... }
if (eqGet(tok, i-4, "[") && eqGet(tok, i-2, "auto")) {
// ok
} else if (eqGet(tok, i-2, ":") && eqGet(tok, i-4, ":") && eqGet(tok, i-6, "main")) {
// ok, function reference (main::bla)
} else if (eqGet(tok, i+2, "(")) {
// ok, normal function invocation
} else if (includePossiblyMapLikes && eqGet(tok, i+4, "(") && isIdentifier(get(tok, i+2))) {
// ok, mapLike invocation (bla blubb(...))
} else
// not an invocation
continue;
if (i == 1
|| !findFunctionInvocations_pre.contains(tok.get(i-2))
|| eqGet(tok, i-2, ".") && eqGet(tok, i-4, "main")) {
boolean inSF = sf == null || sf.containsKey(f);
if (findFunctionInvocations_debug)
print("Possible invocation: " + f + ", inSF: " + inSF);
if (inSF && !contains(haveFunctions, f) && l.add(f))
if (findFunctionInvocations_debug)
print("Found reference to standard function " + f + ": " + lineAroundToken(tok, i));
}
}
return l;
}