summaryrefslogtreecommitdiff
path: root/boost/numeric/ublas/operation/begin.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/numeric/ublas/operation/begin.hpp')
-rw-r--r--boost/numeric/ublas/operation/begin.hpp566
1 files changed, 283 insertions, 283 deletions
diff --git a/boost/numeric/ublas/operation/begin.hpp b/boost/numeric/ublas/operation/begin.hpp
index d14bb35cac..ea71349d64 100644
--- a/boost/numeric/ublas/operation/begin.hpp
+++ b/boost/numeric/ublas/operation/begin.hpp
@@ -28,289 +28,289 @@ namespace boost { namespace numeric { namespace ublas {
namespace detail {
- /**
- * \brief Auxiliary class for implementing the \c begin operation.
- * \tparam CategoryT The expression category type (e.g., vector_tag).
- * \tparam TagT The dimension type tag (e.g., tag::major).
- * \tparam OrientationT The orientation category type (e.g., row_major_tag).
- */
- template <typename CategoryT, typename TagT=void, typename OrientationT=void>
- struct begin_impl;
-
-
- /// \brief Specialization of \c begin_impl for iterating vector expressions.
- template <>
- struct begin_impl<vector_tag,void,void>
- {
- /**
- * \brief Return an iterator to the first element of the given vector
- * expression.
- * \tparam ExprT A model of VectorExpression type.
- * \param e A vector expression.
- * \return An iterator over the given vector expression.
- */
- template <typename ExprT>
- static typename ExprT::iterator apply(ExprT& e)
- {
- return e.begin();
- }
-
-
- /**
- * \brief Return a const iterator to the first element of the given vector
- * expression.
- * \tparam ExprT A model of VectorExpression type.
- * \param e A vector expression.
- * \return A const iterator to the first element of the given vector
- * expression.
- */
- template <typename ExprT>
- static typename ExprT::const_iterator apply(ExprT const& e)
- {
- return e.begin();
- }
- };
-
-
- /// \brief Specialization of \c begin_impl for iterating matrix expressions with
- /// a row-major orientation over the major dimension.
- template <>
- struct begin_impl<matrix_tag,tag::major,row_major_tag>
- {
- /**
- * \brief Return an iterator to the first element of the given row-major
- * matrix expression over the major dimension.
- * \tparam ExprT A model of MatrixExpression type.
- * \param e A matrix expression.
- * \return An iterator over the major dimension of the given matrix
- * expression.
- */
- template <typename ExprT>
- static typename ExprT::iterator1 apply(ExprT& e)
- {
- return e.begin1();
- }
-
-
- /**
- * \brief Return a const iterator to the first element of the given
- * row-major matrix expression over the major dimension.
- * \tparam ExprT A model of MatrixExpression type.
- * \param e A matrix expression.
- * \return A const iterator over the major dimension of the given matrix
- * expression.
- */
- template <typename ExprT>
- static typename ExprT::const_iterator1 apply(ExprT const& e)
- {
- return e.begin1();
- }
- };
-
-
- /// \brief Specialization of \c begin_impl for iterating matrix expressions with
- /// a column-major orientation over the major dimension.
- template <>
- struct begin_impl<matrix_tag,tag::major,column_major_tag>
- {
- /**
- * \brief Return an iterator to the first element of the given column-major
- * matrix expression over the major dimension.
- * \tparam ExprT A model of MatrixExpression type.
- * \param e A matrix expression.
- * \return An iterator over the major dimension of the given matrix
- * expression.
- */
- template <typename ExprT>
- static typename ExprT::iterator2 apply(ExprT& e)
- {
- return e.begin2();
- }
-
-
- /**
- * \brief Return a const iterator to the first element of the given
- * column-major matrix expression over the major dimension.
- * \tparam ExprT A model of MatrixExpression type.
- * \param e A matrix expression.
- * \return A const iterator over the major dimension of the given matrix
- * expression.
- */
- template <typename ExprT>
- static typename ExprT::const_iterator2 apply(ExprT const& e)
- {
- return e.begin2();
- }
- };
-
-
- /// \brief Specialization of \c begin_impl for iterating matrix expressions with
- /// a row-major orientation over the minor dimension.
- template <>
- struct begin_impl<matrix_tag,tag::minor,row_major_tag>
- {
- /**
- * \brief Return an iterator to the first element of the given row-major
- * matrix expression over the minor dimension.
- * \tparam ExprT A model of MatrixExpression type.
- * \param e A matrix expression.
- * \return An iterator over the minor dimension of the given matrix
- * expression.
- */
- template <typename ExprT>
- static typename ExprT::iterator2 apply(ExprT& e)
- {
- return e.begin2();
- }
-
-
- /**
- * \brief Return a const iterator to the first element of the given
- * row-major matrix expression over the minor dimension.
- * \tparam ExprT A model of MatrixExpression type.
- * \param e A matrix expression.
- * \return A const iterator over the minor dimension of the given matrix
- * expression.
- */
- template <typename ExprT>
- static typename ExprT::const_iterator2 apply(ExprT const& e)
- {
- return e.begin2();
- }
- };
-
-
-
- /// \brief Specialization of \c begin_impl for iterating matrix expressions with
- /// a column-major orientation over the minor dimension.
- template <>
- struct begin_impl<matrix_tag,tag::minor,column_major_tag>
- {
- /**
- * \brief Return an iterator to the first element of the given column-major
- * matrix expression over the minor dimension.
- * \tparam ExprT A model of MatrixExpression type.
- * \param e A matrix expression.
- * \return An iterator over the minor dimension of the given matrix
- * expression.
- */
- template <typename ExprT>
- static typename ExprT::iterator1 apply(ExprT& e)
- {
- return e.begin1();
- }
-
-
- /**
- * \brief Return a const iterator to the first element of the given
- * column-major matrix expression over the minor dimension.
- * \tparam ExprT A model of MatrixExpression type.
- * \param e A matrix expression.
- * \return A const iterator over the minor dimension of the given matrix
- * expression.
- */
- template <typename ExprT>
- static typename ExprT::const_iterator1 apply(ExprT const& e)
- {
- return e.begin1();
- }
- };
-
- } // Namespace detail
-
-
- /**
- * \brief An iterator to the first element of the given vector expression.
- * \tparam ExprT A model of VectorExpression type.
- * \param e A vector expression.
- * \return An iterator to the first element of the given vector expression.
- */
- template <typename ExprT>
- BOOST_UBLAS_INLINE
- typename ExprT::iterator begin(vector_expression<ExprT>& e)
- {
- return detail::begin_impl<typename ExprT::type_category>::apply(e());
- }
-
-
- /**
- * \brief A const iterator to the first element of the given vector expression.
- * \tparam ExprT A model of VectorExpression type.
- * \param e A vector expression.
- * \return A const iterator to the first element of the given vector expression.
- */
- template <typename ExprT>
- BOOST_UBLAS_INLINE
- typename ExprT::const_iterator begin(vector_expression<ExprT> const& e)
- {
- return detail::begin_impl<typename ExprT::type_category>::apply(e());
- }
-
-
- /**
- * \brief An iterator to the first element of the given matrix expression
- * according to its orientation.
- * \tparam DimTagT A dimension tag type (e.g., tag::major).
- * \tparam ExprT A model of MatrixExpression type.
- * \param e A matrix expression.
- * \return An iterator to the first element of the given matrix expression
- * according to its orientation.
- */
- template <typename TagT, typename ExprT>
- BOOST_UBLAS_INLINE
- typename iterator_type<ExprT,TagT>::type begin(matrix_expression<ExprT>& e)
- {
- return detail::begin_impl<typename ExprT::type_category, TagT, typename ExprT::orientation_category>::apply(e());
- }
-
-
- /**
- * \brief A const iterator to the first element of the given matrix expression
- * according to its orientation.
- * \tparam TagT A dimension tag type (e.g., tag::major).
- * \tparam ExprT A model of MatrixExpression type.
- * \param e A matrix expression.
- * \return A const iterator to the first element of the given matrix expression
- * according to its orientation.
- */
- template <typename TagT, typename ExprT>
- BOOST_UBLAS_INLINE
- typename const_iterator_type<ExprT,TagT>::type begin(matrix_expression<ExprT> const& e)
- {
- return detail::begin_impl<typename ExprT::type_category, TagT, typename ExprT::orientation_category>::apply(e());
- }
-
-
- /**
- * \brief An iterator to the first element over the dual dimension of the given
- * iterator.
- * \tparam IteratorT A model of Iterator type.
- * \param it An iterator.
- * \return An iterator to the first element over the dual dimension of the given
- * iterator.
- */
- template <typename IteratorT>
- BOOST_UBLAS_INLINE
- typename IteratorT::dual_iterator_type begin(IteratorT& it)
- {
- return it.begin();
- }
-
-
- /**
- * \brief A const iterator to the first element over the dual dimension of the
- * given iterator.
- * \tparam IteratorT A model of Iterator type.
- * \param it An iterator.
- * \return A const iterator to the first element over the dual dimension of the
- * given iterator.
- */
- template <typename IteratorT>
- BOOST_UBLAS_INLINE
- typename IteratorT::dual_iterator_type begin(IteratorT const& it)
- {
- return it.begin();
- }
+ /**
+ * \brief Auxiliary class for implementing the \c begin operation.
+ * \tparam CategoryT The expression category type (e.g., vector_tag).
+ * \tparam TagT The dimension type tag (e.g., tag::major).
+ * \tparam OrientationT The orientation category type (e.g., row_major_tag).
+ */
+ template <typename CategoryT, typename TagT=void, typename OrientationT=void>
+ struct begin_impl;
+
+
+ /// \brief Specialization of \c begin_impl for iterating vector expressions.
+ template <>
+ struct begin_impl<vector_tag,void,void>
+ {
+ /**
+ * \brief Return an iterator to the first element of the given vector
+ * expression.
+ * \tparam ExprT A model of VectorExpression type.
+ * \param e A vector expression.
+ * \return An iterator over the given vector expression.
+ */
+ template <typename ExprT>
+ static typename ExprT::iterator apply(ExprT& e)
+ {
+ return e.begin();
+ }
+
+
+ /**
+ * \brief Return a const iterator to the first element of the given vector
+ * expression.
+ * \tparam ExprT A model of VectorExpression type.
+ * \param e A vector expression.
+ * \return A const iterator to the first element of the given vector
+ * expression.
+ */
+ template <typename ExprT>
+ static typename ExprT::const_iterator apply(ExprT const& e)
+ {
+ return e.begin();
+ }
+ };
+
+
+ /// \brief Specialization of \c begin_impl for iterating matrix expressions with
+ /// a row-major orientation over the major dimension.
+ template <>
+ struct begin_impl<matrix_tag,tag::major,row_major_tag>
+ {
+ /**
+ * \brief Return an iterator to the first element of the given row-major
+ * matrix expression over the major dimension.
+ * \tparam ExprT A model of MatrixExpression type.
+ * \param e A matrix expression.
+ * \return An iterator over the major dimension of the given matrix
+ * expression.
+ */
+ template <typename ExprT>
+ static typename ExprT::iterator1 apply(ExprT& e)
+ {
+ return e.begin1();
+ }
+
+
+ /**
+ * \brief Return a const iterator to the first element of the given
+ * row-major matrix expression over the major dimension.
+ * \tparam ExprT A model of MatrixExpression type.
+ * \param e A matrix expression.
+ * \return A const iterator over the major dimension of the given matrix
+ * expression.
+ */
+ template <typename ExprT>
+ static typename ExprT::const_iterator1 apply(ExprT const& e)
+ {
+ return e.begin1();
+ }
+ };
+
+
+ /// \brief Specialization of \c begin_impl for iterating matrix expressions with
+ /// a column-major orientation over the major dimension.
+ template <>
+ struct begin_impl<matrix_tag,tag::major,column_major_tag>
+ {
+ /**
+ * \brief Return an iterator to the first element of the given column-major
+ * matrix expression over the major dimension.
+ * \tparam ExprT A model of MatrixExpression type.
+ * \param e A matrix expression.
+ * \return An iterator over the major dimension of the given matrix
+ * expression.
+ */
+ template <typename ExprT>
+ static typename ExprT::iterator2 apply(ExprT& e)
+ {
+ return e.begin2();
+ }
+
+
+ /**
+ * \brief Return a const iterator to the first element of the given
+ * column-major matrix expression over the major dimension.
+ * \tparam ExprT A model of MatrixExpression type.
+ * \param e A matrix expression.
+ * \return A const iterator over the major dimension of the given matrix
+ * expression.
+ */
+ template <typename ExprT>
+ static typename ExprT::const_iterator2 apply(ExprT const& e)
+ {
+ return e.begin2();
+ }
+ };
+
+
+ /// \brief Specialization of \c begin_impl for iterating matrix expressions with
+ /// a row-major orientation over the minor dimension.
+ template <>
+ struct begin_impl<matrix_tag,tag::minor,row_major_tag>
+ {
+ /**
+ * \brief Return an iterator to the first element of the given row-major
+ * matrix expression over the minor dimension.
+ * \tparam ExprT A model of MatrixExpression type.
+ * \param e A matrix expression.
+ * \return An iterator over the minor dimension of the given matrix
+ * expression.
+ */
+ template <typename ExprT>
+ static typename ExprT::iterator2 apply(ExprT& e)
+ {
+ return e.begin2();
+ }
+
+
+ /**
+ * \brief Return a const iterator to the first element of the given
+ * row-major matrix expression over the minor dimension.
+ * \tparam ExprT A model of MatrixExpression type.
+ * \param e A matrix expression.
+ * \return A const iterator over the minor dimension of the given matrix
+ * expression.
+ */
+ template <typename ExprT>
+ static typename ExprT::const_iterator2 apply(ExprT const& e)
+ {
+ return e.begin2();
+ }
+ };
+
+
+
+ /// \brief Specialization of \c begin_impl for iterating matrix expressions with
+ /// a column-major orientation over the minor dimension.
+ template <>
+ struct begin_impl<matrix_tag,tag::minor,column_major_tag>
+ {
+ /**
+ * \brief Return an iterator to the first element of the given column-major
+ * matrix expression over the minor dimension.
+ * \tparam ExprT A model of MatrixExpression type.
+ * \param e A matrix expression.
+ * \return An iterator over the minor dimension of the given matrix
+ * expression.
+ */
+ template <typename ExprT>
+ static typename ExprT::iterator1 apply(ExprT& e)
+ {
+ return e.begin1();
+ }
+
+
+ /**
+ * \brief Return a const iterator to the first element of the given
+ * column-major matrix expression over the minor dimension.
+ * \tparam ExprT A model of MatrixExpression type.
+ * \param e A matrix expression.
+ * \return A const iterator over the minor dimension of the given matrix
+ * expression.
+ */
+ template <typename ExprT>
+ static typename ExprT::const_iterator1 apply(ExprT const& e)
+ {
+ return e.begin1();
+ }
+ };
+
+ } // Namespace detail
+
+
+ /**
+ * \brief An iterator to the first element of the given vector expression.
+ * \tparam ExprT A model of VectorExpression type.
+ * \param e A vector expression.
+ * \return An iterator to the first element of the given vector expression.
+ */
+ template <typename ExprT>
+ BOOST_UBLAS_INLINE
+ typename ExprT::iterator begin(vector_expression<ExprT>& e)
+ {
+ return detail::begin_impl<typename ExprT::type_category>::apply(e());
+ }
+
+
+ /**
+ * \brief A const iterator to the first element of the given vector expression.
+ * \tparam ExprT A model of VectorExpression type.
+ * \param e A vector expression.
+ * \return A const iterator to the first element of the given vector expression.
+ */
+ template <typename ExprT>
+ BOOST_UBLAS_INLINE
+ typename ExprT::const_iterator begin(vector_expression<ExprT> const& e)
+ {
+ return detail::begin_impl<typename ExprT::type_category>::apply(e());
+ }
+
+
+ /**
+ * \brief An iterator to the first element of the given matrix expression
+ * according to its orientation.
+ * \tparam DimTagT A dimension tag type (e.g., tag::major).
+ * \tparam ExprT A model of MatrixExpression type.
+ * \param e A matrix expression.
+ * \return An iterator to the first element of the given matrix expression
+ * according to its orientation.
+ */
+ template <typename TagT, typename ExprT>
+ BOOST_UBLAS_INLINE
+ typename iterator_type<ExprT,TagT>::type begin(matrix_expression<ExprT>& e)
+ {
+ return detail::begin_impl<typename ExprT::type_category, TagT, typename ExprT::orientation_category>::apply(e());
+ }
+
+
+ /**
+ * \brief A const iterator to the first element of the given matrix expression
+ * according to its orientation.
+ * \tparam TagT A dimension tag type (e.g., tag::major).
+ * \tparam ExprT A model of MatrixExpression type.
+ * \param e A matrix expression.
+ * \return A const iterator to the first element of the given matrix expression
+ * according to its orientation.
+ */
+ template <typename TagT, typename ExprT>
+ BOOST_UBLAS_INLINE
+ typename const_iterator_type<ExprT,TagT>::type begin(matrix_expression<ExprT> const& e)
+ {
+ return detail::begin_impl<typename ExprT::type_category, TagT, typename ExprT::orientation_category>::apply(e());
+ }
+
+
+ /**
+ * \brief An iterator to the first element over the dual dimension of the given
+ * iterator.
+ * \tparam IteratorT A model of Iterator type.
+ * \param it An iterator.
+ * \return An iterator to the first element over the dual dimension of the given
+ * iterator.
+ */
+ template <typename IteratorT>
+ BOOST_UBLAS_INLINE
+ typename IteratorT::dual_iterator_type begin(IteratorT& it)
+ {
+ return it.begin();
+ }
+
+
+ /**
+ * \brief A const iterator to the first element over the dual dimension of the
+ * given iterator.
+ * \tparam IteratorT A model of Iterator type.
+ * \param it An iterator.
+ * \return A const iterator to the first element over the dual dimension of the
+ * given iterator.
+ */
+ template <typename IteratorT>
+ BOOST_UBLAS_INLINE
+ typename IteratorT::dual_iterator_type begin(IteratorT const& it)
+ {
+ return it.begin();
+ }
}}} // Namespace boost::numeric::ublas