123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- /**
- * -*- c++ -*-
- *
- * \file c_array.hpp
- *
- * \brief provides specializations of matrix and vector traits for c arrays and c matrices.
- *
- * Copyright (c) 2009, Gunter Winkler
- *
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * \author Gunter Winkler (guwi17 at gmx dot de)
- */
- #ifndef BOOST_NUMERIC_UBLAS_TRAITS_C_ARRAY_HPP
- #define BOOST_NUMERIC_UBLAS_TRAITS_C_ARRAY_HPP
- #include <boost/numeric/ublas/traits.hpp>
- #include <boost/numeric/ublas/traits/const_iterator_type.hpp>
- #include <boost/numeric/ublas/traits/iterator_type.hpp>
- namespace boost { namespace numeric { namespace ublas {
- namespace detail {
-
-
- }
- template < class T, int M, int N >
- struct matrix_view_traits < T[M][N] > {
- typedef T matrix_type[M][N];
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
- typedef row_major_tag orientation_category;
- typedef dense_tag storage_category;
-
- typedef T value_type;
- typedef const T &const_reference;
- typedef const T *const_pointer;
-
- typedef const matrix_reference<const matrix_type> const_closure_type;
- typedef T row_type[N];
- typedef const row_type *const_iterator1;
- typedef const_pointer const_iterator2;
- };
- template < class T, int M, int N >
- struct mutable_matrix_traits < T[M][N] > {
- typedef T matrix_type[M][N];
- typedef T *reference;
-
- typedef matrix_reference<matrix_type> closure_type;
- };
- template < class T, int N >
- struct vector_view_traits < T[N] > {
- typedef T vector_type[N];
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
- typedef dense_tag storage_category;
-
- typedef T value_type;
- typedef const T &const_reference;
- typedef const T *const_pointer;
-
- typedef const vector_reference<const vector_type> const_closure_type;
- typedef const_pointer const_iterator;
- /// iterator pointing to the first element
- static
- const_iterator begin(const vector_type & v) {
- return & (v[0]);
- }
- /// iterator pointing behind the last element
- static
- const_iterator end(const vector_type & v) {
- return & (v[N]);
- }
- };
- template < class T, int N >
- struct mutable_vector_traits < T[N] > {
-
- typedef T &reference;
- typedef T *pointer;
- typedef vector_reference< T[N] > closure_type;
- };
- }}} // Namespace boost::numeric::ublas
- #endif
|