21 #ifndef ELM_ARRAY_TABLE_H_
22 #define ELM_ARRAY_TABLE_H_
24 #include <elm/assert.h>
25 #include <elm/PreIterator.h>
26 #include <elm/array.h>
27 #include <elm/compare.h>
28 #include <elm/data/util.h>
58 inline bool ended(
void)
const {
return p >=
t; }
83 inline bool ended(
void)
const {
return p <
b; }
113 {
for(
auto x: *
this)
if(x == item)
return true;
return false; }
115 {
for(
auto x: c)
if(!
contains(x))
return false;
return true; }
119 if(
cnt != a.
cnt)
return false;
120 for(
auto i =
begin(), j = a.
begin(); i(); ++i, ++j)
121 if(*i != *j)
return false;
133 inline const T&
get(
int idx)
const { ASSERT(0 <= idx && idx <
cnt);
return buf[idx]; }
134 inline int indexOf(
const T& v,
int i = 0)
const
135 {
for(; i <
count(); i++)
if(v ==
get(i))
return i;
return -1; }
137 {
if(i < 0) i =
count() - 1;
for(; i >= 0; i--)
if(v ==
get(i))
return i;
return -1; }
141 inline void set(
int idx,
const T& val) { ASSERT(0 <= idx && idx <
cnt);
buf[idx] = val; }
143 inline T&
get(
int idx) { ASSERT(0 <= idx && idx <
cnt);
return buf[idx]; }
~AllocArray(void)
Definition: Array.h:168
AllocArray(int count, T *buffer)
Definition: Array.h:163
AllocArray< T > & operator=(const Array< T > &t)
Definition: Array.h:176
AllocArray(int count)
Definition: Array.h:164
void tie(const Array< T > &t)
Definition: Array.h:174
void copy(const Array< T > &t)
Definition: Array.h:170
AllocArray(const Array< T > &t)
Definition: Array.h:166
AllocArray(const AllocArray< T > &t)
Definition: Array.h:167
AllocArray< T > & operator=(const AllocArray< T > &t)
Definition: Array.h:177
AllocArray(void)
Definition: Array.h:162
AllocArray(int count, const T &val)
Definition: Array.h:165
void tie(int cnt, T *buffer)
Definition: Array.h:173
const T & item() const
Definition: Array.h:93
T & item() const
Definition: Array.h:100
BackMutIter(self_t &a, bool e)
Definition: Array.h:99
BackMutIter(self_t &a)
Definition: Array.h:98
BackPreIter(const Array< T > &table)
Definition: Array.h:81
BackPreIter(const Array< T > &table, bool end)
Definition: Array.h:82
const T * b
Definition: Array.h:87
void next(void)
Definition: Array.h:84
BackPreIter()
Definition: Array.h:80
const T * p
Definition: Array.h:87
bool equals(const BackPreIter &i) const
Definition: Array.h:85
bool ended(void) const
Definition: Array.h:83
const T & item() const
Definition: Array.h:68
MutIter(self_t &a)
Definition: Array.h:73
T & item() const
Definition: Array.h:75
MutIter(self_t &a, bool e)
Definition: Array.h:74
PreIter(const Array< T > &table)
Definition: Array.h:56
PreIter(const Array< T > &table, bool end)
Definition: Array.h:57
void next(void)
Definition: Array.h:59
PreIter()
Definition: Array.h:55
bool equals(const PreIter &i) const
Definition: Array.h:60
const T * p
Definition: Array.h:62
const T * t
Definition: Array.h:62
bool ended(void) const
Definition: Array.h:58
bool containsAll(const C &c)
Definition: Array.h:114
T & get(int idx)
Definition: Array.h:143
void set(const MutIter &i, const T &val)
Definition: Array.h:142
bool operator>=(const Array< T > &a) const
Definition: Array.h:128
bool operator<=(const Array< T > &a) const
Definition: Array.h:126
const T & get(int idx) const
Definition: Array.h:133
T t
Definition: Array.h:35
void fill(const T &val)
Definition: Array.h:47
MutIter end(void)
Definition: Array.h:146
void set(int idx, const T &val)
Definition: Array.h:141
bool operator>(const Array< T > &a) const
Definition: Array.h:129
void set(int count, T *buffer)
Definition: Array.h:44
T * operator()(void)
Definition: Array.h:49
void set(const Array< T > &t)
Definition: Array.h:45
Iter end(void) const
Definition: Array.h:108
int lastIndexOf(const T &v, int i=-1) const
Definition: Array.h:136
MutIter begin(void)
Definition: Array.h:145
Iter operator*(void) const
Definition: Array.h:106
Iterable< BackMutIter > back()
Definition: Array.h:147
Iterable< BackIter > back() const
Definition: Array.h:109
void copy(const Array &t)
Definition: Array.h:46
bool operator<(const Array< T > &a) const
Definition: Array.h:127
Iter begin(void) const
Definition: Array.h:107
int count(void) const
Definition: Array.h:111
bool equals(const Array< T > &a) const
Definition: Array.h:118
const T * operator()(void) const
Definition: Array.h:48
T * buf
Definition: Array.h:152
int length(void) const
Definition: Array.h:132
const T & operator[](int idx) const
Definition: Array.h:138
int cnt
Definition: Array.h:151
Iter items(void) const
Definition: Array.h:105
const T * buffer(void) const
Definition: Array.h:41
Array(int count, T *buffer)
Definition: Array.h:39
Array< T > & operator=(const Array< T > &t)
Definition: Array.h:50
bool operator!=(const Array< T > &a) const
Definition: Array.h:125
T * buffer(void)
Definition: Array.h:42
Array(void)
Definition: Array.h:38
bool operator==(const Array< T > &a) const
Definition: Array.h:124
Array< T > self_t
Definition: Array.h:36
int size(void) const
Definition: Array.h:43
int indexOf(const T &v, int i=0) const
Definition: Array.h:134
bool isEmpty(void) const
Definition: Array.h:116
T & operator[](int idx)
Definition: Array.h:144
bool contains(const T &item)
Definition: Array.h:112
Array< T > _array(int n, T t[])
Definition: Array.h:181
const T & min(const T &x, const T &y)
Definition: compare.h:104
void copy(T *target, const T *source, int size)
Definition: array.h:70
void set(T *target, int size, const T &v)
Definition: array.h:76
Iterable< I > subiter(const I &b, const I &e)
Definition: util.h:231