Warning: session_start(): open(/var/lib/php/sessions/sess_931klcldccg04vrq2bcnaqh3j5, 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 CCI_Choice extends CharacterClassIterator {
bool canEndHere;
// can be a HashMap or TreeMap (e.g. with special comparator)
Map map;
// computed on demand
CharRange acceptedCharRange;
*() {}
*(bool canEndHere, Map *map) {}
CharacterClassIterator acceptChar(char c) {
ret assertNotNull(map.get(c));
}
bool canEndHere() {
ret canEndHere;
}
bool canAcceptChar(char c) {
ret map.containsKey(c);
}
CharRange acceptedCharRange() {
if (empty(map)) null;
if (acceptedCharRange == null)
acceptedCharRange = calcAcceptedCharRange();
ret acceptedCharRange;
}
CharRange calcAcceptedCharRange {
if (map cast TreeMap)
ret CharRange(firstKey(map), lastKey(map));
else {
char min = 0xFFFF, max = 0;
for (char c : keys(map)) {
if (c < min) min = c;
if (c > max) max = c;
}
ret CharRange(min, max);
}
}
// object is immutable, so no cloning necessary
CharacterClassIterator cloneCCI() {
this;
}
}