Warning: session_start(): open(/var/lib/php/sessions/sess_01nfhc3i1ajj99bfpars4evtd2, 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
sclass ActualThoughtSpace extends AbstractThoughtSpace {
new TripleIndex index;
int limit; // 0 = no limit
L> blockedPatterns = listWithNotify(r { blocked.clear(); });
Map blocked = newWeakHashMap();
*() {}
*(int *limit) {}
*(AbstractThoughtSpace parent) { super(parent); }
// existence of triple has already been checked
public GlobalID postTriple(T3 t) {
if (limitReached()) fail("Thought space limit reached");
TripleWeb w = tripleWeb(t);
index.addTriple(w);
ret w.globalID();
}
bool limitReached() {
ret limit > 0 && size() >= limit;
}
L get(S s) {
L l = filterNonBlocked(parent.get(s));
ret combineLists(l, index.get(ai_shortenForIndex(s)));
}
L> filterNonBlocked(L> l) {
new L> out;
for (TripleRef ref : l)
if (!isBlocked((TripleWeb) ref.triple))
out.add(ref);
ret out;
}
bool isBlocked(TripleWeb t) {
Bool b = blocked.get(t);
if (b != null) ret b;
b = false;
for (T3 pat : blockedPatterns)
if (simpleMatchTriple_dollarVars(pat, t)) {
b = true;
break;
}
blocked.put(t, b);
ret b;
}
int size() { ret l(websByID); }
}