Update libgee to 0.9.92 (3462b25)
[profile/ivi/libgee.git] / gee / multiset.vala
1 /* multiset.vala
2  *
3  * Copyright (C) 2009  Ali Sabil
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  *      Ali Sabil <ali.sabil@gmail.com>
21  */
22
23 /**
24  * A collection with duplicate elements.
25  */
26 [GenericAccessors]
27 public interface Gee.MultiSet<G> : Collection<G> {
28         /**
29          * Returns the number of occurences of an item in this multiset.
30          *
31          * @param item the item to count occurences of
32          *
33          * @return     the number of occurences of the item in this multiset.
34          */
35         public abstract int count (G item);
36
37         /**
38          * The read-only view of this set.
39          */
40         public virtual new MultiSet<G> read_only_view {
41                 owned get {
42                         return new ReadOnlyMultiSet<G> (this);
43                 }
44         }
45
46         /**
47          * Returns an immutable empty set.
48          *
49          * @return an immutable empty set
50          */
51         public static Set<G> empty<G> () {
52                 return new HashSet<G> ().read_only_view;
53         }
54 }
55