1 //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
3 //Distributed under the Boost Software License, Version 1.0. (See accompanying
4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 #ifndef UUID_44EB56F0A33711DEB31B41BB56D89593
7 #define UUID_44EB56F0A33711DEB31B41BB56D89593
9 #include <boost/qvm/detail/vec_assign.hpp>
10 #include <boost/qvm/assert.hpp>
11 #include <boost/qvm/static_assert.hpp>
19 template <class T,int D>
36 template <class T,int Dim>
38 vec_traits< vec<T,Dim> >
40 typedef vec<T,Dim> this_vector;
41 typedef T scalar_type;
42 static int const dim=Dim;
46 BOOST_QVM_INLINE_CRITICAL
48 read_element( this_vector const & x )
50 BOOST_QVM_STATIC_ASSERT(I>=0);
51 BOOST_QVM_STATIC_ASSERT(I<dim);
57 BOOST_QVM_INLINE_CRITICAL
59 write_element( this_vector & x )
61 BOOST_QVM_STATIC_ASSERT(I>=0);
62 BOOST_QVM_STATIC_ASSERT(I<dim);
67 BOOST_QVM_INLINE_CRITICAL
69 read_element_idx( int i, this_vector const & x )
71 BOOST_QVM_ASSERT(i>=0);
72 BOOST_QVM_ASSERT(i<dim);
77 BOOST_QVM_INLINE_CRITICAL
79 write_element_idx( int i, this_vector & x )
81 BOOST_QVM_ASSERT(i>=0);
82 BOOST_QVM_ASSERT(i<dim);