Warning: session_start(): open(/var/lib/php/sessions/sess_so56g6ah99e5ff4njca54otdr4, 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
Map blocked = newWeakHashMap();
Set blockedA;
*() {}
*(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) {
ret ai_triplesToTripleRefs_lazyList(s, getTriples(s));
}
L getTriples(S s) {
L l = filterNonBlockedTriples_lazy(parent.getTriples(s));
ret combineLists(l, index.getTriples(ai_shortenForIndex(s)));
}
L filterNonBlockedTriples_lazy(final L l) {
class FilterList extends LazyList {
final int n = l(l);
public int size() { ret n; }
public TripleWeb get(int i) {
TripleWeb w = syncGet(l, i);
if (w != null && isBlocked(w)) null;
ret w;
}
}
ret new FilterList;
}
L filterNonBlockedTriples(L l) {
if (empty(blockedA)) ret l;
L out = emptyListWithCapacity(l);
for (TripleWeb w : l)
if (!isBlocked(w))
out.add(w);
ret out;
}
bool isBlocked(TripleWeb t) {
ret contains(blockedA, t.a);
}
int size() { ret index.size(); }
}