1 //Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc. 2 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) 5 6 #ifndef BOOST_QVM_209A50EE407836FD124932F69E7D49DC 7 #define BOOST_QVM_209A50EE407836FD124932F69E7D49DC 8 9 //This file was generated by a program. Do not edit manually. 10 11 #include <boost/qvm/enable_if.hpp> 12 #include <boost/qvm/inline.hpp> 13 #include <boost/qvm/mat_traits.hpp> 14 15 namespace 16 boost 17 { 18 namespace 19 qvm 20 { 21 template <class A,class B> 22 BOOST_QVM_INLINE_OPERATIONS 23 typename enable_if_c< 24 mat_traits<A>::rows==3 && mat_traits<B>::rows==3 && 25 mat_traits<A>::cols==3 && mat_traits<B>::cols==3, 26 A &>::type assign(A & a,B const & b)27 assign( A & a, B const & b ) 28 { 29 mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b); 30 mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b); 31 mat_traits<A>::template write_element<0,2>(a)=mat_traits<B>::template read_element<0,2>(b); 32 mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b); 33 mat_traits<A>::template write_element<1,1>(a)=mat_traits<B>::template read_element<1,1>(b); 34 mat_traits<A>::template write_element<1,2>(a)=mat_traits<B>::template read_element<1,2>(b); 35 mat_traits<A>::template write_element<2,0>(a)=mat_traits<B>::template read_element<2,0>(b); 36 mat_traits<A>::template write_element<2,1>(a)=mat_traits<B>::template read_element<2,1>(b); 37 mat_traits<A>::template write_element<2,2>(a)=mat_traits<B>::template read_element<2,2>(b); 38 return a; 39 } 40 41 namespace 42 sfinae 43 { 44 using ::boost::qvm::assign; 45 } 46 47 namespace 48 qvm_detail 49 { 50 template <int R,int C> 51 struct assign_mm_defined; 52 53 template <> 54 struct 55 assign_mm_defined<3,3> 56 { 57 static bool const value=true; 58 }; 59 } 60 61 template <class A,class B> 62 BOOST_QVM_INLINE_OPERATIONS 63 typename enable_if_c< 64 mat_traits<A>::rows==3 && mat_traits<B>::rows==3 && 65 mat_traits<A>::cols==1 && mat_traits<B>::cols==1, 66 A &>::type assign(A & a,B const & b)67 assign( A & a, B const & b ) 68 { 69 mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b); 70 mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b); 71 mat_traits<A>::template write_element<2,0>(a)=mat_traits<B>::template read_element<2,0>(b); 72 return a; 73 } 74 75 namespace 76 sfinae 77 { 78 using ::boost::qvm::assign; 79 } 80 81 namespace 82 qvm_detail 83 { 84 template <int R,int C> 85 struct assign_mm_defined; 86 87 template <> 88 struct 89 assign_mm_defined<3,1> 90 { 91 static bool const value=true; 92 }; 93 } 94 95 template <class A,class B> 96 BOOST_QVM_INLINE_OPERATIONS 97 typename enable_if_c< 98 mat_traits<A>::rows==1 && mat_traits<B>::rows==1 && 99 mat_traits<A>::cols==3 && mat_traits<B>::cols==3, 100 A &>::type assign(A & a,B const & b)101 assign( A & a, B const & b ) 102 { 103 mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b); 104 mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b); 105 mat_traits<A>::template write_element<0,2>(a)=mat_traits<B>::template read_element<0,2>(b); 106 return a; 107 } 108 109 namespace 110 sfinae 111 { 112 using ::boost::qvm::assign; 113 } 114 115 namespace 116 qvm_detail 117 { 118 template <int R,int C> 119 struct assign_mm_defined; 120 121 template <> 122 struct 123 assign_mm_defined<1,3> 124 { 125 static bool const value=true; 126 }; 127 } 128 129 } 130 } 131 132 #endif 133