Warning: session_start(): open(/var/lib/php/sessions/sess_dle18piu0sp2hfhi0meu16upu4, 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 SynchronizedDoubleBuffer is Iterable, IntSize {
double[] data;
int size;
*() {}
*(int size) { if (size != 0) data = new double[size]; }
*(Iterable l) { addAll(l); }
*(Cl l) { this(l(l)); addAll(l); }
*(double... data) { this.data = data; size = l(data); }
synchronized void add(double i) {
if (size >= lDoubleArray(data)) {
data = resizeDoubleArray(data, Math.max(1, toInt(Math.min(maximumSafeArraySize(), lDoubleArray(data)*2L))));
if (size >= data.length) fail("DoubleBuffer too large: " + size);
}
data[size++] = i;
}
synchronized void addAll(Iterable l) {
if (l != null) for (double i : l) add(i);
}
synchronized double[] toArray() {
ret size == 0 ? null : resizeDoubleArray(data, size);
}
double[] toArrayNonNull() {
ret unnull(toArray());
}
synchronized L toList() {
ret doubleArrayToList(data, 0, size);
}
synchronized L asVirtualList() {
ret new RandomAccessAbstractList {
public int size() { ret SynchronizedDoubleBuffer.this.size(); }
public Double get(int i) { ret SynchronizedDoubleBuffer.this.get(i); }
public Double set(int i, Double val) {
synchronized(SynchronizedDoubleBuffer.this) {
Double a = get(i);
data[i] = val;
ret a;
}
}
};
}
synchronized void reset { size = 0; }
void clear { reset(); }
public synchronized int size() { ret size; }
synchronized bool isEmpty() { ret size == 0; }
synchronized double get(int idx) {
if (idx >= size) fail("Index out of range: " + idx + "/" + size);
ret data[idx];
}
synchronized void set(int idx, double value) {
if (idx >= size) fail("Index out of range: " + idx + "/" + size);
data[idx] = value;
}
synchronized double popLast() {
if (size == 0) fail("empty buffer");
ret data[--size];
}
synchronized double last() { ret data[size-1]; }
synchronized double nextToLast() { ret data[size-2]; }
toString { ret squareBracket(joinWithSpace(toList())); }
public Iterator iterator() {
ret new ItIt {
int i = 0;
public bool hasNext() { ret i < size(); }
public Double next() {
synchronized(SynchronizedDoubleBuffer.this) {
//if (!hasNext()) fail("Index out of bounds: " + i);
ret data[i++];
}
}
};
}
/*public DoubleIterator doubleIterator() {
ret new DoubleIterator {
int i = 0;
public bool hasNext() { ret i < size; }
public int next() {
//if (!hasNext()) fail("Index out of bounds: " + i);
ret data[i++];
}
toString { ret "Iterator@" + i + " over " + DoubleBuffer.this; }
};
}*/
synchronized void trimToSize {
data = resizeDoubleArray(data, size);
}
synchronized int indexOf(double b) {
for i to size:
if (data[i] == b)
ret i;
ret -1;
}
synchronized double[] subArray(int start, int end) {
ret subDoubleArray(data, start, min(end, size));
}
}