132
|
1 /*
|
|
2 File: GuardIterator.d
|
|
3
|
|
4 Originally written by Doug Lea and released into the public domain.
|
|
5 Thanks for the assistance and support of Sun Microsystems Labs, Agorics
|
|
6 Inc, Loral, and everyone contributing, testing, and using this code.
|
|
7
|
|
8 History:
|
|
9 Date Who What
|
|
10 24Sep95 dl@cs.oswego.edu Create from collections.d working file
|
|
11
|
|
12 */
|
|
13
|
|
14
|
|
15 module tango.util.collection.model.GuardIterator;
|
|
16
|
|
17 private import tango.util.collection.model.Iterator;
|
|
18
|
|
19 /**
|
|
20 *
|
|
21 * CollectionIterator extends the standard java.util.Iterator
|
|
22 * interface with two additional methods.
|
|
23 *
|
|
24 author: Doug Lea
|
|
25 * @version 0.93
|
|
26 *
|
|
27 * <P> For an introduction to this package see <A HREF="index.html"> Overview </A>.
|
|
28 *
|
|
29 **/
|
|
30
|
|
31 public interface GuardIterator(V) : Iterator!(V)
|
|
32 {
|
|
33 /**
|
|
34 * Return true if the collection that constructed this enumeration
|
|
35 * has been detectably modified since construction of this enumeration.
|
|
36 * Ability and precision of detection of this condition can vary
|
|
37 * across collection class implementations.
|
|
38 * more() is false whenever corrupted is true.
|
|
39 *
|
|
40 * Returns: true if detectably corrupted.
|
|
41 **/
|
|
42
|
|
43 public bool corrupted();
|
|
44
|
|
45 /**
|
|
46 * Return the number of elements in the enumeration that have
|
|
47 * not yet been traversed. When corrupted() is true, this
|
|
48 * number may (or may not) be greater than zero even if more()
|
|
49 * is false. Exception recovery mechanics may be able to
|
|
50 * use this as an indication that recovery of some sort is
|
|
51 * warranted. However, it is not necessarily a foolproof indication.
|
|
52 * <P>
|
|
53 * You can also use it to pack enumerations into arrays. For example:
|
|
54 * <PRE>
|
|
55 * Object arr[] = new Object[e.numberOfRemainingElement()]
|
|
56 * int i = 0;
|
|
57 * while (e.more()) arr[i++] = e.value();
|
|
58 * </PRE>
|
|
59 * <P>
|
|
60 * For the converse case,
|
|
61 * See_Also: tango.util.collection.iterator.ArrayIterator.ArrayIterator
|
|
62 * Returns: the number of untraversed elements
|
|
63 **/
|
|
64
|
|
65 public uint remaining();
|
|
66 }
|
|
67
|
|
68
|
|
69 public interface PairIterator(K, V) : GuardIterator!(V)
|
|
70 {
|
|
71 alias GuardIterator!(V).get get;
|
|
72 alias GuardIterator!(V).opApply opApply;
|
|
73
|
|
74 public V get (inout K key);
|
|
75
|
|
76 int opApply (int delegate (inout K key, inout V value) dg);
|
|
77 }
|
|
78
|