Clover Coverage Report
Coverage timestamp: mer. juin 27 2007 07:27:16 CEST
0   176   1   -
0   27   -   0
0     -  
1    
 
  IVec       Line # 35 0 1 - -1.0
 
No Tests
 
1    /*
2    * SAT4J: a SATisfiability library for Java Copyright (C) 2004-2006 Daniel Le Berre
3    *
4    * Based on the original minisat specification from:
5    *
6    * An extensible SAT solver. Niklas E?n and Niklas S?rensson. Proceedings of the
7    * Sixth International Conference on Theory and Applications of Satisfiability
8    * Testing, LNCS 2919, pp 502-518, 2003.
9    *
10    * This library is free software; you can redistribute it and/or modify it under
11    * the terms of the GNU Lesser General Public License as published by the Free
12    * Software Foundation; either version 2.1 of the License, or (at your option)
13    * any later version.
14    *
15    * This library is distributed in the hope that it will be useful, but WITHOUT
16    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17    * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
18    * details.
19    *
20    * You should have received a copy of the GNU Lesser General Public License
21    * along with this library; if not, write to the Free Software Foundation, Inc.,
22    * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23    *
24    */
25   
26    package org.sat4j.specs;
27   
28    import java.util.Comparator;
29   
30    /**
31    * An abstraction on the type of vector used in the library.
32    *
33    * @author leberre
34    */
 
35    public interface IVec<T> extends Iterable<T> {
36    /**
37    * @return the number of elements contained in the vector
38    */
39    int size();
40   
41    /**
42    * Remove nofelems from the Vector. It is assumed that the number of
43    * elements to remove is smaller or equals to the current number of elements
44    * in the vector
45    *
46    * @param nofelems
47    * the number of elements to remove.
48    */
49    void shrink(int nofelems);
50   
51    /**
52    * reduce the Vector to exactly newsize elements
53    *
54    * @param newsize
55    * the new size of the vector.
56    */
57    void shrinkTo(final int newsize);
58   
59    /**
60    * Pop the last element on the stack. It is assumed that the stack is not
61    * empty!
62    */
63    void pop();
64   
65    void growTo(final int newsize, final T pad);
66   
67    void ensure(final int nsize);
68   
69    IVec<T> push(final T elem);
70   
71    /**
72    * To push an element in the vector when you know you have space for it.
73    *
74    * @param elem
75    */
76    void unsafePush(T elem);
77   
78    /**
79    * Insert an element at the very begining of the vector. The former first
80    * element is appended to the end of the vector in order to have a constant
81    * time operation.
82    *
83    * @param elem
84    * the element to put first in the vector.
85    */
86    void insertFirst(final T elem);
87   
88    void insertFirstWithShifting(final T elem);
89   
90    void clear();
91   
92    /**
93    * return the latest element on the stack. It is assumed that the stack is
94    * not empty!
95    *
96    * @return the last (top) element on the stack
97    */
98    T last();
99   
100    T get(int i);
101   
102    void set(int i, T o);
103   
104    /**
105    * Enleve un element qui se trouve dans le vecteur!!!
106    *
107    * @param elem
108    * un element du vecteur
109    */
110    void remove(T elem);
111   
112    /**
113    * Delete the ith element of the vector. The latest element of the vector
114    * replaces the removed element at the ith indexer.
115    *
116    * @param i
117    * the indexer of the element in the vector
118    * @return the former ith element of the vector that is now removed from the
119    * vector
120    */
121    T delete(int i);
122   
123    /**
124    * Ces operations devraient se faire en temps constant. Ce n'est pas le
125    * cas ici.
126    *
127    * @param copy
128    */
129    void copyTo(IVec<T> copy);
130   
131    <E> void copyTo(E[] dest);
132   
133    /**
134    * Allow to access the internal representation of the vector as an array.
135    * Note that only the content of index 0 to size() should be taken into
136    * account. USE WITH CAUTION
137    *
138    * @return the internal represnetation of the Vector as an array.
139    */
140    T[] toArray();
141   
142    /**
143    * Move the content of the vector into dest. Note that the vector become
144    * empty. The content of the vector is appended to dest.
145    *
146    * @param dest
147    * the vector where top put the content of this vector
148    */
149    void moveTo(IVec<T> dest);
150   
151    /**
152    * Move elements inside the vector. The content of the method is equivalent
153    * to: <code>vec[dest] = vec[source]</code>
154    *
155    * @param dest
156    * the index of the destination
157    * @param source
158    * the index of the source
159    */
160    void moveTo(int dest, int source);
161   
162    /*
163    * @param comparator
164    */
165    void sort(Comparator<T> comparator);
166   
167    void sortUnique(Comparator<T> comparator);
168   
169    /**
170    * To know if a vector is empty
171    *
172    * @return true iff the vector is empty.
173    * @since 1.6
174    */
175    boolean isEmpty();
176    }