update boost

This commit is contained in:
2023-11-24 12:56:13 -06:00
parent cfc99971af
commit 19d727037a
9260 changed files with 849256 additions and 299957 deletions

View File

@@ -1,125 +1,120 @@
//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_GEN_MAT_ASSIGN2_HPP_INCLUDED
#define BOOST_QVM_GEN_MAT_ASSIGN2_HPP_INCLUDED
//Distributed under the Boost Software License, Version 1.0. (See accompanying
//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_5DD4CBFC96F5453B13D89A1CDBAE32
#define BOOST_QVM_5DD4CBFC96F5453B13D89A1CDBAE32
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//This file was generated by a program. Do not edit manually.
// This file was generated by a program. Do not edit manually.
#include <boost/qvm/config.hpp>
#include <boost/qvm/enable_if.hpp>
#include <boost/qvm/inline.hpp>
#include <boost/qvm/mat_traits.hpp>
namespace
boost
namespace boost { namespace qvm {
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==2 && mat_traits<B>::rows==2 &&
mat_traits<A>::cols==2 && mat_traits<B>::cols==2,
A &>::type
assign( A & a, B const & b )
{
namespace
qvm
{
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==2 && mat_traits<B>::rows==2 &&
mat_traits<A>::cols==2 && mat_traits<B>::cols==2,
A &>::type
assign( A & a, B const & b )
{
mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b);
mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b);
mat_traits<A>::template write_element<1,1>(a)=mat_traits<B>::template read_element<1,1>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<2,2>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==2 && mat_traits<B>::rows==2 &&
mat_traits<A>::cols==1 && mat_traits<B>::cols==1,
A &>::type
assign( A & a, B const & b )
{
mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<2,1>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==1 && mat_traits<B>::rows==1 &&
mat_traits<A>::cols==2 && mat_traits<B>::cols==2,
A &>::type
assign( A & a, B const & b )
{
mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<1,2>
{
static bool const value=true;
};
}
}
write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
write_mat_element<0,1>(a,mat_traits<B>::template read_element<0,1>(b));
write_mat_element<1,0>(a,mat_traits<B>::template read_element<1,0>(b));
write_mat_element<1,1>(a,mat_traits<B>::template read_element<1,1>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<2,2>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==2 && mat_traits<B>::rows==2 &&
mat_traits<A>::cols==1 && mat_traits<B>::cols==1,
A &>::type
assign( A & a, B const & b )
{
write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
write_mat_element<1,0>(a,mat_traits<B>::template read_element<1,0>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<2,1>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==1 && mat_traits<B>::rows==1 &&
mat_traits<A>::cols==2 && mat_traits<B>::cols==2,
A &>::type
assign( A & a, B const & b )
{
write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
write_mat_element<0,1>(a,mat_traits<B>::template read_element<0,1>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<1,2>
{
static bool const value=true;
};
}
} }
#endif

View File

@@ -1,132 +1,127 @@
//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_GEN_MAT_ASSIGN3_HPP_INCLUDED
#define BOOST_QVM_GEN_MAT_ASSIGN3_HPP_INCLUDED
//Distributed under the Boost Software License, Version 1.0. (See accompanying
//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_209A50EE407836FD124932F69E7D49DC
#define BOOST_QVM_209A50EE407836FD124932F69E7D49DC
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//This file was generated by a program. Do not edit manually.
// This file was generated by a program. Do not edit manually.
#include <boost/qvm/config.hpp>
#include <boost/qvm/enable_if.hpp>
#include <boost/qvm/inline.hpp>
#include <boost/qvm/mat_traits.hpp>
namespace
boost
namespace boost { namespace qvm {
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==3 && mat_traits<B>::rows==3 &&
mat_traits<A>::cols==3 && mat_traits<B>::cols==3,
A &>::type
assign( A & a, B const & b )
{
namespace
qvm
{
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==3 && mat_traits<B>::rows==3 &&
mat_traits<A>::cols==3 && mat_traits<B>::cols==3,
A &>::type
assign( A & a, B const & b )
{
mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b);
mat_traits<A>::template write_element<0,2>(a)=mat_traits<B>::template read_element<0,2>(b);
mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b);
mat_traits<A>::template write_element<1,1>(a)=mat_traits<B>::template read_element<1,1>(b);
mat_traits<A>::template write_element<1,2>(a)=mat_traits<B>::template read_element<1,2>(b);
mat_traits<A>::template write_element<2,0>(a)=mat_traits<B>::template read_element<2,0>(b);
mat_traits<A>::template write_element<2,1>(a)=mat_traits<B>::template read_element<2,1>(b);
mat_traits<A>::template write_element<2,2>(a)=mat_traits<B>::template read_element<2,2>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<3,3>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==3 && mat_traits<B>::rows==3 &&
mat_traits<A>::cols==1 && mat_traits<B>::cols==1,
A &>::type
assign( A & a, B const & b )
{
mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b);
mat_traits<A>::template write_element<2,0>(a)=mat_traits<B>::template read_element<2,0>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<3,1>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==1 && mat_traits<B>::rows==1 &&
mat_traits<A>::cols==3 && mat_traits<B>::cols==3,
A &>::type
assign( A & a, B const & b )
{
mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b);
mat_traits<A>::template write_element<0,2>(a)=mat_traits<B>::template read_element<0,2>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<1,3>
{
static bool const value=true;
};
}
}
write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
write_mat_element<0,1>(a,mat_traits<B>::template read_element<0,1>(b));
write_mat_element<0,2>(a,mat_traits<B>::template read_element<0,2>(b));
write_mat_element<1,0>(a,mat_traits<B>::template read_element<1,0>(b));
write_mat_element<1,1>(a,mat_traits<B>::template read_element<1,1>(b));
write_mat_element<1,2>(a,mat_traits<B>::template read_element<1,2>(b));
write_mat_element<2,0>(a,mat_traits<B>::template read_element<2,0>(b));
write_mat_element<2,1>(a,mat_traits<B>::template read_element<2,1>(b));
write_mat_element<2,2>(a,mat_traits<B>::template read_element<2,2>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<3,3>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==3 && mat_traits<B>::rows==3 &&
mat_traits<A>::cols==1 && mat_traits<B>::cols==1,
A &>::type
assign( A & a, B const & b )
{
write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
write_mat_element<1,0>(a,mat_traits<B>::template read_element<1,0>(b));
write_mat_element<2,0>(a,mat_traits<B>::template read_element<2,0>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<3,1>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==1 && mat_traits<B>::rows==1 &&
mat_traits<A>::cols==3 && mat_traits<B>::cols==3,
A &>::type
assign( A & a, B const & b )
{
write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
write_mat_element<0,1>(a,mat_traits<B>::template read_element<0,1>(b));
write_mat_element<0,2>(a,mat_traits<B>::template read_element<0,2>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<1,3>
{
static bool const value=true;
};
}
} }
#endif

View File

@@ -1,141 +1,136 @@
//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_GEN_MAT_ASSIGN4_HPP_INCLUDED
#define BOOST_QVM_GEN_MAT_ASSIGN4_HPP_INCLUDED
//Distributed under the Boost Software License, Version 1.0. (See accompanying
//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_AD4F14F2444066D06BC430B7323BA122
#define BOOST_QVM_AD4F14F2444066D06BC430B7323BA122
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//This file was generated by a program. Do not edit manually.
// This file was generated by a program. Do not edit manually.
#include <boost/qvm/config.hpp>
#include <boost/qvm/enable_if.hpp>
#include <boost/qvm/inline.hpp>
#include <boost/qvm/mat_traits.hpp>
namespace
boost
namespace boost { namespace qvm {
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==4 && mat_traits<B>::rows==4 &&
mat_traits<A>::cols==4 && mat_traits<B>::cols==4,
A &>::type
assign( A & a, B const & b )
{
namespace
qvm
{
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==4 && mat_traits<B>::rows==4 &&
mat_traits<A>::cols==4 && mat_traits<B>::cols==4,
A &>::type
assign( A & a, B const & b )
{
mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b);
mat_traits<A>::template write_element<0,2>(a)=mat_traits<B>::template read_element<0,2>(b);
mat_traits<A>::template write_element<0,3>(a)=mat_traits<B>::template read_element<0,3>(b);
mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b);
mat_traits<A>::template write_element<1,1>(a)=mat_traits<B>::template read_element<1,1>(b);
mat_traits<A>::template write_element<1,2>(a)=mat_traits<B>::template read_element<1,2>(b);
mat_traits<A>::template write_element<1,3>(a)=mat_traits<B>::template read_element<1,3>(b);
mat_traits<A>::template write_element<2,0>(a)=mat_traits<B>::template read_element<2,0>(b);
mat_traits<A>::template write_element<2,1>(a)=mat_traits<B>::template read_element<2,1>(b);
mat_traits<A>::template write_element<2,2>(a)=mat_traits<B>::template read_element<2,2>(b);
mat_traits<A>::template write_element<2,3>(a)=mat_traits<B>::template read_element<2,3>(b);
mat_traits<A>::template write_element<3,0>(a)=mat_traits<B>::template read_element<3,0>(b);
mat_traits<A>::template write_element<3,1>(a)=mat_traits<B>::template read_element<3,1>(b);
mat_traits<A>::template write_element<3,2>(a)=mat_traits<B>::template read_element<3,2>(b);
mat_traits<A>::template write_element<3,3>(a)=mat_traits<B>::template read_element<3,3>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<4,4>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==4 && mat_traits<B>::rows==4 &&
mat_traits<A>::cols==1 && mat_traits<B>::cols==1,
A &>::type
assign( A & a, B const & b )
{
mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
mat_traits<A>::template write_element<1,0>(a)=mat_traits<B>::template read_element<1,0>(b);
mat_traits<A>::template write_element<2,0>(a)=mat_traits<B>::template read_element<2,0>(b);
mat_traits<A>::template write_element<3,0>(a)=mat_traits<B>::template read_element<3,0>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<4,1>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==1 && mat_traits<B>::rows==1 &&
mat_traits<A>::cols==4 && mat_traits<B>::cols==4,
A &>::type
assign( A & a, B const & b )
{
mat_traits<A>::template write_element<0,0>(a)=mat_traits<B>::template read_element<0,0>(b);
mat_traits<A>::template write_element<0,1>(a)=mat_traits<B>::template read_element<0,1>(b);
mat_traits<A>::template write_element<0,2>(a)=mat_traits<B>::template read_element<0,2>(b);
mat_traits<A>::template write_element<0,3>(a)=mat_traits<B>::template read_element<0,3>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<1,4>
{
static bool const value=true;
};
}
}
write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
write_mat_element<0,1>(a,mat_traits<B>::template read_element<0,1>(b));
write_mat_element<0,2>(a,mat_traits<B>::template read_element<0,2>(b));
write_mat_element<0,3>(a,mat_traits<B>::template read_element<0,3>(b));
write_mat_element<1,0>(a,mat_traits<B>::template read_element<1,0>(b));
write_mat_element<1,1>(a,mat_traits<B>::template read_element<1,1>(b));
write_mat_element<1,2>(a,mat_traits<B>::template read_element<1,2>(b));
write_mat_element<1,3>(a,mat_traits<B>::template read_element<1,3>(b));
write_mat_element<2,0>(a,mat_traits<B>::template read_element<2,0>(b));
write_mat_element<2,1>(a,mat_traits<B>::template read_element<2,1>(b));
write_mat_element<2,2>(a,mat_traits<B>::template read_element<2,2>(b));
write_mat_element<2,3>(a,mat_traits<B>::template read_element<2,3>(b));
write_mat_element<3,0>(a,mat_traits<B>::template read_element<3,0>(b));
write_mat_element<3,1>(a,mat_traits<B>::template read_element<3,1>(b));
write_mat_element<3,2>(a,mat_traits<B>::template read_element<3,2>(b));
write_mat_element<3,3>(a,mat_traits<B>::template read_element<3,3>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<4,4>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==4 && mat_traits<B>::rows==4 &&
mat_traits<A>::cols==1 && mat_traits<B>::cols==1,
A &>::type
assign( A & a, B const & b )
{
write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
write_mat_element<1,0>(a,mat_traits<B>::template read_element<1,0>(b));
write_mat_element<2,0>(a,mat_traits<B>::template read_element<2,0>(b));
write_mat_element<3,0>(a,mat_traits<B>::template read_element<3,0>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<4,1>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==1 && mat_traits<B>::rows==1 &&
mat_traits<A>::cols==4 && mat_traits<B>::cols==4,
A &>::type
assign( A & a, B const & b )
{
write_mat_element<0,0>(a,mat_traits<B>::template read_element<0,0>(b));
write_mat_element<0,1>(a,mat_traits<B>::template read_element<0,1>(b));
write_mat_element<0,2>(a,mat_traits<B>::template read_element<0,2>(b));
write_mat_element<0,3>(a,mat_traits<B>::template read_element<0,3>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int R,int C>
struct assign_mm_defined;
template <>
struct
assign_mm_defined<1,4>
{
static bool const value=true;
};
}
} }
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,56 +1,51 @@
//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_GEN_VEC_ASSIGN2_HPP_INCLUDED
#define BOOST_QVM_GEN_VEC_ASSIGN2_HPP_INCLUDED
//Distributed under the Boost Software License, Version 1.0. (See accompanying
//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_61CDD11E9D9C167272E61DF0844F4A77
#define BOOST_QVM_61CDD11E9D9C167272E61DF0844F4A77
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//This file was generated by a program. Do not edit manually.
// This file was generated by a program. Do not edit manually.
#include <boost/qvm/config.hpp>
#include <boost/qvm/enable_if.hpp>
#include <boost/qvm/inline.hpp>
#include <boost/qvm/vec_traits.hpp>
namespace
boost
namespace boost { namespace qvm {
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
vec_traits<A>::dim==2 && vec_traits<B>::dim==2,
A &>::type
assign( A & a, B const & b )
{
namespace
qvm
{
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
vec_traits<A>::dim==2 && vec_traits<B>::dim==2,
A &>::type
assign( A & a, B const & b )
{
vec_traits<A>::template write_element<0>(a)=vec_traits<B>::template read_element<0>(b);
vec_traits<A>::template write_element<1>(a)=vec_traits<B>::template read_element<1>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int D>
struct assign_vv_defined;
template <>
struct
assign_vv_defined<2>
{
static bool const value=true;
};
}
}
write_vec_element<0>(a,vec_traits<B>::template read_element<0>(b));
write_vec_element<1>(a,vec_traits<B>::template read_element<1>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int D>
struct assign_vv_defined;
template <>
struct
assign_vv_defined<2>
{
static bool const value=true;
};
}
} }
#endif

View File

@@ -1,57 +1,52 @@
//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_GEN_VEC_ASSIGN3_HPP_INCLUDED
#define BOOST_QVM_GEN_VEC_ASSIGN3_HPP_INCLUDED
//Distributed under the Boost Software License, Version 1.0. (See accompanying
//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_2D7E8392C53CBC9121E33749ECF4D5
#define BOOST_QVM_2D7E8392C53CBC9121E33749ECF4D5
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//This file was generated by a program. Do not edit manually.
// This file was generated by a program. Do not edit manually.
#include <boost/qvm/config.hpp>
#include <boost/qvm/enable_if.hpp>
#include <boost/qvm/inline.hpp>
#include <boost/qvm/vec_traits.hpp>
namespace
boost
namespace boost { namespace qvm {
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
vec_traits<A>::dim==3 && vec_traits<B>::dim==3,
A &>::type
assign( A & a, B const & b )
{
namespace
qvm
{
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
vec_traits<A>::dim==3 && vec_traits<B>::dim==3,
A &>::type
assign( A & a, B const & b )
{
vec_traits<A>::template write_element<0>(a)=vec_traits<B>::template read_element<0>(b);
vec_traits<A>::template write_element<1>(a)=vec_traits<B>::template read_element<1>(b);
vec_traits<A>::template write_element<2>(a)=vec_traits<B>::template read_element<2>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int D>
struct assign_vv_defined;
template <>
struct
assign_vv_defined<3>
{
static bool const value=true;
};
}
}
write_vec_element<0>(a,vec_traits<B>::template read_element<0>(b));
write_vec_element<1>(a,vec_traits<B>::template read_element<1>(b));
write_vec_element<2>(a,vec_traits<B>::template read_element<2>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int D>
struct assign_vv_defined;
template <>
struct
assign_vv_defined<3>
{
static bool const value=true;
};
}
} }
#endif

View File

@@ -1,58 +1,53 @@
//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_GEN_VEC_ASSIGN4_HPP_INCLUDED
#define BOOST_QVM_GEN_VEC_ASSIGN4_HPP_INCLUDED
//Distributed under the Boost Software License, Version 1.0. (See accompanying
//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_D49FD4A4597E35CF3222F4CCCFD3902D
#define BOOST_QVM_D49FD4A4597E35CF3222F4CCCFD3902D
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//This file was generated by a program. Do not edit manually.
// This file was generated by a program. Do not edit manually.
#include <boost/qvm/config.hpp>
#include <boost/qvm/enable_if.hpp>
#include <boost/qvm/inline.hpp>
#include <boost/qvm/vec_traits.hpp>
namespace
boost
namespace boost { namespace qvm {
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
vec_traits<A>::dim==4 && vec_traits<B>::dim==4,
A &>::type
assign( A & a, B const & b )
{
namespace
qvm
{
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
vec_traits<A>::dim==4 && vec_traits<B>::dim==4,
A &>::type
assign( A & a, B const & b )
{
vec_traits<A>::template write_element<0>(a)=vec_traits<B>::template read_element<0>(b);
vec_traits<A>::template write_element<1>(a)=vec_traits<B>::template read_element<1>(b);
vec_traits<A>::template write_element<2>(a)=vec_traits<B>::template read_element<2>(b);
vec_traits<A>::template write_element<3>(a)=vec_traits<B>::template read_element<3>(b);
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int D>
struct assign_vv_defined;
template <>
struct
assign_vv_defined<4>
{
static bool const value=true;
};
}
}
write_vec_element<0>(a,vec_traits<B>::template read_element<0>(b));
write_vec_element<1>(a,vec_traits<B>::template read_element<1>(b));
write_vec_element<2>(a,vec_traits<B>::template read_element<2>(b));
write_vec_element<3>(a,vec_traits<B>::template read_element<3>(b));
return a;
}
namespace
sfinae
{
using ::boost::qvm::assign;
}
namespace
qvm_detail
{
template <int D>
struct assign_vv_defined;
template <>
struct
assign_vv_defined<4>
{
static bool const value=true;
};
}
} }
#endif

View File

@@ -1,114 +1,109 @@
//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_GEN_VEC_MAT_OPERATIONS2_HPP_INCLUDED
#define BOOST_QVM_GEN_VEC_MAT_OPERATIONS2_HPP_INCLUDED
//Distributed under the Boost Software License, Version 1.0. (See accompanying
//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_48D38F75E6D91D2AE5C0F72B78818744
#define BOOST_QVM_48D38F75E6D91D2AE5C0F72B78818744
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//This file was generated by a program. Do not edit manually.
// This file was generated by a program. Do not edit manually.
#include <boost/qvm/config.hpp>
#include <boost/qvm/deduce_vec.hpp>
#include <boost/qvm/enable_if.hpp>
#include <boost/qvm/inline.hpp>
#include <boost/qvm/mat_traits.hpp>
#include <boost/qvm/vec_traits.hpp>
namespace
boost
namespace boost { namespace qvm {
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<A>::rows==2 && mat_traits<A>::cols==2 &&
vec_traits<B>::dim==2,
deduce_vec2<A,B,2> >::type
operator*( A const & a, B const & b )
{
namespace
qvm
{
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<A>::rows==2 && mat_traits<A>::cols==2 &&
vec_traits<B>::dim==2,
deduce_vec2<A,B,2> >::type
operator*( A const & a, B const & b )
{
typedef typename mat_traits<A>::scalar_type Ta;
typedef typename vec_traits<B>::scalar_type Tb;
Ta const a00 = mat_traits<A>::template read_element<0,0>(a);
Ta const a01 = mat_traits<A>::template read_element<0,1>(a);
Ta const a10 = mat_traits<A>::template read_element<1,0>(a);
Ta const a11 = mat_traits<A>::template read_element<1,1>(a);
Tb const b0 = vec_traits<B>::template read_element<0>(b);
Tb const b1 = vec_traits<B>::template read_element<1>(b);
typedef typename deduce_vec2<A,B,2>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==2);
R r;
vec_traits<R>::template write_element<0>(r)=a00*b0+a01*b1;
vec_traits<R>::template write_element<1>(r)=a10*b0+a11*b1;
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_mv_defined;
template <>
struct
mul_mv_defined<2,2>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<B>::rows==2 && mat_traits<B>::cols==2 &&
vec_traits<A>::dim==2,
deduce_vec2<A,B,2> >::type
operator*( A const & a, B const & b )
{
typedef typename vec_traits<A>::scalar_type Ta;
typedef typename mat_traits<B>::scalar_type Tb;
Ta const a0 = vec_traits<A>::template read_element<0>(a);
Ta const a1 = vec_traits<A>::template read_element<1>(a);
Tb const b00 = mat_traits<B>::template read_element<0,0>(b);
Tb const b01 = mat_traits<B>::template read_element<0,1>(b);
Tb const b10 = mat_traits<B>::template read_element<1,0>(b);
Tb const b11 = mat_traits<B>::template read_element<1,1>(b);
typedef typename deduce_vec2<A,B,2>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==2);
R r;
vec_traits<R>::template write_element<0>(r)=a0*b00+a1*b10;
vec_traits<R>::template write_element<1>(r)=a0*b01+a1*b11;
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_vm_defined;
template <>
struct
mul_vm_defined<2,2>
{
static bool const value=true;
};
}
}
typedef typename mat_traits<A>::scalar_type Ta;
typedef typename vec_traits<B>::scalar_type Tb;
Ta const a00 = mat_traits<A>::template read_element<0,0>(a);
Ta const a01 = mat_traits<A>::template read_element<0,1>(a);
Ta const a10 = mat_traits<A>::template read_element<1,0>(a);
Ta const a11 = mat_traits<A>::template read_element<1,1>(a);
Tb const b0 = vec_traits<B>::template read_element<0>(b);
Tb const b1 = vec_traits<B>::template read_element<1>(b);
typedef typename deduce_vec2<A,B,2>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==2);
R r;
write_vec_element<0>(r,a00*b0+a01*b1);
write_vec_element<1>(r,a10*b0+a11*b1);
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_mv_defined;
template <>
struct
mul_mv_defined<2,2>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<B>::rows==2 && mat_traits<B>::cols==2 &&
vec_traits<A>::dim==2,
deduce_vec2<A,B,2> >::type
operator*( A const & a, B const & b )
{
typedef typename vec_traits<A>::scalar_type Ta;
typedef typename mat_traits<B>::scalar_type Tb;
Ta const a0 = vec_traits<A>::template read_element<0>(a);
Ta const a1 = vec_traits<A>::template read_element<1>(a);
Tb const b00 = mat_traits<B>::template read_element<0,0>(b);
Tb const b01 = mat_traits<B>::template read_element<0,1>(b);
Tb const b10 = mat_traits<B>::template read_element<1,0>(b);
Tb const b11 = mat_traits<B>::template read_element<1,1>(b);
typedef typename deduce_vec2<A,B,2>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==2);
R r;
write_vec_element<0>(r,a0*b00+a1*b10);
write_vec_element<1>(r,a0*b01+a1*b11);
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_vm_defined;
template <>
struct
mul_vm_defined<2,2>
{
static bool const value=true;
};
}
} }
#endif

View File

@@ -1,128 +1,123 @@
//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_GEN_VEC_MAT_OPERATIONS3_HPP_INCLUDED
#define BOOST_QVM_GEN_VEC_MAT_OPERATIONS3_HPP_INCLUDED
//Distributed under the Boost Software License, Version 1.0. (See accompanying
//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_E5F500D4618DBE7B51573B33821F
#define BOOST_QVM_E5F500D4618DBE7B51573B33821F
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//This file was generated by a program. Do not edit manually.
// This file was generated by a program. Do not edit manually.
#include <boost/qvm/config.hpp>
#include <boost/qvm/deduce_vec.hpp>
#include <boost/qvm/enable_if.hpp>
#include <boost/qvm/inline.hpp>
#include <boost/qvm/mat_traits.hpp>
#include <boost/qvm/vec_traits.hpp>
namespace
boost
namespace boost { namespace qvm {
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<A>::rows==3 && mat_traits<A>::cols==3 &&
vec_traits<B>::dim==3,
deduce_vec2<A,B,3> >::type
operator*( A const & a, B const & b )
{
namespace
qvm
{
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<A>::rows==3 && mat_traits<A>::cols==3 &&
vec_traits<B>::dim==3,
deduce_vec2<A,B,3> >::type
operator*( A const & a, B const & b )
{
typedef typename mat_traits<A>::scalar_type Ta;
typedef typename vec_traits<B>::scalar_type Tb;
Ta const a00 = mat_traits<A>::template read_element<0,0>(a);
Ta const a01 = mat_traits<A>::template read_element<0,1>(a);
Ta const a02 = mat_traits<A>::template read_element<0,2>(a);
Ta const a10 = mat_traits<A>::template read_element<1,0>(a);
Ta const a11 = mat_traits<A>::template read_element<1,1>(a);
Ta const a12 = mat_traits<A>::template read_element<1,2>(a);
Ta const a20 = mat_traits<A>::template read_element<2,0>(a);
Ta const a21 = mat_traits<A>::template read_element<2,1>(a);
Ta const a22 = mat_traits<A>::template read_element<2,2>(a);
Tb const b0 = vec_traits<B>::template read_element<0>(b);
Tb const b1 = vec_traits<B>::template read_element<1>(b);
Tb const b2 = vec_traits<B>::template read_element<2>(b);
typedef typename deduce_vec2<A,B,3>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==3);
R r;
vec_traits<R>::template write_element<0>(r)=a00*b0+a01*b1+a02*b2;
vec_traits<R>::template write_element<1>(r)=a10*b0+a11*b1+a12*b2;
vec_traits<R>::template write_element<2>(r)=a20*b0+a21*b1+a22*b2;
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_mv_defined;
template <>
struct
mul_mv_defined<3,3>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<B>::rows==3 && mat_traits<B>::cols==3 &&
vec_traits<A>::dim==3,
deduce_vec2<A,B,3> >::type
operator*( A const & a, B const & b )
{
typedef typename vec_traits<A>::scalar_type Ta;
typedef typename mat_traits<B>::scalar_type Tb;
Ta const a0 = vec_traits<A>::template read_element<0>(a);
Ta const a1 = vec_traits<A>::template read_element<1>(a);
Ta const a2 = vec_traits<A>::template read_element<2>(a);
Tb const b00 = mat_traits<B>::template read_element<0,0>(b);
Tb const b01 = mat_traits<B>::template read_element<0,1>(b);
Tb const b02 = mat_traits<B>::template read_element<0,2>(b);
Tb const b10 = mat_traits<B>::template read_element<1,0>(b);
Tb const b11 = mat_traits<B>::template read_element<1,1>(b);
Tb const b12 = mat_traits<B>::template read_element<1,2>(b);
Tb const b20 = mat_traits<B>::template read_element<2,0>(b);
Tb const b21 = mat_traits<B>::template read_element<2,1>(b);
Tb const b22 = mat_traits<B>::template read_element<2,2>(b);
typedef typename deduce_vec2<A,B,3>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==3);
R r;
vec_traits<R>::template write_element<0>(r)=a0*b00+a1*b10+a2*b20;
vec_traits<R>::template write_element<1>(r)=a0*b01+a1*b11+a2*b21;
vec_traits<R>::template write_element<2>(r)=a0*b02+a1*b12+a2*b22;
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_vm_defined;
template <>
struct
mul_vm_defined<3,3>
{
static bool const value=true;
};
}
}
typedef typename mat_traits<A>::scalar_type Ta;
typedef typename vec_traits<B>::scalar_type Tb;
Ta const a00 = mat_traits<A>::template read_element<0,0>(a);
Ta const a01 = mat_traits<A>::template read_element<0,1>(a);
Ta const a02 = mat_traits<A>::template read_element<0,2>(a);
Ta const a10 = mat_traits<A>::template read_element<1,0>(a);
Ta const a11 = mat_traits<A>::template read_element<1,1>(a);
Ta const a12 = mat_traits<A>::template read_element<1,2>(a);
Ta const a20 = mat_traits<A>::template read_element<2,0>(a);
Ta const a21 = mat_traits<A>::template read_element<2,1>(a);
Ta const a22 = mat_traits<A>::template read_element<2,2>(a);
Tb const b0 = vec_traits<B>::template read_element<0>(b);
Tb const b1 = vec_traits<B>::template read_element<1>(b);
Tb const b2 = vec_traits<B>::template read_element<2>(b);
typedef typename deduce_vec2<A,B,3>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==3);
R r;
write_vec_element<0>(r,a00*b0+a01*b1+a02*b2);
write_vec_element<1>(r,a10*b0+a11*b1+a12*b2);
write_vec_element<2>(r,a20*b0+a21*b1+a22*b2);
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_mv_defined;
template <>
struct
mul_mv_defined<3,3>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<B>::rows==3 && mat_traits<B>::cols==3 &&
vec_traits<A>::dim==3,
deduce_vec2<A,B,3> >::type
operator*( A const & a, B const & b )
{
typedef typename vec_traits<A>::scalar_type Ta;
typedef typename mat_traits<B>::scalar_type Tb;
Ta const a0 = vec_traits<A>::template read_element<0>(a);
Ta const a1 = vec_traits<A>::template read_element<1>(a);
Ta const a2 = vec_traits<A>::template read_element<2>(a);
Tb const b00 = mat_traits<B>::template read_element<0,0>(b);
Tb const b01 = mat_traits<B>::template read_element<0,1>(b);
Tb const b02 = mat_traits<B>::template read_element<0,2>(b);
Tb const b10 = mat_traits<B>::template read_element<1,0>(b);
Tb const b11 = mat_traits<B>::template read_element<1,1>(b);
Tb const b12 = mat_traits<B>::template read_element<1,2>(b);
Tb const b20 = mat_traits<B>::template read_element<2,0>(b);
Tb const b21 = mat_traits<B>::template read_element<2,1>(b);
Tb const b22 = mat_traits<B>::template read_element<2,2>(b);
typedef typename deduce_vec2<A,B,3>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==3);
R r;
write_vec_element<0>(r,a0*b00+a1*b10+a2*b20);
write_vec_element<1>(r,a0*b01+a1*b11+a2*b21);
write_vec_element<2>(r,a0*b02+a1*b12+a2*b22);
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_vm_defined;
template <>
struct
mul_vm_defined<3,3>
{
static bool const value=true;
};
}
} }
#endif

View File

@@ -1,146 +1,141 @@
//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_GEN_VEC_MAT_OPERATIONS4_HPP_INCLUDED
#define BOOST_QVM_GEN_VEC_MAT_OPERATIONS4_HPP_INCLUDED
//Distributed under the Boost Software License, Version 1.0. (See accompanying
//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
#ifndef BOOST_QVM_187092DA6454CEB1853E6915F8466A4
#define BOOST_QVM_187092DA6454CEB1853E6915F8466A4
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//This file was generated by a program. Do not edit manually.
// This file was generated by a program. Do not edit manually.
#include <boost/qvm/config.hpp>
#include <boost/qvm/deduce_vec.hpp>
#include <boost/qvm/enable_if.hpp>
#include <boost/qvm/inline.hpp>
#include <boost/qvm/mat_traits.hpp>
#include <boost/qvm/vec_traits.hpp>
namespace
boost
namespace boost { namespace qvm {
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<A>::rows==4 && mat_traits<A>::cols==4 &&
vec_traits<B>::dim==4,
deduce_vec2<A,B,4> >::type
operator*( A const & a, B const & b )
{
namespace
qvm
{
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<A>::rows==4 && mat_traits<A>::cols==4 &&
vec_traits<B>::dim==4,
deduce_vec2<A,B,4> >::type
operator*( A const & a, B const & b )
{
typedef typename mat_traits<A>::scalar_type Ta;
typedef typename vec_traits<B>::scalar_type Tb;
Ta const a00 = mat_traits<A>::template read_element<0,0>(a);
Ta const a01 = mat_traits<A>::template read_element<0,1>(a);
Ta const a02 = mat_traits<A>::template read_element<0,2>(a);
Ta const a03 = mat_traits<A>::template read_element<0,3>(a);
Ta const a10 = mat_traits<A>::template read_element<1,0>(a);
Ta const a11 = mat_traits<A>::template read_element<1,1>(a);
Ta const a12 = mat_traits<A>::template read_element<1,2>(a);
Ta const a13 = mat_traits<A>::template read_element<1,3>(a);
Ta const a20 = mat_traits<A>::template read_element<2,0>(a);
Ta const a21 = mat_traits<A>::template read_element<2,1>(a);
Ta const a22 = mat_traits<A>::template read_element<2,2>(a);
Ta const a23 = mat_traits<A>::template read_element<2,3>(a);
Ta const a30 = mat_traits<A>::template read_element<3,0>(a);
Ta const a31 = mat_traits<A>::template read_element<3,1>(a);
Ta const a32 = mat_traits<A>::template read_element<3,2>(a);
Ta const a33 = mat_traits<A>::template read_element<3,3>(a);
Tb const b0 = vec_traits<B>::template read_element<0>(b);
Tb const b1 = vec_traits<B>::template read_element<1>(b);
Tb const b2 = vec_traits<B>::template read_element<2>(b);
Tb const b3 = vec_traits<B>::template read_element<3>(b);
typedef typename deduce_vec2<A,B,4>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==4);
R r;
vec_traits<R>::template write_element<0>(r)=a00*b0+a01*b1+a02*b2+a03*b3;
vec_traits<R>::template write_element<1>(r)=a10*b0+a11*b1+a12*b2+a13*b3;
vec_traits<R>::template write_element<2>(r)=a20*b0+a21*b1+a22*b2+a23*b3;
vec_traits<R>::template write_element<3>(r)=a30*b0+a31*b1+a32*b2+a33*b3;
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_mv_defined;
template <>
struct
mul_mv_defined<4,4>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<B>::rows==4 && mat_traits<B>::cols==4 &&
vec_traits<A>::dim==4,
deduce_vec2<A,B,4> >::type
operator*( A const & a, B const & b )
{
typedef typename vec_traits<A>::scalar_type Ta;
typedef typename mat_traits<B>::scalar_type Tb;
Ta const a0 = vec_traits<A>::template read_element<0>(a);
Ta const a1 = vec_traits<A>::template read_element<1>(a);
Ta const a2 = vec_traits<A>::template read_element<2>(a);
Ta const a3 = vec_traits<A>::template read_element<3>(a);
Tb const b00 = mat_traits<B>::template read_element<0,0>(b);
Tb const b01 = mat_traits<B>::template read_element<0,1>(b);
Tb const b02 = mat_traits<B>::template read_element<0,2>(b);
Tb const b03 = mat_traits<B>::template read_element<0,3>(b);
Tb const b10 = mat_traits<B>::template read_element<1,0>(b);
Tb const b11 = mat_traits<B>::template read_element<1,1>(b);
Tb const b12 = mat_traits<B>::template read_element<1,2>(b);
Tb const b13 = mat_traits<B>::template read_element<1,3>(b);
Tb const b20 = mat_traits<B>::template read_element<2,0>(b);
Tb const b21 = mat_traits<B>::template read_element<2,1>(b);
Tb const b22 = mat_traits<B>::template read_element<2,2>(b);
Tb const b23 = mat_traits<B>::template read_element<2,3>(b);
Tb const b30 = mat_traits<B>::template read_element<3,0>(b);
Tb const b31 = mat_traits<B>::template read_element<3,1>(b);
Tb const b32 = mat_traits<B>::template read_element<3,2>(b);
Tb const b33 = mat_traits<B>::template read_element<3,3>(b);
typedef typename deduce_vec2<A,B,4>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==4);
R r;
vec_traits<R>::template write_element<0>(r)=a0*b00+a1*b10+a2*b20+a3*b30;
vec_traits<R>::template write_element<1>(r)=a0*b01+a1*b11+a2*b21+a3*b31;
vec_traits<R>::template write_element<2>(r)=a0*b02+a1*b12+a2*b22+a3*b32;
vec_traits<R>::template write_element<3>(r)=a0*b03+a1*b13+a2*b23+a3*b33;
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_vm_defined;
template <>
struct
mul_vm_defined<4,4>
{
static bool const value=true;
};
}
}
typedef typename mat_traits<A>::scalar_type Ta;
typedef typename vec_traits<B>::scalar_type Tb;
Ta const a00 = mat_traits<A>::template read_element<0,0>(a);
Ta const a01 = mat_traits<A>::template read_element<0,1>(a);
Ta const a02 = mat_traits<A>::template read_element<0,2>(a);
Ta const a03 = mat_traits<A>::template read_element<0,3>(a);
Ta const a10 = mat_traits<A>::template read_element<1,0>(a);
Ta const a11 = mat_traits<A>::template read_element<1,1>(a);
Ta const a12 = mat_traits<A>::template read_element<1,2>(a);
Ta const a13 = mat_traits<A>::template read_element<1,3>(a);
Ta const a20 = mat_traits<A>::template read_element<2,0>(a);
Ta const a21 = mat_traits<A>::template read_element<2,1>(a);
Ta const a22 = mat_traits<A>::template read_element<2,2>(a);
Ta const a23 = mat_traits<A>::template read_element<2,3>(a);
Ta const a30 = mat_traits<A>::template read_element<3,0>(a);
Ta const a31 = mat_traits<A>::template read_element<3,1>(a);
Ta const a32 = mat_traits<A>::template read_element<3,2>(a);
Ta const a33 = mat_traits<A>::template read_element<3,3>(a);
Tb const b0 = vec_traits<B>::template read_element<0>(b);
Tb const b1 = vec_traits<B>::template read_element<1>(b);
Tb const b2 = vec_traits<B>::template read_element<2>(b);
Tb const b3 = vec_traits<B>::template read_element<3>(b);
typedef typename deduce_vec2<A,B,4>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==4);
R r;
write_vec_element<0>(r,a00*b0+a01*b1+a02*b2+a03*b3);
write_vec_element<1>(r,a10*b0+a11*b1+a12*b2+a13*b3);
write_vec_element<2>(r,a20*b0+a21*b1+a22*b2+a23*b3);
write_vec_element<3>(r,a30*b0+a31*b1+a32*b2+a33*b3);
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_mv_defined;
template <>
struct
mul_mv_defined<4,4>
{
static bool const value=true;
};
}
template <class A,class B>
BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
mat_traits<B>::rows==4 && mat_traits<B>::cols==4 &&
vec_traits<A>::dim==4,
deduce_vec2<A,B,4> >::type
operator*( A const & a, B const & b )
{
typedef typename vec_traits<A>::scalar_type Ta;
typedef typename mat_traits<B>::scalar_type Tb;
Ta const a0 = vec_traits<A>::template read_element<0>(a);
Ta const a1 = vec_traits<A>::template read_element<1>(a);
Ta const a2 = vec_traits<A>::template read_element<2>(a);
Ta const a3 = vec_traits<A>::template read_element<3>(a);
Tb const b00 = mat_traits<B>::template read_element<0,0>(b);
Tb const b01 = mat_traits<B>::template read_element<0,1>(b);
Tb const b02 = mat_traits<B>::template read_element<0,2>(b);
Tb const b03 = mat_traits<B>::template read_element<0,3>(b);
Tb const b10 = mat_traits<B>::template read_element<1,0>(b);
Tb const b11 = mat_traits<B>::template read_element<1,1>(b);
Tb const b12 = mat_traits<B>::template read_element<1,2>(b);
Tb const b13 = mat_traits<B>::template read_element<1,3>(b);
Tb const b20 = mat_traits<B>::template read_element<2,0>(b);
Tb const b21 = mat_traits<B>::template read_element<2,1>(b);
Tb const b22 = mat_traits<B>::template read_element<2,2>(b);
Tb const b23 = mat_traits<B>::template read_element<2,3>(b);
Tb const b30 = mat_traits<B>::template read_element<3,0>(b);
Tb const b31 = mat_traits<B>::template read_element<3,1>(b);
Tb const b32 = mat_traits<B>::template read_element<3,2>(b);
Tb const b33 = mat_traits<B>::template read_element<3,3>(b);
typedef typename deduce_vec2<A,B,4>::type R;
BOOST_QVM_STATIC_ASSERT(vec_traits<R>::dim==4);
R r;
write_vec_element<0>(r,a0*b00+a1*b10+a2*b20+a3*b30);
write_vec_element<1>(r,a0*b01+a1*b11+a2*b21+a3*b31);
write_vec_element<2>(r,a0*b02+a1*b12+a2*b22+a3*b32);
write_vec_element<3>(r,a0*b03+a1*b13+a2*b23+a3*b33);
return r;
}
namespace
sfinae
{
using ::boost::qvm::operator*;
}
namespace
qvm_detail
{
template <int R,int C>
struct mul_vm_defined;
template <>
struct
mul_vm_defined<4,4>
{
static bool const value=true;
};
}
} }
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff