New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
const_iterator_type.hpp in vendors/XIOS/current/extern/boost/include/boost/numeric/ublas/traits – NEMO

source: vendors/XIOS/current/extern/boost/include/boost/numeric/ublas/traits/const_iterator_type.hpp @ 3428

Last change on this file since 3428 was 3428, checked in by rblod, 12 years ago

importing initial XIOS vendor drop

File size: 4.2 KB
Line 
1/**
2 * -*- c++ -*-
3 *
4 * \file const_iterator_type.hpp
5 *
6 * \brief Const iterator to a given container type.
7 *
8 * Copyright (c) 2009, Marco Guazzone
9 *
10 * Distributed under the Boost Software License, Version 1.0. (See
11 * accompanying file LICENSE_1_0.txt or copy at
12 * http://www.boost.org/LICENSE_1_0.txt)
13 *
14 * \author Marco Guazzone, marco.guazzone@gmail.com
15 */
16
17
18#ifndef BOOST_NUMERIC_UBLAS_TRAITS_CONST_ITERATOR_TYPE_HPP
19#define BOOST_NUMERIC_UBLAS_TRAITS_CONST_ITERATOR_TYPE_HPP
20
21
22#include <boost/numeric/ublas/fwd.hpp>
23#include <boost/numeric/ublas/tags.hpp>
24#include <boost/numeric/ublas/traits.hpp>
25
26
27namespace boost { namespace numeric { namespace ublas {
28
29    namespace detail {
30
31        /**
32         * \brief Auxiliary class for retrieving the const iterator to the given
33         *  matrix expression according its orientation and to the given dimension tag.
34         * \tparam MatrixT A model of MatrixExpression.
35         * \tparam TagT A dimension tag type (e.g., tag::major).
36         * \tparam OrientationT An orientation category type (e.g., row_major_tag).
37         */
38        template <typename MatrixT, typename TagT, typename OrientationT>
39        struct const_iterator_type_impl;
40
41
42        /// \brief Specialization of \c const_iterator_type_impl for row-major oriented
43        ///  matrices and over the major dimension.
44        template <typename MatrixT>
45        struct const_iterator_type_impl<MatrixT,tag::major,row_major_tag>
46        {
47            typedef typename matrix_view_traits<MatrixT>::const_iterator1 type;
48        };
49
50
51        /// \brief Specialization of \c const_iterator_type_impl for column-major
52        ///  oriented matrices and over the major dimension.
53        template <typename MatrixT>
54        struct const_iterator_type_impl<MatrixT,tag::major,column_major_tag>
55        {
56            typedef typename matrix_view_traits<MatrixT>::const_iterator2 type;
57        };
58
59
60        /// \brief Specialization of \c const_iterator_type_impl for row-major oriented
61        ///  matrices and over the minor dimension.
62        template <typename MatrixT>
63        struct const_iterator_type_impl<MatrixT,tag::minor,row_major_tag>
64        {
65            typedef typename matrix_view_traits<MatrixT>::const_iterator2 type;
66        };
67
68
69        /// \brief Specialization of \c const_iterator_type_impl for column-major
70        ///  oriented matrices and over the minor dimension.
71        template <typename MatrixT>
72        struct const_iterator_type_impl<MatrixT,tag::minor,column_major_tag>
73        {
74            typedef typename matrix_view_traits<MatrixT>::const_iterator1 type;
75        };
76
77    } // Namespace detail
78
79
80    /**
81     * \brief A const iterator for the given container type over the given
82     *  dimension.
83     * \tparam ContainerT A container expression type.
84     * \tparam TagT A dimension tag type (e.g., tag::major).
85     */
86    template <typename ContainerT, typename TagT=void>
87    struct const_iterator_type;
88
89
90    /**
91     * \brief Specialization of \c const_iterator_type for vector expressions.
92     * \tparam VectorT A model of VectorExpression type.
93     */
94    template <typename VectorT>
95    struct const_iterator_type<VectorT, void>
96    {
97        typedef typename vector_view_traits<VectorT>::const_iterator type;
98    };
99
100
101    /**
102     * \brief Specialization of \c const_iterator_type for matrix expressions and
103     *  over the major dimension.
104     * \tparam MatrixT A model of MatrixExpression type.
105     */
106    template <typename MatrixT>
107    struct const_iterator_type<MatrixT,tag::major>
108    {
109        typedef typename detail::const_iterator_type_impl<MatrixT,tag::minor,typename matrix_view_traits<MatrixT>::orientation_category>::type type;
110    };
111
112
113    /**
114     * \brief Specialization of \c const_iterator_type for matrix expressions and
115     *  over the minor dimension.
116     * \tparam MatrixT A model of MatrixExpression type.
117     */
118    template <typename MatrixT>
119    struct const_iterator_type<MatrixT,tag::minor>
120    {
121        typedef typename detail::const_iterator_type_impl<MatrixT,tag::minor,typename matrix_view_traits<MatrixT>::orientation_category>::type type;
122    };
123
124}}} // Namespace boost::numeric::ublas
125
126
127#endif // BOOST_NUMERIC_UBLAS_TRAITS_CONST_ITERATOR_TYPE_HPP
Note: See TracBrowser for help on using the repository browser.