Go to the documentation of this file.
30 template<
class T,
class Addr>
31 template<
class ListType>
43 const label len = addr_.size();
45 if (len != rhs.size())
48 <<
"Addressing and list of addressed elements "
49 "have different sizes: " << len <<
" " << rhs.size()
54 for (label i = 0; i < len; ++i)
56 values_[addr_[i]] = rhs[i];
63 template<
class T,
class Addr>
77 template<
class T,
class Addr>
80 const label len = this->size();
87 const T& val = (*this)[0];
89 for (label i = 1; i < len; ++i)
91 if (val != (*
this)[i])
101 template<
class T,
class Addr>
108 return (this->
find(val,
pos) >= 0);
112 template<
class T,
class Addr>
115 return (i == addr_.size()-1 ? 0 : i+1);
119 template<
class T,
class Addr>
122 return (i ? i-1 : addr_.size()-1);
126 template<
class T,
class Addr>
129 return values_[addr_.first()];
132 template<
class T,
class Addr>
135 return values_[addr_.first()];
139 template<
class T,
class Addr>
142 return values_[addr_.last()];
145 template<
class T,
class Addr>
148 return values_[addr_.last()];
152 template<
class T,
class Addr>
155 return values_[this->fcIndex(i)];
159 template<
class T,
class Addr>
162 return values_[this->fcIndex(i)];
166 template<
class T,
class Addr>
169 return values_[this->rcIndex(i)];
173 template<
class T,
class Addr>
176 return values_[this->rcIndex(i)];
182 template<
class T,
class Addr>
186 const label len = addr_.size();
191 for (label i = 0; i < len; ++i)
193 result[i] = values_[addr_[i]];
200 template<
class T,
class Addr>
203 return values_[addr_[i]];
207 template<
class T,
class Addr>
211 return values_[addr_[i]];
215 template<
class T,
class Addr>
219 for (
const label idx : addr_)
226 template<
class T,
class Addr>
230 for (
const label idx : addr_)
237 template<
class T,
class Addr>
247 template<
class T,
class Addr>
257 template<
class T,
class Addr>
258 template<
class AnyAddr>
List< T > operator()() const
void copyList(const ListType &rhs)
static constexpr const zero Zero
List< T > values(const HashTable< T, Key, Hash > &tbl, const bool doSort=false)
label rcIndex(const label i) const
T & operator[](const label i)
label fcIndex(const label i) const
const T & rcValue(const label i) const
IndirectListBase()=delete
label find(const ListType &input, const UnaryPredicate &pred, const label start=0)
errorManip< error > abort(error &err)
const T & fcValue(const label i) const
#define FatalErrorInFunction
void operator=(const T &val)
Base for lists with indirect addressing, templated on the list contents type and the addressing type....
bool found(const T &val, label pos=0) const
A class representing the concept of 0 (zero) that can be used to avoid manipulating objects known to ...
dimensionedScalar pos(const dimensionedScalar &ds)