/usr/include/boost/qvm/detail
Edit: /usr/include/boost/qvm/detail/mat_assign.hpp (2274B)
//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
//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)
#ifndef BOOST_QVM_47136D2C385411E7BA27D3B681262D2E
#define BOOST_QVM_47136D2C385411E7BA27D3B681262D2E
#include
#include
#include
namespace
boost
{
namespace
qvm
{
namespace
qvm_detail
{
template
struct
assign_mm_defined
{
static bool const value=false;
};
template
struct
copy_matrix_elements
{
template
static
BOOST_QVM_INLINE_CRITICAL
void
f( A & a, B const & b )
{
mat_traits::template write_element::cols,I%mat_traits::cols>(a) =
mat_traits::template read_element::cols,I%mat_traits::cols>(b);
copy_matrix_elements::f(a,b);
}
};
template
struct
copy_matrix_elements
{
template
static
BOOST_QVM_INLINE_CRITICAL
void
f( A &, B const & )
{
}
};
}
template
BOOST_QVM_INLINE_TRIVIAL
typename boost::enable_if_c<
is_mat::value && is_mat::value &&
mat_traits::rows==mat_traits::rows &&
mat_traits::cols==mat_traits::cols &&
!qvm_detail::assign_mm_defined::rows,mat_traits::cols>::value,
A &>::type
assign( A & a, B const & b )
{
qvm_detail::copy_matrix_elements<0,mat_traits::rows*mat_traits::cols>::f(a,b);
return a;
}
}
}
#endif