Release 0.41.92
[vala-gnome.git] / gee / iterator.vala
blob224fa6281f5dd24a6bf29a5cb74d2bf976613797
1 /* iterator.vala
3 * Copyright (C) 2007-2008 Jürg Billeter
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.
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.
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
19 * Author:
20 * Jürg Billeter <j@bitron.ch>
23 /**
24 * Implemented by classes that support a simple iteration over instances of the
25 * collection.
27 public abstract class Vala.Iterator<G> {
28 /**
29 * Advances to the next element in the iteration.
31 * @return true if the iterator has a next element
33 public abstract bool next ();
35 /**
36 * Checks whether there is a next element in the iteration.
38 * @return ``true`` if the iterator has a next element
40 public abstract bool has_next ();
42 /**
43 * Returns the current element in the iteration.
45 * @return the current element in the iteration
47 public abstract G? get ();
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}).
54 public abstract void remove ();
56 /**
57 * Determines wheather the call to {@link get} is legal. It is false at the
58 * beginning and after {@link remove} call and true otherwise.
60 public abstract bool valid { get; }