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_AD4F14F2444066D06BC430B7323BA122 7 #define BOOST_QVM_AD4F14F2444066D06BC430B7323BA122 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==4 && mat_traits<B>::rows==4 && 25 mat_traits<A>::cols==4 && mat_traits<B>::cols==4, 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<0,3>(a)=mat_traits<B>::template read_element<0,3>(b); 33 mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b); 34 mat_traits<A>::template write_element<1,1>(a)=mat_traits<B>::template read_element<1,1>(b); 35 mat_traits<A>::template write_element<1,2>(a)=mat_traits<B>::template read_element<1,2>(b); 36 mat_traits<A>::template write_element<1,3>(a)=mat_traits<B>::template read_element<1,3>(b); 37 mat_traits<A>::template write_element<2,0>(a)=mat_traits<B>::template read_element<2,0>(b); 38 mat_traits<A>::template write_element<2,1>(a)=mat_traits<B>::template read_element<2,1>(b); 39 mat_traits<A>::template write_element<2,2>(a)=mat_traits<B>::template read_element<2,2>(b); 40 mat_traits<A>::template write_element<2,3>(a)=mat_traits<B>::template read_element<2,3>(b); 41 mat_traits<A>::template write_element<3,0>(a)=mat_traits<B>::template read_element<3,0>(b); 42 mat_traits<A>::template write_element<3,1>(a)=mat_traits<B>::template read_element<3,1>(b); 43 mat_traits<A>::template write_element<3,2>(a)=mat_traits<B>::template read_element<3,2>(b); 44 mat_traits<A>::template write_element<3,3>(a)=mat_traits<B>::template read_element<3,3>(b); 45 return a; 46 } 47 48 namespace 49 sfinae 50 { 51 using ::boost::qvm::assign; 52 } 53 54 namespace 55 qvm_detail 56 { 57 template <int R,int C> 58 struct assign_mm_defined; 59 60 template <> 61 struct 62 assign_mm_defined<4,4> 63 { 64 static bool const value=true; 65 }; 66 } 67 68 template <class A,class B> 69 BOOST_QVM_INLINE_OPERATIONS 70 typename enable_if_c< 71 mat_traits<A>::rows==4 && mat_traits<B>::rows==4 && 72 mat_traits<A>::cols==1 && mat_traits<B>::cols==1, 73 A &>::type assign(A & a,B const & b)74 assign( A & a, B const & b ) 75 { 76 mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b); 77 mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b); 78 mat_traits<A>::template write_element<2,0>(a)=mat_traits<B>::template read_element<2,0>(b); 79 mat_traits<A>::template write_element<3,0>(a)=mat_traits<B>::template read_element<3,0>(b); 80 return a; 81 } 82 83 namespace 84 sfinae 85 { 86 using ::boost::qvm::assign; 87 } 88 89 namespace 90 qvm_detail 91 { 92 template <int R,int C> 93 struct assign_mm_defined; 94 95 template <> 96 struct 97 assign_mm_defined<4,1> 98 { 99 static bool const value=true; 100 }; 101 } 102 103 template <class A,class B> 104 BOOST_QVM_INLINE_OPERATIONS 105 typename enable_if_c< 106 mat_traits<A>::rows==1 && mat_traits<B>::rows==1 && 107 mat_traits<A>::cols==4 && mat_traits<B>::cols==4, 108 A &>::type assign(A & a,B const & b)109 assign( A & a, B const & b ) 110 { 111 mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b); 112 mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b); 113 mat_traits<A>::template write_element<0,2>(a)=mat_traits<B>::template read_element<0,2>(b); 114 mat_traits<A>::template write_element<0,3>(a)=mat_traits<B>::template read_element<0,3>(b); 115 return a; 116 } 117 118 namespace 119 sfinae 120 { 121 using ::boost::qvm::assign; 122 } 123 124 namespace 125 qvm_detail 126 { 127 template <int R,int C> 128 struct assign_mm_defined; 129 130 template <> 131 struct 132 assign_mm_defined<1,4> 133 { 134 static bool const value=true; 135 }; 136 } 137 138 } 139 } 140 141 #endif 142