75 #ifndef SLIP_GENERICMULTICOMPONENT2D_HPP 
   76 #define SLIP_GENERICMULTICOMPONENT2D_HPP 
  100 #include <boost/serialization/access.hpp> 
  101 #include <boost/serialization/split_member.hpp> 
  102 #include <boost/serialization/version.hpp> 
  107 template<
class Block>
 
  108 class stride_iterator;
 
  110 template<
class Block>
 
  111 class iterator2d_box;
 
  114 class const_iterator2d_box;
 
  117 class const_iterator2d_range;
 
  119 template <
class Block>
 
  122 template <
class Block>
 
  125 template <
class Block>
 
  128 template <
typename Block>
 
  131 template <
typename Block>
 
  134 template <
typename Block>
 
  135 std::ostream& operator<<(std::ostream & out, const slip::GenericMultiComponent2d<Block>& a);
 
  137 template<
typename Block>
 
  141 template<
typename Block>
 
  190 template <
typename Block>
 
  283  static const std::size_t 
DIM = 2;
 
  322                                                   typename Block::const_pointer val);
 
  345   template<
typename InputIterator>
 
  367   template<
typename InputIterator>
 
  370                                                   std::vector<InputIterator> first_iterators_list,
 
  375     this->
fill(first_iterators_list,last);
 
  401                       const Block& val = Block());
 
 2023                                                        const std::size_t row);
 
 2034                                                                      const std::size_t row) 
const;
 
 2045                                                      const std::size_t row);
 
 2056                                                                     const std::size_t row) 
const;
 
 2068                                                                                 const std::size_t row);
 
 2079                                                                                       const std::size_t row) 
const;
 
 2090                                                                       const std::size_t row);
 
 2101                                                                                     const std::size_t row) 
const;
 
 2113                                                        const std::size_t col);
 
 2124                                                                      const std::size_t col) 
const;
 
 2135                                                      const std::size_t col);
 
 2146                                                                    const std::size_t col) 
const;
 
 2159                                                                                 const std::size_t col);
 
 2170                                                                                       const std::size_t col) 
const;
 
 2181                                                                       const std::size_t col);
 
 2192                                                                                     const std::size_t col) 
const;
 
 3009   friend std::ostream& operator<< <>(std::ostream & out, 
const self& a);
 
 3041   self& 
operator=(
const typename Block::value_type& val);
 
 3052     std::fill_n(this->
begin(),
size(),value);
 
 3061   void fill(
const typename Block::pointer value)
 
 3085   template<
typename InputIterator>
 
 3100   template<
typename InputIterator>
 
 3101   void fill(std::vector<InputIterator> first_iterators_list,
 
 3104     std::vector<typename slip::kstride_iterator<typename Block::pointer,Block::SIZE> > iterators_list(Block::SIZE);
 
 3106     for(std::size_t component = 0; component < Block::SIZE; ++component)
 
 3112     while(first_iterators_list[0] != last)
 
 3114                     for(std::size_t component = 0; component < Block::SIZE; ++component)
 
 3116                                 *iterators_list[component]++ = *first_iterators_list[component]++;
 
 3119     iterators_list.clear();
 
 3132   template<
typename InputIterator>
 
 3134                     InputIterator first,
 
 3420     friend class boost::serialization::access;
 
 3421     template<
class Archive>
 
 3422     void save(Archive & ar, 
const unsigned int version)
 const 
 3426     template<
class Archive>
 
 3427     void load(Archive & ar, 
const unsigned int version)
 
 3431     BOOST_SERIALIZATION_SPLIT_MEMBER();
 
 3441   template<
typename Block>
 
 3444     matrix_(new slip::
Matrix<Block>())
 
 3447   template<
typename Block>
 
 3451     matrix_(new slip::
Matrix<Block>(height,width))
 
 3454   template<
typename Block>
 
 3458                                                                                                       typename Block::const_pointer val):
 
 3459     matrix_(new slip::
Matrix<Block>(height,width))
 
 3468                     (*it)[component] = *val++;
 
 3473   template<
typename Block>
 
 3478     matrix_(new slip::
Matrix<Block>(height,width,val))
 
 3481   template<
typename Block>
 
 3486     matrix_(new slip::
Matrix<Block>(height,width,val))   
 
 3489   template<
typename Block>
 
 3492     matrix_(new slip::
Matrix<Block>((*rhs.matrix_)))
 
 3495   template<
typename Block>
 
 3502   template<
typename Block>
 
 3508                 *matrix_ = *(rhs.matrix_);
 
 3513   template<
typename Block>
 
 3517     std::fill_n(matrix_->begin(),matrix_->size(),val);
 
 3521    template<
typename Block>
 
 3525     std::fill_n(matrix_->begin(),matrix_->size(),val);
 
 3529   template<
typename Block>
 
 3535     matrix_->resize(height,width,val);
 
 3539   template<
typename Block>
 
 3543     return matrix_->begin();
 
 3546   template<
typename Block>
 
 3550     return matrix_->end();
 
 3553   template<
typename Block>
 
 3561   template<
typename Block>
 
 3570   template<
typename Block>
 
 3577   template<
typename Block>
 
 3584   template<
typename Block>
 
 3591   template<
typename Block>
 
 3598   template<
typename Block>
 
 3603     return matrix_->row_begin(row);
 
 3606  template<
typename Block>
 
 3608  typename GenericMultiComponent2d<Block>::row_iterator 
 
 3611     return matrix_->row_end(row);
 
 3614   template<
typename Block>
 
 3616   typename GenericMultiComponent2d<Block>::col_iterator 
 
 3619     return matrix_->col_begin(col);
 
 3623   template<
typename Block>
 
 3625   typename GenericMultiComponent2d<Block>::col_iterator
 
 3628     return matrix_->col_end(col);
 
 3632  template<
typename Block>
 
 3634  typename GenericMultiComponent2d<Block>::const_row_iterator
 
 3638     return tp->row_begin(row);
 
 3641  template<
typename Block>
 
 3643  typename GenericMultiComponent2d<Block>::const_row_iterator 
 
 3647     return tp->row_end(row);
 
 3650   template<
typename Block>
 
 3655     return tp->col_begin(col);
 
 3658   template<
typename Block>
 
 3663     return tp->col_end(col);
 
 3667   template<
typename Block>
 
 3669   typename GenericMultiComponent2d<Block>::reverse_row_iterator
 
 3672     return matrix_->row_rbegin(row);
 
 3675   template<
typename Block>
 
 3677   typename GenericMultiComponent2d<Block>::const_reverse_row_iterator 
 
 3681     return tp->row_rbegin(row);
 
 3684   template<
typename Block>
 
 3688     return matrix_->row_rend(row);
 
 3691   template<
typename Block>
 
 3693   typename GenericMultiComponent2d<Block>::const_reverse_row_iterator
 
 3697     return tp->row_rend(row);
 
 3701   template<
typename Block>
 
 3705     return matrix_->col_rbegin(col);
 
 3708   template<
typename Block>
 
 3713     return tp->col_rbegin(col);
 
 3716   template<
typename Block>
 
 3718   typename GenericMultiComponent2d<Block>::reverse_col_iterator 
 
 3721     return matrix_->col_rend(col);
 
 3724   template<
typename Block>
 
 3726   typename GenericMultiComponent2d<Block>::const_reverse_col_iterator
 
 3730     return tp->col_rend(col);
 
 3733   template<
typename Block>
 
 3735   typename GenericMultiComponent2d<Block>::row_range_iterator 
 
 3738     return matrix_->row_begin(row,range);
 
 3741    template<
typename Block>
 
 3743    typename GenericMultiComponent2d<Block>::const_row_range_iterator 
 
 3748      return tp->row_begin(row,range);
 
 3751   template<
typename Block>
 
 3753   typename GenericMultiComponent2d<Block>::col_range_iterator 
 
 3757     return matrix_->col_begin(col,range);
 
 3760    template<
typename Block>
 
 3762    typename GenericMultiComponent2d<Block>::const_col_range_iterator 
 
 3767      return tp->col_begin(col,range);
 
 3771   template<
typename Block>
 
 3773   typename GenericMultiComponent2d<Block>::row_range_iterator 
 
 3777     return matrix_->row_end(row,range);
 
 3780    template<
typename Block>
 
 3782    typename GenericMultiComponent2d<Block>::const_row_range_iterator 
 
 3787      return tp->row_end(row,range);
 
 3790   template<
typename Block>
 
 3792   typename GenericMultiComponent2d<Block>::col_range_iterator 
 
 3796     return matrix_->col_end(col,range);
 
 3799    template<
typename Block>
 
 3801    typename GenericMultiComponent2d<Block>::const_col_range_iterator 
 
 3806      return tp->col_end(col,range);
 
 3809   template<
typename Block>
 
 3811   typename GenericMultiComponent2d<Block>::reverse_row_range_iterator 
 
 3818  template<
typename Block>
 
 3820   typename GenericMultiComponent2d<Block>::const_reverse_row_range_iterator 
 
 3828   template<
typename Block>
 
 3830   typename GenericMultiComponent2d<Block>::reverse_col_range_iterator 
 
 3837   template<
typename Block>
 
 3839   typename GenericMultiComponent2d<Block>::const_reverse_col_range_iterator 
 
 3846   template<
typename Block>
 
 3848   typename GenericMultiComponent2d<Block>::reverse_row_range_iterator 
 
 3855   template<
typename Block>
 
 3857   typename GenericMultiComponent2d<Block>::const_reverse_row_range_iterator 
 
 3865   template<
typename Block>
 
 3867   typename GenericMultiComponent2d<Block>::reverse_col_range_iterator 
 
 3874   template<
typename Block>
 
 3876   typename GenericMultiComponent2d<Block>::const_reverse_col_range_iterator 
 
 3883   template<
typename Block>
 
 3887     return matrix_->upper_left();
 
 3890   template<
typename Block>
 
 3899   template<
typename Block>
 
 3903     return matrix_->bottom_right();
 
 3906   template<
typename Block>
 
 3914   template<
typename Block>
 
 3918     return matrix_->upper_left(box);
 
 3922   template<
typename Block>
 
 3930   template<
typename Block>
 
 3934     return matrix_->bottom_right(box);
 
 3937   template<
typename Block>
 
 3946   template<
typename Block>
 
 3952     return matrix_->upper_left(row_range,col_range);
 
 3955   template<
typename Block>
 
 3965   template<
typename Block>
 
 3971     return matrix_->bottom_right(row_range,col_range);
 
 3974   template<
typename Block>
 
 3984    template<
typename Block>
 
 3989     return matrix_->upper_left(range);
 
 3992   template<
typename Block>
 
 4001   template<
typename Block>
 
 4006     return matrix_->bottom_right(range);
 
 4009   template<
typename Block>
 
 4019    template<
typename Block>
 
 4024     return matrix_->rbottom_right();
 
 4027   template<
typename Block>
 
 4036   template<
typename Block>
 
 4041     return matrix_->rupper_left();
 
 4044   template<
typename Block>
 
 4053   template<
typename Block>
 
 4058     return matrix_->rbottom_right(box);
 
 4061   template<
typename Block>
 
 4070   template<
typename Block>
 
 4075     return matrix_->rupper_left(box);
 
 4078   template<
typename Block>
 
 4087   template<
typename Block>
 
 4093     return matrix_->rupper_left(row_range,col_range);
 
 4096   template<
typename Block>
 
 4106   template<
typename Block>
 
 4112      return matrix_->rbottom_right(row_range,col_range);
 
 4115   template<
typename Block>
 
 4125   template<
typename Block>
 
 4130     return this->rupper_left(range,range);
 
 4133   template<
typename Block>
 
 4142   template<
typename Block>
 
 4147     return this->rbottom_right(range,range);
 
 4150   template<
typename Block>
 
 4163   template<
typename Block>
 
 4171   template<
typename Block>
 
 4173   typename GenericMultiComponent2d<Block>::component_iterator 
 
 4179   template<
typename Block>
 
 4181   typename GenericMultiComponent2d<Block>::const_component_iterator
 
 4187   template<
typename Block>
 
 4189   typename GenericMultiComponent2d<Block>::const_component_iterator
 
 4196   template<
typename Block>
 
 4198   typename GenericMultiComponent2d<Block>::reverse_component_iterator
 
 4204   template<
typename Block>
 
 4206   typename GenericMultiComponent2d<Block>::reverse_component_iterator
 
 4212   template<
typename Block>
 
 4214   typename GenericMultiComponent2d<Block>::const_reverse_component_iterator
 
 4220   template<
typename Block>
 
 4222   typename GenericMultiComponent2d<Block>::const_reverse_component_iterator
 
 4229   template<
typename Block>
 
 4231   typename GenericMultiComponent2d<Block>::component_row_iterator
 
 4233                                                                                      const typename GenericMultiComponent2d<Block>::size_type row)
 
 4238   template<
typename Block>
 
 4240   typename GenericMultiComponent2d<Block>::component_row_iterator
 
 4242                                                                                   const typename GenericMultiComponent2d<Block>::size_type row)
 
 4247   template<
typename Block>
 
 4249   typename GenericMultiComponent2d<Block>::const_component_row_iterator
 
 4251                                                                                     const typename GenericMultiComponent2d<Block>::size_type row)
 const 
 4256   template<
typename Block>
 
 4258   typename GenericMultiComponent2d<Block>::const_component_row_iterator
 
 4260                                                                                   const typename GenericMultiComponent2d<Block>::size_type row)
 const 
 4265   template<
typename Block>
 
 4267   typename GenericMultiComponent2d<Block>::reverse_component_row_iterator
 
 4269                                                                                      const typename GenericMultiComponent2d<Block>::size_type row)
 
 4274   template<
typename Block>
 
 4276    typename GenericMultiComponent2d<Block>::reverse_component_row_iterator
 
 4278                                                                                    const typename GenericMultiComponent2d<Block>::size_type row)
 
 4283   template<
typename Block>
 
 4285   typename GenericMultiComponent2d<Block>::const_reverse_component_row_iterator
 
 4287                                                                                      const typename GenericMultiComponent2d<Block>::size_type row)
 const 
 4292   template<
typename Block>
 
 4294    typename GenericMultiComponent2d<Block>::const_reverse_component_row_iterator
 
 4296                                                                                    const typename GenericMultiComponent2d<Block>::size_type row)
 const 
 4301   template<
typename Block>
 
 4305                                                                                     const typename GenericMultiComponent2d<Block>::size_type col)
 
 4312   template<
typename Block>
 
 4316                                                                                     const typename GenericMultiComponent2d<Block>::size_type col)
 const 
 4322   template<
typename Block>
 
 4326                                                                                   const typename GenericMultiComponent2d<Block>::size_type col)
 
 4332   template<
typename Block>
 
 4336                                                                                   const typename GenericMultiComponent2d<Block>::size_type col)
 const 
 4342   template<
typename Block>
 
 4344   typename GenericMultiComponent2d<Block>::reverse_component_col_iterator
 
 4346                                                                                      const typename GenericMultiComponent2d<Block>::size_type col)
 
 4351   template<
typename Block>
 
 4353    typename GenericMultiComponent2d<Block>::reverse_component_col_iterator
 
 4355                                                                                    const typename GenericMultiComponent2d<Block>::size_type col)
 
 4360   template<
typename Block>
 
 4362   typename GenericMultiComponent2d<Block>::const_reverse_component_col_iterator
 
 4364                                                                                      const typename GenericMultiComponent2d<Block>::size_type col)
 const 
 4369   template<
typename Block>
 
 4371    typename GenericMultiComponent2d<Block>::const_reverse_component_col_iterator
 
 4373                                                                                    const typename GenericMultiComponent2d<Block>::size_type col)
 const 
 4378   template<
typename Block>
 
 4380   typename GenericMultiComponent2d<Block>::component_row_range_iterator 
 
 4387   template<
typename Block>
 
 4396   template<
typename Block>
 
 4405   template<
typename Block>
 
 4414   template<
typename Block>
 
 4423   template<
typename Block>
 
 4432   template<
typename Block>
 
 4441   template<
typename Block>
 
 4450   template<
typename Block>
 
 4459   template<
typename Block>
 
 4468   template<
typename Block>
 
 4477   template<
typename Block>
 
 4486   template<
typename Block>
 
 4495   template<
typename Block>
 
 4505   template<
typename Block>
 
 4514   template<
typename Block>
 
 4523   template<
typename Block>
 
 4531   template<
typename Block>
 
 4541   template<
typename Block>
 
 4549   template<
typename Block>
 
 4559   template<
typename Block>
 
 4568   template<
typename Block>
 
 4576   template<
typename Block>
 
 4585   template<
typename Block>
 
 4594   template<
typename Block>
 
 4603   template<
typename Block>
 
 4613   template<
typename Block>
 
 4622   template<
typename Block>
 
 4632   template<
typename Block>
 
 4642   template<
typename Block>
 
 4653   template<
typename Block>
 
 4663   template<
typename Block>
 
 4674   template<
typename Block>
 
 4683   template<
typename Block>
 
 4693   template<
typename Block>
 
 4702   template<
typename Block>
 
 4712   template<
typename Block>
 
 4722   template<
typename Block>
 
 4733   template<
typename Block>
 
 4743   template<
typename Block>
 
 4758   template <
typename Block>
 
 4763     out<<*(a.matrix_)<<std::endl;
 
 4767   template<
typename Block>
 
 4771     return (*matrix_)[i];
 
 4774   template<
typename Block>
 
 4778     return (*matrix_)[i];
 
 4781   template<
typename Block>
 
 4784                                                                                                     const typename GenericMultiComponent2d<Block>::size_type j)
 
 4786     return (*matrix_)[i][j];
 
 4789   template<
typename Block>
 
 4792                                                                                                                   const typename GenericMultiComponent2d<Block>::size_type j)
 const 
 4794     return (*matrix_)[i][j];
 
 4797   template<
typename Block>
 
 4801     return (*matrix_)(point2d);
 
 4804   template<
typename Block>
 
 4808     return (*matrix_)(point2d);
 
 4811   template<
typename Block>
 
 4813   GenericMultiComponent2d<Block> 
 
 4817     assert((*
this)[0] != 0);
 
 4819     assert(row_range.
start() < int(this->dim2()));
 
 4820     assert(row_range.
stop()  < int(this->dim2()));
 
 4822     assert(col_range.
start() < int(this->dim1()));
 
 4823     assert(col_range.
stop()  < int(this->dim1()));
 
 4827                                        matrix_->bottom_right(row_range,col_range));
 
 4830   template<
typename Block>
 
 4834   template<
typename Block>
 
 4838   template<
typename Block>
 
 4842   template<
typename Block>
 
 4846   template<
typename Block>
 
 4850   template<
typename Block>
 
 4854   template<
typename Block>
 
 4858   template<
typename Block>
 
 4862   template<
typename Block>
 
 4867   template<
typename Block>
 
 4871   template<
typename Block>
 
 4875     matrix_->swap(*(M.matrix_));
 
 4880   template<
typename Block>
 
 4887                 typename Block::value_type 
min = *std::min_element(this->begin(component),this->end(component));
 
 4888                 tmp[component] = 
min;
 
 4894   template<
typename Block>
 
 4901                 typename Block::value_type 
max = *std::max_element(this->begin(component),this->end(component));
 
 4902                 tmp[component] = 
max;
 
 4908   template<
typename Block>
 
 4912     matrix_->apply(fun);
 
 4916   template<
typename Block>
 
 4920     matrix_->apply(fun);
 
 4925   template<
typename Block>
 
 4934   template<
typename Block>
 
 4984 #endif //SLIP_GENERICMULTICOMPONENT2D_HPP 
bool operator!=(const Array< T > &x, const Array< T > &y)
 
std::size_t iterations() const 
Rerturns the number of iterations of the range. 
 
reverse_iterator rbegin()
Returns a read/write reverse iterator that points to the last element in the GenericMultiComponent2d...
 
Provides a class to modelize the difference of slip::Point2d. 
 
CoordType height() const 
compute the height of the Box2d. 
 
void fill(const Block *value)
Fills the container range [begin(),begin()+size()) with a copy of the value array. 
 
iterator2d upper_left()
Returns a read/write iterator2d that points to the first element of the Matrix. It points to the uppe...
 
iterator begin()
Returns a read/write iterator that points to the first element in the GenericMultiComponent2d. Iteration is done in ordinary element order. 
 
value_type const & const_reference
 
std::reverse_iterator< component_col_iterator > reverse_component_col_iterator
 
iterator2d default_iterator
 
This is a GenericMultiComponent2d class. This container statisfies the BidirectionnalContainer concep...
 
Block min() const 
Returns the min elements of the GenericMultiComponent2d according to the operator <...
 
std::reverse_iterator< const_component_col_iterator > const_reverse_component_col_iterator
 
reference operator()(const size_type i, const size_type j)
Subscript access to the data contained in the GenericMultiComponent2d. 
 
size_type cols() const 
Returns the number of columns (second dimension size) in the GenericMultiComponent2d. 
 
slip::kstride_iterator< typename Block::const_pointer, Block::SIZE > const_component_iterator
 
std::reverse_iterator< const_iterator > const_reverse_row_iterator
 
slip::Matrix< Block >::iterator2d_range iterator2d_range
 
col_iterator col_begin(const size_type col)
Returns a read/write iterator that points to the first element of the column column in the GenericMul...
 
slip::stride_iterator< const_block_pointer > const_component_col_iterator
 
slip::component_iterator2d_box< self, Block::SIZE > component_iterator2d
 
void resize(const size_type height, const size_type width, const Block &val=Block())
Resizes a GenericMultiComponent2d. 
 
const GenericMultiComponent2d< Block > const_self
 
static const std::size_t COMPONENTS
 
std::reverse_iterator< const_component_iterator2d > const_reverse_component_iterator2d
 
Provides a class to manipulate 2d box. 
 
component_iterator component_row_iterator
 
reverse_row_iterator row_rbegin(const size_type row)
Returns a read/write reverse iterator that points to the last element of the row row in the GenericMu...
 
std::reverse_iterator< const_component_col_range_iterator > const_reverse_component_col_range_iterator
 
This is some iterator to iterate a 2d container into two Range defined by the indices and strides of ...
 
This is a Vector3d struct. It is a specialization of kvector. It implements some specific 3d operatio...
 
iterator2d bottom_right()
Returns a read/write iterator2d that points to the past the end element of the Matrix. It points to past the end element of the bottom right element of the Matrix. 
 
T & min(const GrayscaleImage< T > &M1)
Returns the min element of a GrayscaleImage. 
 
reverse_iterator2d rupper_left()
Returns a read/write reverse iterator2d. It points to the bottom right element of the GenericMultiCom...
 
iterator begin()
Returns a read/write iterator that points to the first element in the Matrix. Iteration is done in or...
 
Provides a class to manipulate iterator2d within a slip::Box2d. It is used to iterate throw 2d contai...
 
Block max() const 
Returns the max elements of the GenericMultiComponent2d according to the operator <...
 
size_type dim2() const 
Returns the number of columns (second dimension size) in the GenericMultiComponent2d. 
 
std::reverse_iterator< component_col_range_iterator > reverse_component_col_range_iterator
 
CoordType width() const 
compute the width of the Box2d. 
 
slip::stride_iterator< const_pointer > const_col_iterator
 
row_iterator row_begin(const size_type row)
Returns a read/write iterator that points to the first element of the row row in the GenericMultiComp...
 
reverse_iterator rend()
Returns a read/write reverse iterator that points to one before the first element in the GenericMulti...
 
Block::value_type block_value_type
 
const block_value_type const_block_reference
 
std::reverse_iterator< col_iterator > reverse_col_iterator
 
bool empty() const 
Returns true if the GenericMultiComponent2d is empty. (Thus size() == 0) 
 
size_type size() const 
Returns the number of elements in the GenericMultiComponent2d. 
 
slip::stride_iterator< const_block_pointer > const_component_col_range_iterator
 
const block_value_type * const_block_pointer
 
row_iterator row_end(const size_type row)
Returns a read/write iterator that points one past the end element of the row row in the GenericMulti...
 
void swap(self &M)
Swaps data with another GenericMultiComponent2d. 
 
Provides a class to iterate a 1d range according to a constant step. 
 
GenericMultiComponent2d< Block > & apply(Block(*fun)(Block))
Returns the sums of the elements of the GenericMultiComponent2d. 
 
std::reverse_iterator< const_iterator > const_reverse_iterator
 
slip::stride_iterator< pointer > col_iterator
 
std::reverse_iterator< row_range_iterator > reverse_row_range_iterator
 
Provides some algorithms to compare ranges. 
 
std::reverse_iterator< const_col_range_iterator > const_reverse_col_range_iterator
 
This is some iterator to iterate a 2d container into two Range defined by the indices and strides of ...
 
self & operator=(const self &rhs)
Assign a GenericMultiComponent2d. 
 
This is a point2d class, a specialized version of Point<CoordType,DIM> with DIM = 2...
 
This is some iterator to iterate a 2d MultiComponentContainer into a Box area defined by the indices ...
 
size_type height() const 
Returns the height (first dimension size) in the GenericMultiComponent2d. 
 
ptrdiff_t difference_type
 
size_type dim1() const 
Returns the number of rows (first dimension size) in the GenericMultiComponent2d. ...
 
std::reverse_iterator< const_iterator2d > const_reverse_iterator2d
 
This is some iterator to iterate a 2d container into a Box area defined by the indices of the 2d cont...
 
slip::const_component_iterator2d_range< const_self, Block::SIZE > const_component_iterator2d_range
 
reverse_col_iterator col_rend(const size_type col)
Returns a read/write reverse iterator that points one past the first element of the column column in ...
 
slip::Matrix< Block >::const_iterator2d const_iterator2d
 
void fill(std::size_t component, InputIterator first, InputIterator last)
Fills the container range [begin(),begin()+size()) with a copy of the range [first,last) 
 
Provides a class to iterate a 2d multicomponent container into two Ranges. 
 
std::reverse_iterator< const_col_iterator > const_reverse_col_iterator
 
reverse_row_iterator row_rend(const size_type row)
Returns a read/write reverse iterator that points one past the first element of the row row in the Ge...
 
const_iterator2d const_default_iterator
 
std::reverse_iterator< const_iterator2d_range > const_reverse_iterator2d_range
 
void fill(InputIterator first, InputIterator last)
Fills the container range [begin(),begin()+size()) with a copy of the range [first,last) 
 
std::reverse_iterator< component_iterator > reverse_component_iterator
 
const_pointer const_row_iterator
 
void copy(_II first, _II last, _OI output_first)
Copy algorithm optimized for slip iterators. 
 
Difference of Point2D class, specialization of DPoint<CoordType,DIM> with DIM = 2. 
 
bool is_valid() const 
Returns true if the range is valid : 
 
std::reverse_iterator< const_component_row_iterator > const_reverse_component_row_iterator
 
SubType start() const 
Accessor of the start subscript of the Range. 
 
block_value_type & block_reference
 
col_iterator col_end(const size_type col)
Returns a read/write iterator that points one past the end element of the column column in the Generi...
 
Provides a class to iterate a 2d MultiComponentContainer into a slip::Box2d. 
 
slip::stride_iterator< block_pointer > component_col_range_iterator
 
slip::stride_iterator< const_col_iterator > const_col_range_iterator
 
std::reverse_iterator< component_row_range_iterator > reverse_component_row_range_iterator
 
std::reverse_iterator< const_row_range_iterator > const_reverse_row_range_iterator
 
iterator2d upper_left()
Returns a read/write iterator2d that points to the first element of the GenericMultiComponent2d. It points to the upper left element of the GenericMultiComponent2d. 
 
This is some iterator to iterate a 2d container into a slip::Box2d area defined by the indices of the...
 
slip::Matrix< Block >::const_iterator2d_range const_iterator2d_range
 
virtual ~GenericMultiComponent2d()
Destructor of the GenericMultiComponent2d. 
 
Numerical matrix class. This container statisfies the BidirectionnalContainer concepts of the STL...
 
This is some iterator to iterate a 2d MultiComponentContainer into a Box area defined by the indices ...
 
void fill(const Block &value)
Fills the container range [begin(),begin()+size()) with copies of value. 
 
reverse_iterator2d rupper_left()
Returns a read/write reverse iterator2d. It points to the bottom right element of the Matrix...
 
slip::stride_iterator< const_block_pointer > const_component_row_range_iterator
 
slip::stride_iterator< col_iterator > col_range_iterator
 
std::reverse_iterator< component_iterator2d > reverse_component_iterator2d
 
std::ostream & operator<<(std::ostream &out, const Array< T > &a)
 
This is some iterator to iterate a 2d container into two Range defined by the indices and strides of ...
 
GenericMultiComponent2d()
Constructs a GenericMultiComponent2d. 
 
std::reverse_iterator< const_component_row_range_iterator > const_reverse_component_row_range_iterator
 
pointer operator[](const size_type i)
Subscript access to the row datas contained in the GenericMultiComponent2d. 
 
size_type columns() const 
Returns the number of columns (second dimension size) in the GenericMultiComponent2d. 
 
iterator end()
Returns a read/write iterator that points one past the last element in the GenericMultiComponent2d. Iteration is done in ordinary element order. 
 
reverse_col_iterator col_rbegin(const size_type col)
Returns a read/write reverse iterator that points to the last element of the column column in the Gen...
 
slip::stride_iterator< block_pointer > component_col_iterator
 
slip::stride_iterator< const_pointer > const_row_range_iterator
 
size_type max_size() const 
Returns the maximal size (number of elements) in the GenericMultiComponent2d. 
 
This is some iterator to iterate a 2d container into two Range defined by the indices and strides of ...
 
iterator end()
Returns a read/write iterator that points one past the last element in the Matrix. Iteration is done in ordinary element order. 
 
std::reverse_iterator< iterator > reverse_iterator
 
size_type width() const 
Returns the number of columns (second dimension size) in the GenericMultiComponent2d. 
 
int stride() const 
Accessor of the stride of the Range. 
 
slip::const_component_iterator2d_box< const_self, Block::SIZE > const_component_iterator2d
 
GenericMultiComponent2d(const size_type height, const size_type width, std::vector< InputIterator > first_iterators_list, InputIterator last)
Contructs a GenericMultiComponent2d from a 3 ranges. 
 
Provides a class to manipulate Numerical Matrix. 
 
slip::Matrix< Block >::iterator2d iterator2d
 
Provides some algorithms to apply C like functions to ranges. 
 
Provides a class to modelize 2d points. 
 
std::reverse_iterator< component_iterator2d_range > reverse_component_iterator2d_range
 
GenericMultiComponent2d(const size_type height, const size_type width, InputIterator first, InputIterator last)
Contructs a GenericMultiComponent2d from a range. 
 
Provides a class to iterate a 1d range according to a step. 
 
void fill(std::vector< InputIterator > first_iterators_list, InputIterator last)
Fills the container range [begin(),begin()+size()) with a copy of the range [first,last) 
 
size_type rows() const 
Returns the number of rows (first dimension size) in the GenericMultiComponent2d. ...
 
reverse_iterator2d rbottom_right()
Returns a read/write reverse iterator2d. It points to past the upper left element of the GenericMulti...
 
static const std::size_t DIM
 
slip::kstride_iterator< typename Block::pointer, Block::SIZE > component_iterator
 
void fill(const typename Block::pointer value)
Fills the container range [begin(),begin()+size()) with a copy of the value array. 
 
bool operator==(const Array< T > &x, const Array< T > &y)
 
std::reverse_iterator< component_row_iterator > reverse_component_row_iterator
 
std::reverse_iterator< col_range_iterator > reverse_col_range_iterator
 
const_component_iterator const_component_row_iterator
 
reverse_iterator2d rbottom_right()
Returns a read/write reverse iterator2d. It points to past the upper left element of the Matrix...
 
std::reverse_iterator< iterator > reverse_row_iterator
 
iterator2d bottom_right()
Returns a read/write iterator2d that points to the past the end element of the GenericMultiComponent2...
 
value_type const * const_pointer
 
slip::stride_iterator< block_pointer > component_row_range_iterator
 
std::reverse_iterator< const_component_iterator > const_reverse_component_iterator
 
block_value_type * block_pointer
 
Provides a class to manipulate Ranges. 
 
Provides a class to manipulate iterator2d within a slip::Range. It is used to iterate throw 2d contai...
 
T & max(const GrayscaleImage< T > &M1)
Returns the max element of a GrayscaleImage. 
 
SubType stop() const 
Accessor of the stop subscript of the Range. 
 
std::reverse_iterator< iterator2d_range > reverse_iterator2d_range
 
slip::stride_iterator< pointer > row_range_iterator
 
slip::component_iterator2d_range< self, Block::SIZE > component_iterator2d_range
 
std::reverse_iterator< const_component_iterator2d_range > const_reverse_component_iterator2d_range
 
std::reverse_iterator< iterator2d > reverse_iterator2d
 
const_pointer const_iterator