EVOLUTION-MANAGER
Edit File: c_array.hpp
/** * -*- 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