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