diff options
Diffstat (limited to 'boost/numeric/ublas/matrix_expression.hpp')
-rw-r--r-- | boost/numeric/ublas/matrix_expression.hpp | 681 |
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_; |