11 #include "wvlinklist.h"
48 WvString((!str)? WvString::empty: str)
51 Segment(
const Segment &
segment) :
58 return *
this ==
"*" || *
this ==
"...";
67 SegmentVector(
int size) :
70 vec(
new Segment[_size])
78 void resize(
int size,
int shift = 0)
84 for (
int i=_used-1; i>=0; --i)
85 vec[i+shift] = vec[i];
90 Segment *old_vec = vec;
91 vec =
new Segment[size];
94 int limit = size-shift;
99 for (
int i=0; i<limit; ++i)
100 vec[i+shift] = old_vec[i];
127 void replace(
int index,
const Segment &segment)
135 replace(index, Segment(
string));
137 const Segment &operator [](
int index)
const
145 SegmentVector segments;
148 Store(
int size,
int _ref_count,
WvStringParm key = WvString::null);
154 static Store EMPTY_store;
155 static Store ANY_store;
156 static Store RECURSIVE_ANY_store;
158 UniConfKey(Store *_store,
int _left,
int _right) :
193 store(new Store(4, 1, key)),
195 right(store->segments.used())
211 right(store->segments.used())
219 right(store->segments.used())
244 if (--store->ref_count == 0)
266 return right == left;
275 return right > left && !store->segments[right-1];
299 return range(n, n + 1);
337 return range(n, INT_MAX);
386 if (--store->ref_count == 0)
477 {
return seg >= 0 && seg < max; }
480 { seg++; curseg = key.
segment(seg);
return cur(); }
488 #endif // __UNICONFKEY_H