53 template <
typename Tdir, u
int items>
68 SmallSet(
const char *name) : n(0), overflowed(false), name(name) { }
74 this->overflowed =
false;
83 return this->overflowed;
122 for (uint i = 0; i < this->n; i++) {
123 if (this->data[i].tile == tile && this->data[i].dir == dir) {
124 this->data[i] = this->data[--this->n];
140 for (uint i = 0; i < this->n; i++) {
141 if (this->data[i].tile == tile && this->data[i].dir == dir)
return true;
158 DEBUG(misc, 0,
"SignalSegment too complex. Set %s is full (maximum %d)", name, items);
162 this->data[this->n].tile = tile;
163 this->data[this->n].dir = dir;
177 if (this->n == 0)
return false;
180 *tile = this->data[this->n].tile;
181 *dir = this->data[this->n].dir;
221 if (
_tbdset.Remove(t2, d2))
return false;
276 while (
_tbdset.Get(&tile, &enterdir)) {
304 tracks = tracks_masked;
322 if (IsPbsSignal(sig)) {
324 }
else if (!
_tbuset.Add(tile, reversedir)) {
415 while (
_tbuset.Get(&tile, &trackdir)) {
594 _globset.Add(tile, _search_dir_1[track]);
595 _globset.Add(tile, _search_dir_2[track]);