-//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.\r
-\r
-//Distributed under the Boost Software License, Version 1.0. (See accompanying\r
-//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\r
-\r
-#ifndef UUID_185557CE385511E780ACD7B781262D2E\r
-#define UUID_185557CE385511E780ACD7B781262D2E\r
-\r
-#include <boost/qvm/gen/vec_assign2.hpp>\r
-#include <boost/qvm/gen/vec_assign3.hpp>\r
-#include <boost/qvm/gen/vec_assign4.hpp>\r
-\r
-namespace\r
-boost\r
- {\r
- namespace\r
- qvm\r
- {\r
- namespace\r
- qvm_detail\r
- {\r
- template <int D>\r
- struct\r
- assign_vv_defined\r
- {\r
- static bool const value=false;\r
- };\r
-\r
- template <int I,int N>\r
- struct\r
- copy_vector_elements\r
- {\r
- template <class A,class B>\r
- static\r
- void\r
- f( A & a, B const & b )\r
- {\r
- vec_traits<A>::template write_element<I>(a)=vec_traits<B>::template read_element<I>(b);\r
- copy_vector_elements<I+1,N>::f(a,b);\r
- }\r
- };\r
-\r
- template <int N>\r
- struct\r
- copy_vector_elements<N,N>\r
- {\r
- template <class A,class B>\r
- static\r
- void\r
- f( A &, B const & )\r
- {\r
- }\r
- };\r
- }\r
-\r
- template <class A,class B>\r
- inline\r
- typename boost::enable_if_c<\r
- is_vec<A>::value && is_vec<B>::value &&\r
- vec_traits<A>::dim==vec_traits<B>::dim &&\r
- !qvm_detail::assign_vv_defined<vec_traits<A>::dim>::value,\r
- A &>::type\r
- assign( A & a, B const & b )\r
- {\r
- qvm_detail::copy_vector_elements<0,vec_traits<A>::dim>::f(a,b);\r
- return a;\r
- }\r
- }\r
- }\r
-\r
-#endif\r
+//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
+
+//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)
+
+#ifndef UUID_185557CE385511E780ACD7B781262D2E
+#define UUID_185557CE385511E780ACD7B781262D2E
+
+#include <boost/qvm/gen/vec_assign2.hpp>
+#include <boost/qvm/gen/vec_assign3.hpp>
+#include <boost/qvm/gen/vec_assign4.hpp>
+
+namespace
+boost
+ {
+ namespace
+ qvm
+ {
+ namespace
+ qvm_detail
+ {
+ template <int D>
+ struct
+ assign_vv_defined
+ {
+ static bool const value=false;
+ };
+
+ template <int I,int N>
+ struct
+ copy_vector_elements
+ {
+ template <class A,class B>
+ static
+ void
+ f( A & a, B const & b )
+ {
+ vec_traits<A>::template write_element<I>(a)=vec_traits<B>::template read_element<I>(b);
+ copy_vector_elements<I+1,N>::f(a,b);
+ }
+ };
+
+ template <int N>
+ struct
+ copy_vector_elements<N,N>
+ {
+ template <class A,class B>
+ static
+ void
+ f( A &, B const & )
+ {
+ }
+ };
+ }
+
+ template <class A,class B>
+ inline
+ typename boost::enable_if_c<
+ is_vec<A>::value && is_vec<B>::value &&
+ vec_traits<A>::dim==vec_traits<B>::dim &&
+ !qvm_detail::assign_vv_defined<vec_traits<A>::dim>::value,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ qvm_detail::copy_vector_elements<0,vec_traits<A>::dim>::f(a,b);
+ return a;
+ }
+ }
+ }
+
+#endif