1917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul/*
2917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul * Copyright (C) 2008 The Android Open Source Project
3917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul *
4917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul * Licensed under the Apache License, Version 2.0 (the "License");
5917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul * you may not use this file except in compliance with the License.
6917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul * You may obtain a copy of the License at
7917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul *
8917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul *      http://www.apache.org/licenses/LICENSE-2.0
9917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul *
10917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul * Unless required by applicable law or agreed to in writing, software
11917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul * distributed under the License is distributed on an "AS IS" BASIS,
12917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul * See the License for the specific language governing permissions and
14917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul * limitations under the License.
15917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul */
16917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul
17917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgulpackage com.android.dexgen.util;
18917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul
19917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul/**
20917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul * A set of integers
21917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul */
22917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgulpublic interface IntSet {
23917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul
24917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    /**
25917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * Adds an int to a set
26917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     *
27917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * @param value int to add
28917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     */
29917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    void add(int value);
30917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul
31917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    /**
32917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * Removes an int from a set.
33917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     *
34917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * @param value int to remove
35917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     */
36917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    void remove(int value);
37917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul
38917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    /**
39917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * Checks to see if a value is in the set
40917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     *
41917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * @param value int to check
42917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * @return true if in set
43917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     */
44917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    boolean has(int value);
45917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul
46917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    /**
47917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * Merges {@code other} into this set, so this set becomes the
48917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * union of the two.
49917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     *
50917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * @param other {@code non-null;} other set to merge with.
51917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     */
52917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    void merge(IntSet other);
53917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul
54917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    /**
55917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * Returns the count of unique elements in this set.
56917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     *
57917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * @return {@code > = 0;} count of unique elements
58917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     */
59917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    int elements();
60917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul
61917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    /**
62917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * Iterates the set
63917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     *
64917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     * @return {@code non-null;} a set iterator
65917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul     */
66917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul    IntIterator iterator();
67917cb222329ee8c035c3ffaf947e4265761b9367Piotr Gurgul}
68