37 template <
class T>
inline
44 template <
class T>
inline
47 itsArray(itsDims.width() * itsDims.height())
51 template <
class T>
inline
54 itsArray(itsDims.width() * itsDims.height(), val)
58 template <
class T>
inline
61 if (&other ==
this)
return;
62 itsDims = other.itsDims;
63 itsArray = other.itsArray;
67 template <
class T>
inline
70 if (&other ==
this)
return;
71 itsDims = std::move(other.itsDims);
72 itsArray = std::move(other.itsArray);
76 template <
class T>
inline
78 itsDims(vals.size() > 0 ? vals.begin()->size() : 0, vals.size()),
79 itsArray(itsDims.width()*itsDims.height())
82 for (std::initializer_list<T>
const & v : vals)
83 for (T
const & vv : v)
88 template <
class T>
inline
91 itsArray(data, dims.width() * dims.height())
95 template <
class T>
inline
100 itsDims = other.itsDims;
101 itsArray = other.itsArray;
107 template <
class T>
inline
112 itsDims = std::move(other.itsDims);
113 itsArray = std::move(other.itsArray);
119 template <
class T>
inline
121 {
for (T & pix : itsArray) pix = val; }
124 template <
class T>
inline
127 return this->begin()[y*itsDims.width() + x];
131 template <
class T>
inline
136 template <
class T>
inline
141 template <
class T>
inline
146 template <
class T>
inline
149 return this->begin()[idx];
153 template <
class T>
inline
158 template <
class T>
inline
161 return this->const_begin()[y*itsDims.width() + x];
165 template <
class T>
inline
167 {
return this->at(p.
x(), p.
y()); }
170 template <
class T>
inline
173 return this->const_begin()[idx];
178 template <
class U>
inline
181 return (x >= 0 && y >= 0 && x < width() && y < height());
186 template <
class U>
inline
194 template <
class U>
inline
197 return (P.
x() >= 0 && P.
y() >= 0 && P.
x() < width() && P.
y() < height());
201 template <
class T>
inline
206 template <
class T>
inline
211 template <
class T>
inline
213 {
return itsDims.width(); }
216 template <
class T>
inline
218 {
return itsDims.height(); }
221 template <
class T>
inline
223 {
return itsArray.size(); }
226 template <
class T>
inline
228 {
return (itsArray.size() == 0); }
231 template <
class T>
inline
234 if (newdims.
size() != size())
throw nrt::exception::BadDimsArray2DException(newdims);
239 template <
class T>
inline
244 template <
class T>
inline
249 template <
class T>
inline
251 {
return itsArray.begin(); }
254 template <
class T>
inline
256 {
return itsArray.end(); }
259 template <
class T>
inline
261 {
return itsArray.const_begin(); }
264 template <
class T>
inline
266 {
return itsArray.const_begin(); }
269 template <
class T>
inline
271 {
return itsArray.const_end(); }
274 template <
class T>
inline
276 {
return itsArray.const_end(); }
279 template <
class T>
inline
281 { itsArray.deepCopy(); }