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