1 #ifndef SEQUENCE_VARIANT_MATRIX_INTERNAL_HPP__     2 #define SEQUENCE_VARIANT_MATRIX_INTERNAL_HPP__     9 #include "col_view_iterator.hpp"    20             static_assert(std::is_pointer<T>::value, 
"T must be pointer type");
    24             using value_type = 
typename std::remove_pointer<T>::type;
    31                 : data(data_), row_size(row_size_)
    45             at(
const std::size_t i)
    50                         throw std::out_of_range(
"index out of range");
    55             at(
const std::size_t i) 
const    60                         throw std::out_of_range(
"index out of range");
    73             using reverse_iterator = std::reverse_iterator<iterator>;
    74             using const_reverse_iterator
    75                 = std::reverse_iterator<const_iterator>;
   105                 return this->
begin();
   119                 return reverse_iterator(data + row_size);
   125                 return reverse_iterator(data);
   127             const_reverse_iterator
   131                 return reverse_iterator(data + row_size);
   133             const_reverse_iterator
   137                 return reverse_iterator(data);
   139             const_reverse_iterator
   145             const_reverse_iterator
   152             std::vector<std::int8_t>
   156                 return std::vector<std::int8_t>(this->
cbegin(), this->
cend());
   165                         throw std::invalid_argument(
   166                             "cannot swap row views of different size");
   169                 for (
auto ai = a.
begin(); ai != a.
end(); ++ai, ++bi)
   181             static_assert(std::is_pointer<T>::value, 
"T must be pointer type");
   192             col_view_(T data_, std::size_t col_end_, std::size_t stride_)
   194                 : data(data_), col_end(col_end_), stride(stride_)
   200                 return data[i * stride];
   205                 return data[i * stride];
   208             at(
const std::size_t i)
   211                 if (i >= col_end / stride)
   213                         throw std::out_of_range(
"index out of range");
   215                 return data[i * stride];
   218             at(
const std::size_t i) 
const   221                 if (i >= col_end / stride)
   223                         throw std::out_of_range(
"index out of range");
   225                 return data[i * stride];
   231                 return col_end / stride;
   236             using reverse_iterator = std::reverse_iterator<iterator>;
   237             using const_reverse_iterator
   238                 = std::reverse_iterator<const_iterator>;
   246                     static_cast<typename iterator::difference_type>(stride),
   255                     static_cast<typename iterator::difference_type>(stride),
   256                     static_cast<typename iterator::difference_type>(col_end));
   264                     static_cast<typename iterator::difference_type>(stride),
   273                     static_cast<typename iterator::difference_type>(stride),
   274                     static_cast<typename iterator::difference_type>(col_end));
   280                 return this->
begin();
   294                 return reverse_iterator(
end());
   300                 return reverse_iterator(
begin());
   303             const_reverse_iterator
   307                 return const_reverse_iterator(
end());
   309             const_reverse_iterator
   313                 return const_reverse_iterator(
begin());
   315             const_reverse_iterator
   321             const_reverse_iterator
   328             std::vector<std::int8_t>
   332                 return std::vector<std::int8_t>(this->
cbegin(), this->
cend());
   341                         throw std::invalid_argument(
   342                             "cannot swap column views of different size");
   345                 for (
auto ai = a.
begin(); ai != a.
end(); ++ai, ++bi)
 reverse_iterator rbegin()
Reverse iterator. Points to start of reversed range. 
 
const_iterator begin() const
Get const iterator to end of range. 
 
const_reverse_iterator crbegin() const
Const reverse iterator. Points to start of reversed range. 
 
std::size_t size() const
Number of elements. 
 
Implementation details for Sequence::RowView and Sequence::ConstRowView. 
 
iterator begin()
Get iterator to start of range. 
 
const_iterator cbegin() const
Get const iterator to start of range. 
 
std::size_t size() const
Number of elements. 
 
T data
Pointer to row data. 
 
value_type & operator[](const std::size_t i)
Element access without range checking. 
 
iterator begin()
Get iterator to start of range. 
 
row_view_(T data_, std::size_t row_size_)
Constructor. 
 
T data
Pointer to column data. 
 
reverse_iterator rend()
Reverse iterator. Points to end of reversed range. 
 
const_iterator end() const
Get const iterator to end of range. 
 
const_iterator cbegin() const
Get const iterator to start of range. 
 
const_reverse_iterator rend() const
Const reverse iterator. Points to end of reversed range. 
 
const_reverse_iterator crend() const
Const reverse iterator. Points to end of reversed range. 
 
The namespace in which this library resides. 
 
const_reverse_iterator rend() const
Const reverse iterator. Points to end of reversed range. 
 
std::vector< std::int8_t > copy() const
Return copy of the view as std::vector<std::int8_t> 
 
value_type & at(const std::size_t i)
Range-checked access. 
 
const value_type & at(const std::size_t i) const
Range-checked access. 
 
const_iterator cend() const
Get const iterator to end of range. 
 
std::size_t row_size
Number of elements in row. 
 
friend void swap(row_view_ &a, row_view_ &b)
Allow swap via argument-dependent lookup, or "ADL". 
 
const_reverse_iterator crend() const
Const reverse iterator. Points to end of reversed range. 
 
reverse_iterator rbegin()
Reverse iterator. Points to start of reversed range. 
 
const_iterator cend() const
Get const iterator to end of range. 
 
value_type & at(const std::size_t i)
Range-checked access. 
 
const_reverse_iterator crbegin() const
Const reverse iterator. Points to start of reversed range. 
 
Iterator for column views. 
 
const_iterator begin() const
Get const iterator to start of range. 
 
typename std::remove_pointer< T >::type value_type
data type 
 
std::size_t stride
Stride of the data in the column. 
 
const value_type & operator[](const std::size_t i) const
Element access without range checking. 
 
std::vector< std::int8_t > copy() const
Return copy of the view as std::vector<std::int8_t> 
 
col_view_(T data_, std::size_t col_end_, std::size_t stride_)
Constructor. 
 
friend void swap(col_view_ &a, col_view_ &b)
Allow swap via argument-dependent lookup, or "ADL". 
 
const value_type & at(const std::size_t i) const
Range-checked access. 
 
iterator end()
Get iterator to end of range. 
 
typename std::remove_pointer< T >::type value_type
Data type. 
 
Implementation details for Sequence::ColView and Sequence::ConstColView. 
 
const value_type & operator[](const std::size_t i) const
Element access without range checking. 
 
const_iterator end() const
Get const iterator to end of range. 
 
iterator end()
Get iterator to end of range. 
 
reverse_iterator rend()
Reverse iterator. Points to end of reversed range. 
 
const_reverse_iterator rbegin() const
Const reverse iterator. Points to start of reversed range. 
 
std::size_t col_end
data + col_end marks the end of the column data 
 
value_type & operator[](const std::size_t i)
Element access without range checking. 
 
const_reverse_iterator rbegin() const
Const reverse iterator. Points to end of reversed range.