]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/qvm/gen/mat_assign3.hpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / boost / qvm / gen / mat_assign3.hpp
1 #ifndef BOOST_QVM_GEN_MAT_ASSIGN3_HPP_INCLUDED
2 #define BOOST_QVM_GEN_MAT_ASSIGN3_HPP_INCLUDED
3
4 // Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
5
6 // Distributed under the Boost Software License, Version 1.0. (See accompanying
7 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
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 boost { namespace qvm {
16
17 template <class A,class B>
18 BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
19 typename enable_if_c<
20 mat_traits<A>::rows==3 && mat_traits<B>::rows==3 &&
21 mat_traits<A>::cols==3 && mat_traits<B>::cols==3,
22 A &>::type
23 assign( A & a, B const & b )
24 {
25 mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
26 mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b);
27 mat_traits<A>::template write_element<0,2>(a)=mat_traits<B>::template read_element<0,2>(b);
28 mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b);
29 mat_traits<A>::template write_element<1,1>(a)=mat_traits<B>::template read_element<1,1>(b);
30 mat_traits<A>::template write_element<1,2>(a)=mat_traits<B>::template read_element<1,2>(b);
31 mat_traits<A>::template write_element<2,0>(a)=mat_traits<B>::template read_element<2,0>(b);
32 mat_traits<A>::template write_element<2,1>(a)=mat_traits<B>::template read_element<2,1>(b);
33 mat_traits<A>::template write_element<2,2>(a)=mat_traits<B>::template read_element<2,2>(b);
34 return a;
35 }
36
37 namespace
38 sfinae
39 {
40 using ::boost::qvm::assign;
41 }
42
43 namespace
44 qvm_detail
45 {
46 template <int R,int C>
47 struct assign_mm_defined;
48
49 template <>
50 struct
51 assign_mm_defined<3,3>
52 {
53 static bool const value=true;
54 };
55 }
56
57 template <class A,class B>
58 BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
59 typename enable_if_c<
60 mat_traits<A>::rows==3 && mat_traits<B>::rows==3 &&
61 mat_traits<A>::cols==1 && mat_traits<B>::cols==1,
62 A &>::type
63 assign( A & a, B const & b )
64 {
65 mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
66 mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b);
67 mat_traits<A>::template write_element<2,0>(a)=mat_traits<B>::template read_element<2,0>(b);
68 return a;
69 }
70
71 namespace
72 sfinae
73 {
74 using ::boost::qvm::assign;
75 }
76
77 namespace
78 qvm_detail
79 {
80 template <int R,int C>
81 struct assign_mm_defined;
82
83 template <>
84 struct
85 assign_mm_defined<3,1>
86 {
87 static bool const value=true;
88 };
89 }
90
91 template <class A,class B>
92 BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
93 typename enable_if_c<
94 mat_traits<A>::rows==1 && mat_traits<B>::rows==1 &&
95 mat_traits<A>::cols==3 && mat_traits<B>::cols==3,
96 A &>::type
97 assign( A & a, B const & b )
98 {
99 mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
100 mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b);
101 mat_traits<A>::template write_element<0,2>(a)=mat_traits<B>::template read_element<0,2>(b);
102 return a;
103 }
104
105 namespace
106 sfinae
107 {
108 using ::boost::qvm::assign;
109 }
110
111 namespace
112 qvm_detail
113 {
114 template <int R,int C>
115 struct assign_mm_defined;
116
117 template <>
118 struct
119 assign_mm_defined<1,3>
120 {
121 static bool const value=true;
122 };
123 }
124
125 } }
126
127 #endif