75 #ifndef SLIP_COMPONENT_ITERATOR4D_RANGE_HPP
76 #define SLIP_COMPONENT_ITERATOR4D_RANGE_HPP
106 template <
class MultiComponentContainer4d, std::
size_t N>
112 typedef typename MultiComponentContainer4d::value_type
Block;
120 typedef typename MultiComponentContainer4d::size_type
size_type;
131 cont4d_(0),pos_(0),x1_(0),x2_(0),x3_(0),x4_(0),cp_(0),range_x1_(0,0),range_x2_(0,0)
132 ,range_x3_(0,0),range_x4_(0,0)
155 pos_(&(*c)[0][0][0][0][cp] +
156 (r1.start() * static_cast<int>(c->slices()) * static_cast<int>(c->rows()) * static_cast<int>(c->cols()) * N) +
157 (r2.start() * static_cast<int>(c->rows()) * static_cast<int>(c->cols()) * N) +
158 (r3.start() * static_cast<int>(c->cols()) * N) +
160 x1_(r1.start()),x2_(r2.start()),x3_(r3.start()),x4_(r4.start()),
161 cp_(cp),range_x1_(r1),range_x2_(r2),range_x3_(r3),range_x4_(r4)
170 cont4d_(o.cont4d_),pos_(o.pos_),x1_(o.x1_),x2_(o.x2_),x3_(o.x3_),x4_(o.x4_),cp_(o.cp_),
171 range_x1_(o.range_x1_), range_x2_(o.range_x2_), range_x3_(o.range_x3_), range_x4_(o.range_x4_)
192 this->cont4d_ = o.cont4d_;
199 this->range_x1_ = o.range_x1_;
200 this->range_x2_ = o.range_x2_;
201 this->range_x3_ = o.range_x3_;
202 this->range_x4_ = o.range_x4_;
239 this->x4_+= range_x4_.
stride();
240 this->pos_+= range_x4_.
stride()*N;
244 this->x3_+= range_x3_.
stride();
245 this->x4_ = range_x4_.
start();
246 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
247 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
248 * static_cast<int>(cont4d_->cols()) * N) +
249 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
250 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
254 this->x2_+= range_x2_.
stride();
255 this->x3_ = range_x3_.
start();
256 this->x4_ = range_x4_.
start();
257 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
258 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
259 * static_cast<int>(cont4d_->cols()) * N) +
260 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
261 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
265 this->x1_+= range_x1_.
stride();
266 this->x2_ = range_x2_.
start();
267 this->x3_ = range_x3_.
start();
268 this->x4_ = range_x4_.
start();
269 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
270 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
271 * static_cast<int>(cont4d_->cols()) * N) +
272 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
273 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
281 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
282 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
283 * static_cast<int>(cont4d_->cols()) * N) +
284 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
285 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
321 this->x4_ -= range_x4_.
stride();
322 this->pos_ -= N * range_x4_.
stride();
324 else if (x3_ > static_cast<int>(range_x3_.
stop() - range_x3_.
iterations() * range_x3_.
stride()))
327 this->x3_ -= range_x3_.
stride();
328 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
329 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
330 * static_cast<int>(cont4d_->cols()) * N) +
331 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
332 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
335 else if (x2_ > static_cast<int>(range_x2_.
stop() - range_x2_.
iterations() * range_x2_.
stride()))
339 this->x2_ -= range_x2_.
stride();
340 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
341 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
342 * static_cast<int>(cont4d_->cols()) * N) +
343 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
344 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
347 else if (x1_ > static_cast<int>(range_x1_.
stop() - range_x1_.
iterations() * range_x1_.
stride()))
352 this->x1_ -= range_x1_.
stride();
353 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
354 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
355 * static_cast<int>(cont4d_->cols()) * N) +
356 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
357 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
361 this->x4_ =
static_cast<int>(range_x4_.
stop() + (range_x4_.
iterations() + 1) * range_x4_.
stride());
362 this->x3_ =
static_cast<int>(range_x3_.
stop() + (range_x3_.
iterations() + 1) * range_x3_.
stride());
363 this->x2_ =
static_cast<int>(range_x2_.
stop() + (range_x2_.
iterations() + 1) * range_x2_.
stride());
364 this->x1_ =
static_cast<int>(range_x1_.
stop() + (range_x1_.
iterations() + 1) * range_x1_.
stride());
365 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
366 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
367 * static_cast<int>(cont4d_->cols()) * N) +
368 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
369 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
407 return ( (i1.cont4d_ == i2.cont4d_) && (i1.pos_ == i2.pos_)
408 && (i1.x1_ == i2.x1_) && (i1.x2_ == i2.x2_) && (i1.x3_ == i2.x3_)
409 && (i1.x4_ == i2.x4_) && (i1.cp_ == i2.cp_));
422 return ( (i1.cont4d_ != i2.cont4d_) || (i1.pos_ != i2.pos_)
423 || (i1.x1_ != i2.x1_) || (i1.x2_ != i2.x2_)
424 || (i1.x3_ != i2.x3_) || (i1.x4_ != i2.x4_) || (i1.cp_ != i2.cp_));
443 return ( i1.pos_ < i2.pos_);
504 this->x1_ += this->range_x1_.
stride() * d.
dx1();
505 this->x2_ += this->range_x2_.
stride() * d.
dx2();
506 this->x3_ += this->range_x3_.
stride() * d.
dx3();
507 this->x4_ += this->range_x4_.
stride() * d.
dx4();
508 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
509 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
510 * static_cast<int>(cont4d_->cols()) * N) +
511 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
512 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
527 this->x1_ -= this->range_x1_.
stride() * d.
dx1();
528 this->x2_ -= this->range_x2_.
stride() * d.
dx2();
529 this->x3_ -= this->range_x3_.
stride() * d.
dx3();
530 this->x4_ -= this->range_x4_.
stride() * d.
dx4();
531 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
532 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
533 * static_cast<int>(cont4d_->cols()) * N) +
534 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
535 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
582 assert(i1.range_x1_.stride() == i2.range_x1_.stride());
583 assert(i1.range_x2_.stride() == i2.range_x2_.stride());
584 assert(i1.range_x3_.stride() == i2.range_x3_.stride());
585 assert(i1.range_x4_.stride() == i2.range_x4_.stride());
586 return difference_type(static_cast<int>((i1.x1_ - i2.x1_)/i1.range_x1_.stride()),
587 static_cast<int>((i1.x2_ - i2.x2_))/i1.range_x2_.stride(),
588 static_cast<int>((i1.x3_ - i2.x3_))/i1.range_x3_.stride(),
589 static_cast<int>((i1.x4_ - i2.x4_))/i1.range_x4_.stride());
604 assert( (this->x1_+ range_x1_.
stride() * d.
dx1()) < cont4d_->dim1() );
605 assert( (this->x2_+ range_x2_.
stride() * d.
dx2()) < cont4d_->dim2() );
606 assert( (this->x3_+ range_x3_.
stride() * d.
dx3()) < cont4d_->dim3() );
607 assert( (this->x4_+ range_x4_.
stride() * d.
dx4()) < cont4d_->dim4() );
608 return (*cont4d_)[this->x1_+ range_x1_.
stride() * d.
dx1()]
609 [this->x2_+ range_x2_.
stride() * d.
dx2()]
610 [this->x3_+ range_x3_.
stride() * d.
dx3()]
611 [this->x4_+ range_x4_.
stride() * d.
dx4()][cp_];
624 typename MultiComponentContainer4d::component_slice_range_iterator
627 return cont4d_->slice_begin(this->cp_,
645 typename MultiComponentContainer4d::component_slice_range_iterator
662 typename MultiComponentContainer4d::component_slice_range_iterator
665 return cont4d_->slice_begin(this->cp_,
683 typename MultiComponentContainer4d::component_slice_range_iterator
700 typename MultiComponentContainer4d::component_row_range_iterator
703 return cont4d_->row_begin(this->cp_,
721 typename MultiComponentContainer4d::component_row_range_iterator
739 typename MultiComponentContainer4d::component_col_range_iterator
742 return cont4d_->col_begin(this->cp_,
759 typename MultiComponentContainer4d::component_col_range_iterator
867 MultiComponentContainer4d* cont4d_;
899 template <
class MultiComponentContainer4d, std::
size_t N>
905 typedef typename MultiComponentContainer4d::value_type
Block;
913 typedef typename MultiComponentContainer4d::size_type
size_type;
924 cont4d_(0),pos_(0),x1_(0),x2_(0),x3_(0),x4_(0),cp_(0),range_x1_(0,0),range_x2_(0,0)
925 ,range_x3_(0,0),range_x4_(0,0)
947 pos_(&(*c)[0][0][0][0][cp] +
948 (r1.start() * static_cast<int>(c->slices()) * static_cast<int>(c->rows())
949 * static_cast<int>(c->cols()) * N) +
950 (r2.start() * static_cast<int>(c->rows()) * static_cast<int>(c->cols()) * N) +
951 (r3.start() * static_cast<int>(c->cols()) * N) +
953 x1_(r1.start()),x2_(r2.start()),x3_(r3.start()),x4_(r4.start()),
954 cp_(cp),range_x1_(r1),range_x2_(r2),range_x3_(r3),range_x4_(r4)
963 cont4d_(o.cont4d_),pos_(o.pos_),x1_(o.x1_),x2_(o.x2_),x3_(o.x3_),x4_(o.x4_),cp_(o.cp_),
964 range_x1_(o.range_x1_), range_x2_(o.range_x2_), range_x3_(o.range_x3_), range_x4_(o.range_x4_)
985 this->cont4d_ = o.cont4d_;
992 this->range_x1_ = o.range_x1_;
993 this->range_x2_ = o.range_x2_;
994 this->range_x3_ = o.range_x3_;
995 this->range_x4_ = o.range_x4_;
1036 this->x4_+= range_x4_.
stride();
1037 this->pos_+= range_x4_.
stride()*N;
1041 this->x3_+= range_x3_.
stride();
1042 this->x4_ = range_x4_.
start();
1043 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
1044 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
1045 * static_cast<int>(cont4d_->cols()) * N) +
1046 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
1047 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
1051 this->x2_+= range_x2_.
stride();
1052 this->x3_ = range_x3_.
start();
1053 this->x4_ = range_x4_.
start();
1054 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
1055 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
1056 * static_cast<int>(cont4d_->cols()) * N) +
1057 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
1058 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
1062 this->x1_+= range_x1_.
stride();
1063 this->x2_ = range_x2_.
start();
1064 this->x3_ = range_x3_.
start();
1065 this->x4_ = range_x4_.
start();
1066 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
1067 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
1068 * static_cast<int>(cont4d_->cols()) * N) +
1069 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
1070 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
1074 this->x1_ =
static_cast<int>(range_x1_.
start() + (range_x1_.
iterations() + 1) * range_x1_.
stride());
1075 this->x2_ =
static_cast<int>(range_x2_.
start() + (range_x2_.
iterations() + 1) * range_x2_.
stride());
1076 this->x3_ =
static_cast<int>(range_x3_.
start() + (range_x3_.
iterations() + 1) * range_x3_.
stride());
1077 this->x4_ =
static_cast<int>(range_x4_.
start() + (range_x4_.
iterations() + 1) * range_x4_.
stride());
1078 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
1079 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
1080 * static_cast<int>(cont4d_->cols()) * N) +
1081 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
1082 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
1118 this->x4_ -= range_x4_.
stride();
1119 this->pos_ -= N * range_x4_.
stride();
1121 else if (x3_ > static_cast<int>(range_x3_.
stop() - range_x3_.
iterations() * range_x3_.
stride()))
1124 this->x3_ -= range_x3_.
stride();
1125 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
1126 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
1127 * static_cast<int>(cont4d_->cols()) * N) +
1128 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
1129 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
1132 else if (x2_ > static_cast<int>(range_x2_.
stop() - range_x2_.
iterations() * range_x2_.
stride()))
1136 this->x2_ -= range_x2_.
stride();
1137 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
1138 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
1139 * static_cast<int>(cont4d_->cols()) * N) +
1140 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
1141 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
1144 else if (x1_ > static_cast<int>(range_x1_.
stop() - range_x1_.
iterations() * range_x1_.
stride()))
1149 this->x1_ -= range_x1_.
stride();
1150 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
1151 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
1152 * static_cast<int>(cont4d_->cols()) * N) +
1153 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
1154 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
1158 this->x4_ =
static_cast<int>(range_x4_.
stop() + (range_x4_.
iterations() + 1) * range_x4_.
stride());
1159 this->x3_ =
static_cast<int>(range_x3_.
stop() + (range_x3_.
iterations() + 1) * range_x3_.
stride());
1160 this->x2_ =
static_cast<int>(range_x2_.
stop() + (range_x2_.
iterations() + 1) * range_x2_.
stride());
1161 this->x1_ =
static_cast<int>(range_x1_.
stop() + (range_x1_.
iterations() + 1) * range_x1_.
stride());
1162 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
1163 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
1164 * static_cast<int>(cont4d_->cols()) * N) +
1165 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
1166 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
1204 return ( (i1.cont4d_ == i2.cont4d_) && (i1.pos_ == i2.pos_)
1205 && (i1.x1_ == i2.x1_) && (i1.x2_ == i2.x2_)
1206 && (i1.x3_ == i2.x3_) && (i1.x4_ == i2.x4_)
1207 && (i1.cp_ == i2.cp_));
1220 return ( (i1.cont4d_ != i2.cont4d_) || (i1.pos_ != i2.pos_)
1221 || (i1.x1_ != i2.x1_) || (i1.x2_ != i2.x2_)
1222 || (i1.x3_ != i2.x3_) || (i1.x4_ != i2.x4_)
1223 || (i1.cp_ != i2.cp_));
1242 return ( i1.pos_ < i2.pos_);
1305 this->x1_ += this->range_x1_.
stride() * d.
dx1();
1306 this->x2_ += this->range_x2_.
stride() * d.
dx2();
1307 this->x3_ += this->range_x3_.
stride() * d.
dx3();
1308 this->x4_ += this->range_x4_.
stride() * d.
dx4();
1309 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
1310 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
1311 * static_cast<int>(cont4d_->cols()) * N) +
1312 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
1313 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
1328 this->x1_ -= this->range_x1_.
stride() * d.
dx1();
1329 this->x2_ -= this->range_x2_.
stride() * d.
dx2();
1330 this->x3_ -= this->range_x3_.
stride() * d.
dx3();
1331 this->x4_ -= this->range_x4_.
stride() * d.
dx4();
1332 this->pos_ = &(*cont4d_)[0][0][0][0][this->cp_] +
1333 (this->x1_ *
static_cast<int>(cont4d_->slices()) * static_cast<int>(cont4d_->rows())
1334 * static_cast<int>(cont4d_->cols()) * N) +
1335 (this->x2_ *
static_cast<int>(cont4d_->rows()) * static_cast<int>(cont4d_->cols()) * N) +
1336 (this->x3_ *
static_cast<int>(cont4d_->cols()) * N) +
1383 assert(i1.range_x1_.stride() == i2.range_x1_.stride());
1384 assert(i1.range_x2_.stride() == i2.range_x2_.stride());
1385 assert(i1.range_x3_.stride() == i2.range_x3_.stride());
1386 assert(i1.range_x4_.stride() == i2.range_x4_.stride());
1387 return difference_type(static_cast<int>((i1.x1_ - i2.x1_)/i1.range_x1_.stride()),
1388 static_cast<int>((i1.x2_ - i2.x2_))/i1.range_x2_.stride(),
1389 static_cast<int>((i1.x3_ - i2.x3_))/i1.range_x3_.stride(),
1390 static_cast<int>((i1.x4_ - i2.x4_))/i1.range_x4_.stride());
1404 assert( (this->x1_+ range_x1_.
stride() * d.
dx1()) < cont4d_->dim1() );
1405 assert( (this->x2_+ range_x2_.
stride() * d.
dx2()) < cont4d_->dim2() );
1406 assert( (this->x3_+ range_x3_.
stride() * d.
dx3()) < cont4d_->dim3() );
1407 assert( (this->x4_+ range_x4_.
stride() * d.
dx4()) < cont4d_->dim4() );
1408 return (*cont4d_)[this->x1_+ range_x1_.
stride() * d.
dx1()]
1409 [this->x2_+ range_x2_.
stride() * d.
dx2()]
1410 [this->x3_+ range_x3_.
stride() * d.
dx3()]
1411 [this->x4_+ range_x4_.
stride() * d.
dx4()][cp_];
1424 typename MultiComponentContainer4d::const_component_slice_range_iterator
1427 return cont4d_->slice_begin(this->cp_,
1445 typename MultiComponentContainer4d::const_component_slice_range_iterator
1462 typename MultiComponentContainer4d::const_component_slice_range_iterator
1465 return cont4d_->slice_begin(this->cp_,
1483 typename MultiComponentContainer4d::const_component_slice_range_iterator
1500 typename MultiComponentContainer4d::const_component_row_range_iterator
1503 return cont4d_->row_begin(this->cp_,
1521 typename MultiComponentContainer4d::const_component_row_range_iterator
1539 typename MultiComponentContainer4d::const_component_col_range_iterator
1542 return cont4d_->col_begin(this->cp_,
1559 typename MultiComponentContainer4d::const_component_col_range_iterator
1662 MultiComponentContainer4d* cont4d_;
1680 #endif //SLIP_COMPONENT_ITERATOR4D_RANGE_HPP
friend bool operator<(const self &i1, const self &i2)
< operator.
self & operator+=(const difference_type &d)
component_iterator4d_range addition.
reference operator*()
Dereference assignment operator. Returns the element that the current component_iterator4d_range i po...
int t() const
Access to the first index of the current const_component_iterator4d_range.
std::size_t iterations() const
Rerturns the number of iterations of the range.
int x1() const
Access to the first index of the current component_iterator4d_range.
friend bool operator>(const self &i1, const self &i2)
operator.
const_component_iterator4d_range(const self &o)
Constructs a copy of the const_component_iterator4d_range o.
MultiComponentContainer4d::component_row_range_iterator row_end(size_type slab, size_type slice, size_type row)
component_iterator4d_range element assignment operator.
MultiComponentContainer4d::const_component_row_range_iterator row_begin(size_type slab, size_type slice, size_type row)
const_component_iterator4d_range element assignment operator.
self operator-(const difference_type &d)
component_iterator4d_range substraction.
int j() const
Access to the fourth index of the current const_component_iterator4d_range.
self & operator-=(const difference_type &d)
component_iterator4d_range substraction.
friend bool operator>=(const self &i1, const self &i2)
>= operator.
friend bool operator>=(const self &i1, const self &i2)
>= operator.
MultiComponentContainer4d::const_component_slice_range_iterator slice_begin(size_type slab, size_type row, size_type col)
const_component_iterator4d_range element assignment operator.
MultiComponentContainer4d::component_col_range_iterator col_begin(size_type slab, size_type slice, size_type col)
component_iterator4d_range element assignment operator.
int x2() const
Access to the second index of the current component_iterator4d_range.
MultiComponentContainer4d::value_type Block
friend bool operator!=(const self &i1, const self &i2)
Inequality operator.
const_component_iterator4d_range(MultiComponentContainer4d *c, std::size_t cp, const slip::Range< int > &r1, const slip::Range< int > &r2, const slip::Range< int > &r3, const slip::Range< int > &r4)
Constructs a const_component_iterator4d_range.
int j() const
Access to the fourthindex of the current component_iterator4d_range.
self & operator+=(const difference_type &d)
const_component_iterator4d_range addition.
int k() const
Access to the second index of the current const_component_iterator4d_range.
self operator--(int)
Postdecrement a const_component_iterator4d_range. Iterate to the previous location inside the Range4d...
Provides a class to tag SLIP iterators.
self & operator-=(const difference_type &d)
const_component_iterator4d_range substraction.
Provides a class to modelize 4d points.
MultiComponentContainer4d::component_slice_range_iterator slab_end(size_type slice, size_type row, size_type col)
component_iterator4d_range element assignment operator.
MultiComponentContainer4d::const_component_col_range_iterator col_end(size_type slab, size_type slice, size_type col)
const_component_iterator4d_range element assignment operator.
MultiComponentContainer4d::const_component_slice_range_iterator slice_end(size_type slab, size_type row, size_type col)
const_component_iterator4d_range element assignment operator.
std::random_access_iterator4d_tag iterator_category
MultiComponentContainer4d::size_type size_type
component_iterator4d_range(const self &o)
Constructs a copy of the component_iterator4d_range o.
self & operator=(const self &o)
Assign a component_iterator4d_range.
friend bool operator<(const self &i1, const self &i2)
< operator.
self & operator++()
Preincrement a const_component_iterator4d_range. Iterate to the next location inside the Range...
This is some iterator to iterate a 4d container into two Range defined by the indices and strides of ...
self & operator++()
Preincrement a component_iterator4d_range. Iterate to the next location inside the Range...
MultiComponentContainer4d::component_slice_range_iterator slab_begin(size_type slice, size_type row, size_type col)
component_iterator4d_range element assignment operator.
friend bool operator<=(const self &i1, const self &i2)
<= operator.
self operator+(const difference_type &d)
const_component_iterator4d_range addition.
friend bool operator>(const self &i1, const self &i2)
operator.
void dx2(const CoordType &dx)
Accessor of the second coordinate of DPoint4d.
friend bool operator!=(const self &i1, const self &i2)
Inequality operator.
component_iterator4d_range(MultiComponentContainer4d *c, std::size_t cp, const slip::Range< int > &r1, const slip::Range< int > &r2, const slip::Range< int > &r3, const slip::Range< int > &r4)
Constructs a component_iterator4d_range.
void dx1(const CoordType &dx)
Accessor of the first coordinate of DPoint4d.
pointer operator->() const
Difference of Point4D class, specialization of DPoint<CoordType,DIM> with DIM = 4.
friend bool operator==(const self &i1, const self &i2)
Equality operator.
Provides a class to modelize the difference of 4d points.
self & operator--()
Predecrement a component_iterator4d_range. Iterate to the previous location inside the Range4d...
MultiComponentContainer4d::const_component_slice_range_iterator slab_end(size_type slice, size_type row, size_type col)
const_component_iterator4d_range element assignment operator.
friend difference_type operator-(const self &i1, const self &i2)
const_component_iterator4d_range difference operator.
int t() const
Access to the first index of the current component_iterator4d_range.
MultiComponentContainer4d::size_type size_type
int k() const
Access to the second index of the current component_iterator4d_range.
reference operator[](difference_type d)
component_iterator4d_range element assignment operator. Equivalent to *(i + d) = t.
SubType start() const
Accessor of the start subscript of the Range.
component_iterator4d_range()
Constructs a component_iterator4d_range.
int x1() const
Access to the first index of the current const_component_iterator4d_range.
int cp() const
Access to the component index of the current const_component_iterator4d_box.
void dx3(const CoordType &dx)
Accessor of the third coordinate of DPoint4d.
int i() const
Access to the third index of the current component_iterator4d_range.
friend bool operator==(const self &i1, const self &i2)
Equality operator.
reference operator*() const
Dereference operator. Returns the element that the current const_component_iterator4d_range i point t...
MultiComponentContainer4d::const_component_col_range_iterator col_begin(size_type slab, size_type slice, size_type col)
const_component_iterator4d_range element assignment operator.
This is some iterator to iterate a 4d container into two Range defined by the indices and strides of ...
int x4() const
Access to the fourth index of the current const_component_iterator4d_range.
friend difference_type operator-(const self &i1, const self &i2)
component_iterator4d_range difference operator.
int x3() const
Access to the third index of the current component_iterator4d_range.
MultiComponentContainer4d::component_slice_range_iterator slice_end(size_type slab, size_type row, size_type col)
component_iterator4d_range element assignment operator.
void dx4(const CoordType &dx)
Accessor of the fourth coordinate of DPoint4d.
friend bool operator<=(const self &i1, const self &i2)
<= operator.
self operator++(int)
Postincrement a component_iterator4d_range. Iterate to the next location inside the Range4d...
int x4() const
Access to the fourth index of the current component_iterator4d_range.
MultiComponentContainer4d::component_col_range_iterator col_end(size_type slab, size_type slice, size_type col)
component_iterator4d_range element assignment operator.
int cp() const
Access to the component index of the current component_iterator4d_range.
MultiComponentContainer4d::component_row_range_iterator row_begin(size_type slab, size_type slice, size_type row)
component_iterator4d_range element assignment operator.
self operator-(const difference_type &d)
const_component_iterator4d_range substraction.
std::random_access_iterator4d_tag iterator_category
MultiComponentContainer4d::value_type Block
int stride() const
Accessor of the stride of the Range.
int x3() const
Access to the third index of the current const_component_iterator4d_range.
const_component_iterator4d_range()
Constructs a const_component_iterator4d_range.
self & operator--()
Predecrement a const_component_iterator4d_range. Iterate to the previous location inside the Range4d...
reference operator[](difference_type d) const
const_component_iterator4d_range element assignment operator. Equivalent to *(i + d)...
self & operator=(const self &o)
Assign a const_component_iterator4d_range.
int i() const
Access to the third index of the current const_component_iterator4d_range.
Block::value_type value_type
DPoint4d< int > difference_type
value_type const & reference
MultiComponentContainer4d::const_component_slice_range_iterator slab_begin(size_type slice, size_type row, size_type col)
const_component_iterator4d_range element assignment operator.
value_type const * pointer
MultiComponentContainer4d::const_component_row_range_iterator row_end(size_type slab, size_type slice, size_type row)
const_component_iterator4d_range element assignment operator.
self operator++(int)
Postincrement a const_component_iterator4d_range. Iterate to the next location inside the Range4d...
Block::value_type value_type
Provides a class to manipulate Ranges.
int x2() const
Access to the second index of the current const_component_iterator4d_range.
DPoint4d< int > difference_type
SubType stop() const
Accessor of the stop subscript of the Range.
self operator--(int)
Postdecrement a component_iterator4d_range. Iterate to the previous location inside the Range4d...
self operator+(const difference_type &d)
component_iterator4d_range addition.
MultiComponentContainer4d::component_slice_range_iterator slice_begin(size_type slab, size_type row, size_type col)
component_iterator4d_range element assignment operator.