01: /*
02: This source file is part of Smyle, a database library.
03: For up-to-date information, see http://www.drjava.de/smyle
04: Copyright (C) 2001 Stefan Reich (doc@drjava.de)
05:
06: This library is free software; you can redistribute it and/or
07: modify it under the terms of the GNU Lesser General Public
08: License as published by the Free Software Foundation; either
09: version 2.1 of the License, or (at your option) any later version.
10:
11: This library is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: Lesser General Public License for more details.
15:
16: You should have received a copy of the GNU Lesser General Public
17: License along with this library; if not, write to the Free Software
18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19:
20: For full license text, see doc/license/lgpl.txt in this distribution
21: */
22:
23: package drjava.smyle.core;
24:
25: public class PrefixKeySet implements KeySet<UniversalKey> {
26: UniversalKey prefix;
27:
28: public PrefixKeySet(UniversalKey prefix) {
29: this .prefix = prefix;
30: }
31:
32: public boolean contains(UniversalKey k) {
33: if (k.data.length < prefix.data.length)
34: return false;
35: for (int i = 0; i < prefix.data.length; i++)
36: if (prefix.data[i] != k.data[i])
37: return false;
38: return true;
39: }
40:
41: public boolean overlapsWithRange(UniversalKey min, UniversalKey max) {
42: if (max != null && max.compareTo(prefix) < 0)
43: return false; // end of range is lower than prefix
44: if (min != null && min.compareTo(prefix) > 0)
45: if (!contains(min))
46: return false; // beginning of range is higher than prefix
47: return true;
48: }
49: }
|