annotate DEPENDENCIES/generic/include/boost/numeric/ublas/traits/c_array.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 /**
Chris@16 2 * -*- c++ -*-
Chris@16 3 *
Chris@16 4 * \file c_array.hpp
Chris@16 5 *
Chris@16 6 * \brief provides specializations of matrix and vector traits for c arrays and c matrices.
Chris@16 7 *
Chris@16 8 * Copyright (c) 2009, Gunter Winkler
Chris@16 9 *
Chris@16 10 * Distributed under the Boost Software License, Version 1.0. (See
Chris@16 11 * accompanying file LICENSE_1_0.txt or copy at
Chris@16 12 * http://www.boost.org/LICENSE_1_0.txt)
Chris@16 13 *
Chris@16 14 * \author Gunter Winkler (guwi17 at gmx dot de)
Chris@16 15 */
Chris@16 16
Chris@16 17 #ifndef BOOST_NUMERIC_UBLAS_TRAITS_C_ARRAY_HPP
Chris@16 18 #define BOOST_NUMERIC_UBLAS_TRAITS_C_ARRAY_HPP
Chris@16 19
Chris@16 20
Chris@16 21 #include <boost/numeric/ublas/traits.hpp>
Chris@16 22 #include <boost/numeric/ublas/traits/const_iterator_type.hpp>
Chris@16 23 #include <boost/numeric/ublas/traits/iterator_type.hpp>
Chris@16 24
Chris@16 25 namespace boost { namespace numeric { namespace ublas {
Chris@16 26
Chris@16 27 namespace detail {
Chris@16 28
Chris@16 29
Chris@16 30
Chris@16 31 }
Chris@16 32
Chris@16 33
Chris@16 34 template < class T, int M, int N >
Chris@16 35 struct matrix_view_traits < T[M][N] > {
Chris@16 36 typedef T matrix_type[M][N];
Chris@16 37
Chris@16 38 typedef std::size_t size_type;
Chris@16 39 typedef std::ptrdiff_t difference_type;
Chris@16 40
Chris@16 41 typedef row_major_tag orientation_category;
Chris@16 42 typedef dense_tag storage_category;
Chris@16 43
Chris@16 44 typedef T value_type;
Chris@16 45 typedef const T &const_reference;
Chris@16 46 typedef const T *const_pointer;
Chris@16 47
Chris@16 48 typedef const matrix_reference<const matrix_type> const_closure_type;
Chris@16 49
Chris@16 50 typedef T row_type[N];
Chris@16 51
Chris@16 52 typedef const row_type *const_iterator1;
Chris@16 53 typedef const_pointer const_iterator2;
Chris@16 54
Chris@16 55 };
Chris@16 56
Chris@16 57 template < class T, int M, int N >
Chris@16 58 struct mutable_matrix_traits < T[M][N] > {
Chris@16 59 typedef T matrix_type[M][N];
Chris@16 60
Chris@16 61 typedef T *reference;
Chris@16 62
Chris@16 63 typedef matrix_reference<matrix_type> closure_type;
Chris@16 64
Chris@16 65 };
Chris@16 66
Chris@16 67 template < class T, int N >
Chris@16 68 struct vector_view_traits < T[N] > {
Chris@16 69 typedef T vector_type[N];
Chris@16 70
Chris@16 71 typedef std::size_t size_type;
Chris@16 72 typedef std::ptrdiff_t difference_type;
Chris@16 73
Chris@16 74 typedef dense_tag storage_category;
Chris@16 75
Chris@16 76 typedef T value_type;
Chris@16 77 typedef const T &const_reference;
Chris@16 78 typedef const T *const_pointer;
Chris@16 79
Chris@16 80 typedef const vector_reference<const vector_type> const_closure_type;
Chris@16 81
Chris@16 82 typedef const_pointer const_iterator;
Chris@16 83
Chris@16 84 /// iterator pointing to the first element
Chris@16 85 static
Chris@16 86 const_iterator begin(const vector_type & v) {
Chris@16 87 return & (v[0]);
Chris@16 88 }
Chris@16 89 /// iterator pointing behind the last element
Chris@16 90 static
Chris@16 91 const_iterator end(const vector_type & v) {
Chris@16 92 return & (v[N]);
Chris@16 93 }
Chris@16 94 };
Chris@16 95
Chris@16 96 template < class T, int N >
Chris@16 97 struct mutable_vector_traits < T[N] > {
Chris@16 98
Chris@16 99 typedef T &reference;
Chris@16 100 typedef T *pointer;
Chris@16 101 typedef vector_reference< T[N] > closure_type;
Chris@16 102
Chris@16 103 };
Chris@16 104
Chris@16 105
Chris@16 106
Chris@16 107
Chris@16 108 }}} // Namespace boost::numeric::ublas
Chris@16 109
Chris@16 110 #endif