01: /* LongSet
02: *
03: * $Id: LongFPSet.java 3437 2005-05-06 02:49:04Z stack-sf $
04: *
05: * Created on Oct 19, 2003
06: *
07: * Copyright (C) 2003 Internet Archive.
08: *
09: * This file is part of the Heritrix web crawler (crawler.archive.org).
10: *
11: * Heritrix is free software; you can redistribute it and/or modify
12: * it under the terms of the GNU Lesser Public License as published by
13: * the Free Software Foundation; either version 2.1 of the License, or
14: * any later version.
15: *
16: * Heritrix is distributed in the hope that it will be useful,
17: * but WITHOUT ANY WARRANTY; without even the implied warranty of
18: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19: * GNU Lesser Public License for more details.
20: *
21: * You should have received a copy of the GNU Lesser Public License
22: * along with Heritrix; if not, write to the Free Software
23: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24: */
25: package org.archive.util.fingerprint;
26:
27: /**
28: * Set for holding primitive long fingerprints.
29: *
30: * @author Gordon Mohr
31: */
32: public interface LongFPSet {
33: /**
34: * Add a fingerprint to the set. Note that subclasses can implement
35: * different policies on how to add - some might grow the available space,
36: * others might implement some type of LRU caching.
37: *
38: * In particular, you cannot on the {@link #count()} method returning
39: * 1 greater than before the addition.
40: *
41: * @param l the fingerprint to add
42: * @return <code>true</code> if set has changed with this addition
43: */
44: boolean add(long l);
45:
46: /**
47: * Does this set contain a given fingerprint.
48: * @param l the fingerprint to check for
49: * @return <code>true</code> if the fingerprint is in the set
50: */
51: boolean contains(long l);
52:
53: /**
54: * Remove a fingerprint from the set, if it is there
55: * @param l the fingerprint to remove
56: * @return <code>true</code> if we removed the fingerprint
57: */
58: boolean remove(long l);
59:
60: /** get the number of elements in the Set
61: * @return the number of elements in the Set
62: */
63: long count();
64:
65: /**
66: * Do a contains() check that doesn't require laggy
67: * activity (eg disk IO). If this returns true,
68: * fp is definitely contained; if this returns
69: * false, fp *MAY* still be contained -- must use
70: * full-cost contains() to be sure.
71: *
72: * @param fp the fingerprint to check for
73: * @return <code>true</code> if contains the fingerprint
74: */
75: boolean quickContains(long fp);
76: }
|