summaryrefslogtreecommitdiff
path: root/boost/numeric/ublas/matrix_expression.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/numeric/ublas/matrix_expression.hpp')
-rw-r--r--boost/numeric/ublas/matrix_expression.hpp681
1 files changed, 680 insertions, 1 deletions
diff --git a/boost/numeric/ublas/matrix_expression.hpp b/boost/numeric/ublas/matrix_expression.hpp
index f59045f48c..3953fad4c2 100644
--- a/boost/numeric/ublas/matrix_expression.hpp
+++ b/boost/numeric/ublas/matrix_expression.hpp
@@ -190,9 +190,17 @@ namespace boost { namespace numeric { namespace ublas {
return expression ().begin1 ();
}
BOOST_UBLAS_INLINE
+ const_iterator1 cbegin1 () const {
+ return begin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator1 end1 () const {
return expression ().end1 ();
}
+ BOOST_UBLAS_INLINE
+ const_iterator1 cend1 () const {
+ return end1 ();
+ }
BOOST_UBLAS_INLINE
iterator1 begin1 () {
@@ -208,9 +216,17 @@ namespace boost { namespace numeric { namespace ublas {
return expression ().begin2 ();
}
BOOST_UBLAS_INLINE
+ const_iterator2 cbegin2 () const {
+ return begin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator2 end2 () const {
return expression ().end2 ();
}
+ BOOST_UBLAS_INLINE
+ const_iterator2 cend2 () const {
+ return end2 ();
+ }
BOOST_UBLAS_INLINE
iterator2 begin2 () {
@@ -230,9 +246,17 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator1 (end1 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crbegin1 () const {
+ return rbegin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator1 rend1 () const {
return const_reverse_iterator1 (begin1 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crend1 () const {
+ return rend1 ();
+ }
BOOST_UBLAS_INLINE
reverse_iterator1 rbegin1 () {
@@ -251,9 +275,17 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator2 (end2 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crbegin2 () const {
+ return rbegin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator2 rend2 () const {
return const_reverse_iterator2 (begin2 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crend2 () const {
+ return rend2 ();
+ }
BOOST_UBLAS_INLINE
reverse_iterator2 rbegin2 () {
@@ -491,6 +523,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator2 end () const {
return (*this) ().find2 (1, index1 (), (*this) ().size2 ());
}
@@ -498,6 +537,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rbegin () const {
return const_reverse_iterator2 (end ());
}
@@ -505,9 +551,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator2 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rend () const {
return const_reverse_iterator2 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator2 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -564,9 +624,17 @@ namespace boost { namespace numeric { namespace ublas {
return find1 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator1 cbegin1 () const {
+ return begin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator1 end1 () const {
return find1 (0, size1 (), 0);
}
+ BOOST_UBLAS_INLINE
+ const_iterator1 cend1 () const {
+ return end1 ();
+ }
#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR
class const_iterator2:
@@ -656,6 +724,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator1 end () const {
return (*this) ().find1 (1, (*this) ().size1 (), index2 ());
}
@@ -663,6 +738,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rbegin () const {
return const_reverse_iterator1 (end ());
}
@@ -670,9 +752,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator1 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rend () const {
return const_reverse_iterator1 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator1 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -729,9 +825,17 @@ namespace boost { namespace numeric { namespace ublas {
return find2 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator2 cbegin2 () const {
+ return begin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator2 end2 () const {
return find2 (0, 0, size2 ());
}
+ BOOST_UBLAS_INLINE
+ const_iterator2 cend2 () const {
+ return end2 ();
+ }
// Reverse iterators
@@ -740,18 +844,33 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator1 (end1 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crbegin1 () const {
+ return rbegin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator1 rend1 () const {
return const_reverse_iterator1 (begin1 ());
}
-
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crend1 () const {
+ return rend1 ();
+ }
BOOST_UBLAS_INLINE
const_reverse_iterator2 rbegin2 () const {
return const_reverse_iterator2 (end2 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crbegin2 () const {
+ return rbegin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator2 rend2 () const {
return const_reverse_iterator2 (begin2 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crend2 () const {
+ return rend2 ();
+ }
private:
expression1_closure_type e1_;
@@ -955,6 +1074,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator2 end () const {
return (*this) ().find2 (1, index1 (), (*this) ().size2 ());
}
@@ -962,6 +1088,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rbegin () const {
return const_reverse_iterator2 (end ());
}
@@ -969,9 +1102,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator2 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rend () const {
return const_reverse_iterator2 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator2 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -1014,9 +1161,17 @@ namespace boost { namespace numeric { namespace ublas {
return find1 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator1 cbegin1 () const {
+ return begin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator1 end1 () const {
return find1 (0, size1 (), 0);
}
+ BOOST_UBLAS_INLINE
+ const_iterator1 cend1 () const {
+ return end1 ();
+ }
#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR
class const_iterator2:
@@ -1090,6 +1245,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator1 end () const {
return (*this) ().find1 (1, (*this) ().size1 (), index2 ());
}
@@ -1097,6 +1259,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rbegin () const {
return const_reverse_iterator1 (end ());
}
@@ -1104,9 +1273,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator1 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rend () const {
return const_reverse_iterator1 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator1 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -1149,9 +1332,17 @@ namespace boost { namespace numeric { namespace ublas {
return find2 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator2 cbegin2 () const {
+ return begin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator2 end2 () const {
return find2 (0, 0, size2 ());
}
+ BOOST_UBLAS_INLINE
+ const_iterator2 cend2 () const {
+ return end2 ();
+ }
// Reverse iterators
@@ -1160,18 +1351,34 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator1 (end1 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crbegin1 () const {
+ return rbegin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator1 rend1 () const {
return const_reverse_iterator1 (begin1 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crend1 () const {
+ return rend1 ();
+ }
BOOST_UBLAS_INLINE
const_reverse_iterator2 rbegin2 () const {
return const_reverse_iterator2 (end2 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crbegin2 () const {
+ return rbegin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator2 rend2 () const {
return const_reverse_iterator2 (begin2 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crend2 () const {
+ return rend2 ();
+ }
private:
expression_closure_type e_;
@@ -1418,6 +1625,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator2 end () const {
return (*this) ().find2 (1, index1 (), (*this) ().size2 ());
}
@@ -1425,6 +1639,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rbegin () const {
return const_reverse_iterator2 (end ());
}
@@ -1432,9 +1653,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator2 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rend () const {
return const_reverse_iterator2 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator2 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -1477,9 +1712,17 @@ namespace boost { namespace numeric { namespace ublas {
return find1 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator1 cbegin1 () const {
+ return begin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator1 end1 () const {
return find1 (0, size1 (), 0);
}
+ BOOST_UBLAS_INLINE
+ const_iterator1 cend1 () const {
+ return end1 ();
+ }
#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR
class const_iterator2:
@@ -1553,6 +1796,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator1 end () const {
return (*this) ().find1 (1, (*this) ().size1 (), index2 ());
}
@@ -1560,6 +1810,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rbegin () const {
return const_reverse_iterator1 (end ());
}
@@ -1567,9 +1824,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator1 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rend () const {
return const_reverse_iterator1 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator1 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -1612,9 +1883,17 @@ namespace boost { namespace numeric { namespace ublas {
return find2 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator2 cbegin2 () const {
+ return begin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator2 end2 () const {
return find2 (0, 0, size2 ());
}
+ BOOST_UBLAS_INLINE
+ const_iterator2 cend2 () const {
+ return end2 ();
+ }
// Reverse iterators
@@ -1623,18 +1902,34 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator1 (end1 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crbegin1 () const {
+ return rbegin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator1 rend1 () const {
return const_reverse_iterator1 (begin1 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crend1 () const {
+ return rend1 ();
+ }
BOOST_UBLAS_INLINE
const_reverse_iterator2 rbegin2 () const {
return const_reverse_iterator2 (end2 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crbegin2 () const {
+ return rbegin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator2 rend2 () const {
return const_reverse_iterator2 (begin2 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crend2 () const {
+ return rend2 ();
+ }
private:
expression_closure_type e_;
@@ -2042,6 +2337,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator2 end () const {
return (*this) ().find2 (1, index1 (), (*this) ().size2 ());
}
@@ -2049,6 +2351,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rbegin () const {
return const_reverse_iterator2 (end ());
}
@@ -2056,9 +2365,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator2 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rend () const {
return const_reverse_iterator2 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator2 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -2116,9 +2439,17 @@ namespace boost { namespace numeric { namespace ublas {
return find1 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator1 cbegin1 () const {
+ return begin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator1 end1 () const {
return find1 (0, size1 (), 0);
}
+ BOOST_UBLAS_INLINE
+ const_iterator1 cend1 () const {
+ return end1 ();
+ }
#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR
class const_iterator2:
@@ -2357,6 +2688,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator1 end () const {
return (*this) ().find1 (1, (*this) ().size1 (), index2 ());
}
@@ -2364,6 +2702,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rbegin () const {
return const_reverse_iterator1 (end ());
}
@@ -2371,9 +2716,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator1 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rend () const {
return const_reverse_iterator1 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator1 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -2431,9 +2790,17 @@ namespace boost { namespace numeric { namespace ublas {
return find2 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator2 cbegin2 () const {
+ return begin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator2 end2 () const {
return find2 (0, 0, size2 ());
}
+ BOOST_UBLAS_INLINE
+ const_iterator2 cend2 () const {
+ return end2 ();
+ }
// Reverse iterators
@@ -2442,18 +2809,34 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator1 (end1 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crbegin1 () const {
+ return rbegin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator1 rend1 () const {
return const_reverse_iterator1 (begin1 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crend1 () const {
+ return rend1 ();
+ }
BOOST_UBLAS_INLINE
const_reverse_iterator2 rbegin2 () const {
return const_reverse_iterator2 (end2 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crbegin2 () const {
+ return rbegin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator2 rend2 () const {
return const_reverse_iterator2 (begin2 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crend2 () const {
+ return rend2 ();
+ }
private:
expression1_closure_type e1_;
@@ -2690,6 +3073,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator2 end () const {
return (*this) ().find2 (1, index1 (), (*this) ().size2 ());
}
@@ -2697,6 +3087,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rbegin () const {
return const_reverse_iterator2 (end ());
}
@@ -2704,9 +3101,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator2 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rend () const {
return const_reverse_iterator2 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator2 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -2755,9 +3166,17 @@ namespace boost { namespace numeric { namespace ublas {
return find1 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator1 cbegin1 () const {
+ return begin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator1 end1 () const {
return find1 (0, size1 (), 0);
}
+ BOOST_UBLAS_INLINE
+ const_iterator1 cend1 () const {
+ return end1 ();
+ }
#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR
class const_iterator2:
@@ -2833,6 +3252,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator1 end () const {
return (*this) ().find1 (1, (*this) ().size1 (), index2 ());
}
@@ -2840,6 +3266,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rbegin () const {
return const_reverse_iterator1 (end ());
}
@@ -2847,9 +3280,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator1 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rend () const {
return const_reverse_iterator1 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator1 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -2898,9 +3345,17 @@ namespace boost { namespace numeric { namespace ublas {
return find2 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator2 cbegin2 () const {
+ return begin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator2 end2 () const {
return find2 (0, 0, size2 ());
}
+ BOOST_UBLAS_INLINE
+ const_iterator2 cend2 () const {
+ return end2 ();
+ }
// Reverse iterators
@@ -2909,18 +3364,34 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator1 (end1 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crbegin1 () const {
+ return rbegin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator1 rend1 () const {
return const_reverse_iterator1 (begin1 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crend1 () const {
+ return rend1 ();
+ }
BOOST_UBLAS_INLINE
const_reverse_iterator2 rbegin2 () const {
return const_reverse_iterator2 (end2 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crbegin2 () const {
+ return rbegin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator2 rend2 () const {
return const_reverse_iterator2 (begin2 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crend2 () const {
+ return rend2 ();
+ }
private:
expression1_closure_type e1_;
@@ -3125,6 +3596,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator2 end () const {
return (*this) ().find2 (1, index1 (), (*this) ().size2 ());
}
@@ -3132,6 +3610,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rbegin () const {
return const_reverse_iterator2 (end ());
}
@@ -3139,9 +3624,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator2 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rend () const {
return const_reverse_iterator2 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator2 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -3190,9 +3689,17 @@ namespace boost { namespace numeric { namespace ublas {
return find1 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator1 cbegin1 () const {
+ return begin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator1 end1 () const {
return find1 (0, size1 (), 0);
}
+ BOOST_UBLAS_INLINE
+ const_iterator1 cend1 () const {
+ return end1 ();
+ }
#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR
class const_iterator2:
@@ -3268,6 +3775,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator1 end () const {
return (*this) ().find1 (1, (*this) ().size1 (), index2 ());
}
@@ -3275,6 +3789,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rbegin () const {
return const_reverse_iterator1 (end ());
}
@@ -3282,9 +3803,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator1 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rend () const {
return const_reverse_iterator1 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator1 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -3333,9 +3868,17 @@ namespace boost { namespace numeric { namespace ublas {
return find2 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator2 cbegin2 () const {
+ return begin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator2 end2 () const {
return find2 (0, 0, size2 ());
}
+ BOOST_UBLAS_INLINE
+ const_iterator2 cend2 () const {
+ return end2 ();
+ }
// Reverse iterators
@@ -3344,18 +3887,34 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator1 (end1 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crbegin1 () const {
+ return rbegin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator1 rend1 () const {
return const_reverse_iterator1 (begin1 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crend1 () const {
+ return rend1 ();
+ }
BOOST_UBLAS_INLINE
const_reverse_iterator2 rbegin2 () const {
return const_reverse_iterator2 (end2 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crbegin2 () const {
+ return rbegin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator2 rend2 () const {
return const_reverse_iterator2 (begin2 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crend2 () const {
+ return rend2 ();
+ }
private:
expression1_closure_type e1_;
@@ -3663,9 +4222,17 @@ namespace boost { namespace numeric { namespace ublas {
return find (0);
}
BOOST_UBLAS_INLINE
+ const_iterator cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator end () const {
return find (size ());
}
+ BOOST_UBLAS_INLINE
+ const_iterator cend () const {
+ return end ();
+ }
// Reverse iterator
typedef reverse_iterator_base<const_iterator> const_reverse_iterator;
@@ -3675,9 +4242,17 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator (end ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator rend () const {
return const_reverse_iterator (begin ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator crend () const {
+ return rend ();
+ }
private:
expression1_closure_type e1_;
@@ -4053,9 +4628,17 @@ namespace boost { namespace numeric { namespace ublas {
return find (0);
}
BOOST_UBLAS_INLINE
+ const_iterator cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator end () const {
return find (size ());
}
+ BOOST_UBLAS_INLINE
+ const_iterator cend () const {
+ return end ();
+ }
// Reverse iterator
typedef reverse_iterator_base<const_iterator> const_reverse_iterator;
@@ -4065,9 +4648,17 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator (end ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator rend () const {
return const_reverse_iterator (begin ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator crend () const {
+ return rend ();
+ }
private:
expression1_closure_type e1_;
@@ -4452,6 +5043,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator2 end () const {
return (*this) ().find2 (1, index1 (), (*this) ().size2 ());
}
@@ -4459,6 +5057,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator2 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rbegin () const {
return const_reverse_iterator2 (end ());
}
@@ -4466,9 +5071,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator2 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator2 rend () const {
return const_reverse_iterator2 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator2 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -4524,9 +5143,17 @@ namespace boost { namespace numeric { namespace ublas {
return find1 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator1 cbegin1 () const {
+ return begin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator1 end1 () const {
return find1 (0, size1 (), 0);
}
+ BOOST_UBLAS_INLINE
+ const_iterator1 cend1 () const {
+ return end1 ();
+ }
#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR
class const_iterator2:
@@ -4678,6 +5305,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cbegin () const {
+ return begin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_iterator1 end () const {
return (*this) ().find1 (1, (*this) ().size1 (), index2 ());
}
@@ -4685,6 +5319,13 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_iterator1 cend () const {
+ return end ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rbegin () const {
return const_reverse_iterator1 (end ());
}
@@ -4692,9 +5333,23 @@ namespace boost { namespace numeric { namespace ublas {
#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
typename self_type::
#endif
+ const_reverse_iterator1 crbegin () const {
+ return rbegin ();
+ }
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
const_reverse_iterator1 rend () const {
return const_reverse_iterator1 (begin ());
}
+ BOOST_UBLAS_INLINE
+#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION
+ typename self_type::
+#endif
+ const_reverse_iterator1 crend () const {
+ return rend ();
+ }
#endif
// Indices
@@ -4750,9 +5405,17 @@ namespace boost { namespace numeric { namespace ublas {
return find2 (0, 0, 0);
}
BOOST_UBLAS_INLINE
+ const_iterator2 cbegin2 () const {
+ return begin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_iterator2 end2 () const {
return find2 (0, 0, size2 ());
}
+ BOOST_UBLAS_INLINE
+ const_iterator2 cend2 () const {
+ return end2 ();
+ }
// Reverse iterators
@@ -4761,18 +5424,34 @@ namespace boost { namespace numeric { namespace ublas {
return const_reverse_iterator1 (end1 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crbegin1 () const {
+ return rbegin1 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator1 rend1 () const {
return const_reverse_iterator1 (begin1 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator1 crend1 () const {
+ return rend1 ();
+ }
BOOST_UBLAS_INLINE
const_reverse_iterator2 rbegin2 () const {
return const_reverse_iterator2 (end2 ());
}
BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crbegin2 () const {
+ return rbegin2 ();
+ }
+ BOOST_UBLAS_INLINE
const_reverse_iterator2 rend2 () const {
return const_reverse_iterator2 (begin2 ());
}
+ BOOST_UBLAS_INLINE
+ const_reverse_iterator2 crend2 () const {
+ return rend2 ();
+ }
private:
expression1_closure_type e1_;