21 #ifndef OTAWA_UTIL_BAG_H
22 #define OTAWA_UTIL_BAG_H
24 #include <elm/assert.h>
25 #include <elm/util/array.h>
26 #include <elm/genstruct/Vector.h>
27 #include <elm/util/Pair.h>
36 inline Give(
int c, T *a): cnt(c), arr(a) { }
38 inline int count(
void)
const {
return cnt; }
39 inline T *
array(
void)
const {
return arr; }
50 inline Bag(
void): cnt(0), arr(0) { }
52 inline Bag(
int c,
const T *a) {
copy(c, a); }
56 inline Bag(
const Give<T>& g): cnt(g.count()), arr(g.array()) { }
60 inline bool isEmpty(
void)
const {
return cnt == 0; }
61 inline operator bool(
void)
const {
return !isEmpty(); }
62 inline int count(
void)
const {
return cnt; }
63 inline int size(
void)
const {
return count(); }
64 inline const T&
get(
int i)
const { ASSERT(i >= 0 && i < cnt);
return arr[i]; }
65 inline T&
get(
int i) { ASSERT(i >= 0 && i < cnt);
return arr[i]; }
66 inline const T&
operator[](
int i)
const {
return get(i); }
74 inline void clear(
void) {
if(arr)
delete [] arr; }
77 inline void copy(
int c,
const T *a)
80 { cnt = v.
length(); arr =
new T[cnt];
for(
int i = 0; i < cnt; i++) arr[i] = v[i]; }
87 #endif // OTAWA_UTIL_BAG_H
void copy(T *target, const T *source, int size)
void clear(void)
Clear the content of the bag.
Definition: Bag.h:74
T & operator[](int i)
Definition: Bag.h:67
Bag(const Bag &bag)
Clone constructor.
Definition: Bag.h:51
Bag(const Give< T > &g)
Construction from a given array.
Definition: Bag.h:56
Bag & operator=(Pair< int, T * > p)
Definition: Bag.h:72
void copy(int c, const T *a)
Definition: Bag.h:77
Bag & operator=(const genstruct::Vector< T > &v)
Definition: Bag.h:71
Bag(Pair< int, T * > p)
Construction from a pair (array count, array base).
Definition: Bag.h:55
Bag & operator=(const Give< T > &g)
Definition: Bag.h:73
Give(genstruct::Vector< T > &v)
Definition: Bag.h:37
Give(int c, T *a)
Definition: Bag.h:36
Bag(int c, T *a)
Constructor using a raw array.
Definition: Bag.h:53
int cnt
Definition: Bag.h:81
int size(void) const
Same as count().
Definition: Bag.h:63
T * arr
Definition: Bag.h:82
const T & operator[](int i) const
Definition: Bag.h:66
Bag & operator=(const Bag &bag)
Definition: Bag.h:70
bool isEmpty(void) const
Test if the bag is empty.
Definition: Bag.h:60
int cnt
Definition: Bag.h:41
T * arr
Definition: Bag.h:42
void clear(T *target, int size)
Bag(int c, const T *a)
Constructor using a raw array.
Definition: Bag.h:52
void copy(const genstruct::Vector< T > &v)
Definition: Bag.h:79
T * array(void) const
Definition: Bag.h:39
int count(void) const
Definition: Bag.h:38
~Bag(void)
Definition: Bag.h:57
Bag(void)
Empty array constructor.
Definition: Bag.h:50
int count(void) const
Get the count of items in the bag.
Definition: Bag.h:62
Bag(const genstruct::Vector< T > &v)
Constructor from a vector.
Definition: Bag.h:54