22 #ifndef ELM_GENSTRUCT_FIXARRAY_H_
23 #define ELM_GENSTRUCT_FIXARRAY_H_
25 #include <elm/util/Equiv.h>
26 #include <elm/array.h>
28 template <
class T,
int S,
class E = Equiv<T> >
36 class Iterator:
public PreIterator<Iterator, const T&> {
42 inline bool ended(
void)
const {
return i >= S; }
43 inline const T&
item(
void)
const {
return a->get(i); }
44 inline void next(
void) { i++; }
52 inline int length(
void) {
return S; }
53 inline const T&
get(
int i)
const { ASSERT(i < S);
return t[i]; }
54 inline const T&
operator[](
int i)
const {
return get(i); }
55 inline int indexOf(
const T& v,
int i = 0)
const
56 {
for(; i < S; i++)
if(E::equals(t[i], v))
return i;
return -1; }
58 {
for(i--; i >= 0; i--)
if(E::equals(t[i], v))
return i;
return -1; }
61 inline void set(
int i,
const T& v) { ASSERT(i < S); t[i] = v; }
62 inline void set(
const Iterator& i,
const T& v) {
set(i.i, v); }
63 inline T&
get(
int i) { ASSERT(i < S);
return t[i]; }
65 inline void insert(
int i,
const T& v)
66 { ASSERT(i < S);
Array::copy(t + i + 1, t + i, S - i - 1); t[i] = v; }
67 inline void insert(
const Iterator& i,
const T& v) {
insert(i.i, v); }
69 { ASSERT(i < S);
Array::copy(t + i, t + i + 1, S - i - 1); }
73 inline int count(
void)
const {
return S; }
75 inline bool isEmpty(
void)
const {
return false; }
76 inline operator bool(
void)
const {
return true; }
77 template<
template<
class _>
class C>
bool containsAll(
const C<T> &collection) {
78 for(
typename C<T>::Iterator it(collection); it; it++)
void removeAt(int i)
Definition: FixArray.h:68
Definition: FixArray.h:29
void copy(T *target, const T *source, int size)
Definition: array.h:59
void removeAt(const Iterator &i)
Definition: FixArray.h:70
const T & item(void) const
Definition: FixArray.h:43
bool isEmpty(void) const
Definition: FixArray.h:75
Iterator(const FixArray< T, S, E > &array)
Definition: FixArray.h:38
int lastIndexOf(const T &v, int i=S) const
Definition: FixArray.h:57
void next(void)
Definition: FixArray.h:44
FixArray(const FixArray &array)
Definition: FixArray.h:33
FixArray(void)
Definition: FixArray.h:32
int count(void) const
Definition: FixArray.h:73
bool ended(void) const
Definition: FixArray.h:42
void insert(int i, const T &v)
Definition: FixArray.h:65
int indexOf(const T &v, int i=0) const
Definition: FixArray.h:55
bool containsAll(const C< T > &collection)
Definition: FixArray.h:77
Definition: FixArray.h:36
bool contains(const T &v) const
Definition: FixArray.h:74
const T & operator[](int i) const
Definition: FixArray.h:54
Iterator & operator=(const Iterator &it)
Definition: FixArray.h:40
void set(const Iterator &i, const T &v)
Definition: FixArray.h:62
int length(void)
Definition: FixArray.h:52
Iterator(const Iterator &it)
Definition: FixArray.h:39
void set(int i, const T &v)
Definition: FixArray.h:61
T & operator[](int i)
Definition: FixArray.h:64
void insert(const Iterator &i, const T &v)
Definition: FixArray.h:67