Line data Source code
1 : /* iterator.vala
2 : *
3 : * Copyright (C) 2007-2008 Jürg Billeter
4 : *
5 : * This library is free software; you can redistribute it and/or
6 : * modify it under the terms of the GNU Lesser General Public
7 : * License as published by the Free Software Foundation; either
8 : * version 2.1 of the License, or (at your option) any later version.
9 :
10 : * This library is distributed in the hope that it will be useful,
11 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 : * Lesser General Public License for more details.
14 :
15 : * You should have received a copy of the GNU Lesser General Public
16 : * License along with this library; if not, write to the Free Software
17 : * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 : *
19 : * Author:
20 : * Jürg Billeter <j@bitron.ch>
21 : */
22 :
23 : /**
24 : * Implemented by classes that support a simple iteration over instances of the
25 : * collection.
26 : */
27 26881756 : public abstract class Vala.Iterator<G> {
28 : /**
29 : * Advances to the next element in the iteration.
30 : *
31 : * @return true if the iterator has a next element
32 : */
33 18623833 : public abstract bool next ();
34 :
35 : /**
36 : * Checks whether there is a next element in the iteration.
37 : *
38 : * @return ``true`` if the iterator has a next element
39 : */
40 17170269 : public abstract bool has_next ();
41 :
42 : /**
43 : * Returns the current element in the iteration.
44 : *
45 : * @return the current element in the iteration
46 : */
47 10079921 : public abstract G? get ();
48 :
49 : /**
50 : * Removes the current element in the iteration. The cursor is set in an
51 : * in-between state. Both {@link get} and {@link remove} will fail until
52 : * the next move of the cursor (calling {@link next}).
53 : */
54 0 : public abstract void remove ();
55 :
56 : /**
57 : * Determines whether the call to {@link get} is legal. It is false at the
58 : * beginning and after {@link remove} call and true otherwise.
59 : */
60 0 : public abstract bool valid { get; }
61 : }
62 :
|