Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:50:43

0001 #ifndef BOOST_QVM_GEN_MAT_ASSIGN3_HPP_INCLUDED
0002 #define BOOST_QVM_GEN_MAT_ASSIGN3_HPP_INCLUDED
0003 
0004 // Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
0005 
0006 // Distributed under the Boost Software License, Version 1.0. (See accompanying
0007 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0008 
0009 // This file was generated by a program. Do not edit manually.
0010 
0011 #include <boost/qvm/config.hpp>
0012 #include <boost/qvm/enable_if.hpp>
0013 #include <boost/qvm/mat_traits.hpp>
0014 
0015 namespace boost { namespace qvm {
0016 
0017 template <class A,class B>
0018 BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
0019 typename enable_if_c<
0020     mat_traits<A>::rows==3 && mat_traits<B>::rows==3 &&
0021     mat_traits<A>::cols==3 && mat_traits<B>::cols==3,
0022     A &>::type
0023 assign( A & a, B const & b )
0024     {
0025     write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
0026     write_mat_element<0,1>(a,mat_traits<B>::template read_element<0,1>(b));
0027     write_mat_element<0,2>(a,mat_traits<B>::template read_element<0,2>(b));
0028     write_mat_element<1,0>(a,mat_traits<B>::template read_element<1,0>(b));
0029     write_mat_element<1,1>(a,mat_traits<B>::template read_element<1,1>(b));
0030     write_mat_element<1,2>(a,mat_traits<B>::template read_element<1,2>(b));
0031     write_mat_element<2,0>(a,mat_traits<B>::template read_element<2,0>(b));
0032     write_mat_element<2,1>(a,mat_traits<B>::template read_element<2,1>(b));
0033     write_mat_element<2,2>(a,mat_traits<B>::template read_element<2,2>(b));
0034     return a;
0035     }
0036 
0037 namespace
0038 sfinae
0039     {
0040     using ::boost::qvm::assign;
0041     }
0042 
0043 namespace
0044 qvm_detail
0045     {
0046     template <int R,int C>
0047     struct assign_mm_defined;
0048 
0049     template <>
0050     struct
0051     assign_mm_defined<3,3>
0052         {
0053         static bool const value=true;
0054         };
0055     }
0056 
0057 template <class A,class B>
0058 BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
0059 typename enable_if_c<
0060     mat_traits<A>::rows==3 && mat_traits<B>::rows==3 &&
0061     mat_traits<A>::cols==1 && mat_traits<B>::cols==1,
0062     A &>::type
0063 assign( A & a, B const & b )
0064     {
0065     write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
0066     write_mat_element<1,0>(a,mat_traits<B>::template read_element<1,0>(b));
0067     write_mat_element<2,0>(a,mat_traits<B>::template read_element<2,0>(b));
0068     return a;
0069     }
0070 
0071 namespace
0072 sfinae
0073     {
0074     using ::boost::qvm::assign;
0075     }
0076 
0077 namespace
0078 qvm_detail
0079     {
0080     template <int R,int C>
0081     struct assign_mm_defined;
0082 
0083     template <>
0084     struct
0085     assign_mm_defined<3,1>
0086         {
0087         static bool const value=true;
0088         };
0089     }
0090 
0091 template <class A,class B>
0092 BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
0093 typename enable_if_c<
0094     mat_traits<A>::rows==1 && mat_traits<B>::rows==1 &&
0095     mat_traits<A>::cols==3 && mat_traits<B>::cols==3,
0096     A &>::type
0097 assign( A & a, B const & b )
0098     {
0099     write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
0100     write_mat_element<0,1>(a,mat_traits<B>::template read_element<0,1>(b));
0101     write_mat_element<0,2>(a,mat_traits<B>::template read_element<0,2>(b));
0102     return a;
0103     }
0104 
0105 namespace
0106 sfinae
0107     {
0108     using ::boost::qvm::assign;
0109     }
0110 
0111 namespace
0112 qvm_detail
0113     {
0114     template <int R,int C>
0115     struct assign_mm_defined;
0116 
0117     template <>
0118     struct
0119     assign_mm_defined<1,3>
0120         {
0121         static bool const value=true;
0122         };
0123     }
0124 
0125 } }
0126 
0127 #endif