65class Replicate :
public internal::dense_xpr_base<Replicate<MatrixType, RowFactor, ColFactor> >::type {
66 using MatrixTypeNested =
typename internal::traits<Replicate>::MatrixTypeNested;
67 using MatrixTypeNested_ =
typename internal::traits<Replicate>::MatrixTypeNested_;
70 using Base =
typename internal::dense_xpr_base<Replicate>::type;
71 EIGEN_DENSE_PUBLIC_INTERFACE(Replicate)
72 using NestedExpression = internal::remove_all_t<MatrixType>;
74 template <
typename OriginalMatrixType>
75 EIGEN_DEVICE_FUNC
constexpr inline explicit Replicate(
const OriginalMatrixType& matrix)
76 : m_matrix(matrix), m_rowFactor(RowFactor), m_colFactor(ColFactor) {
77 EIGEN_STATIC_ASSERT((std::is_same<std::remove_const_t<MatrixType>, OriginalMatrixType>::value),
78 THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE)
79 eigen_assert(RowFactor != Dynamic && ColFactor != Dynamic);
82 template <
typename OriginalMatrixType>
83 EIGEN_DEVICE_FUNC
constexpr inline Replicate(
const OriginalMatrixType& matrix, Index rowFactor, Index colFactor)
84 : m_matrix(matrix), m_rowFactor(rowFactor), m_colFactor(colFactor) {
85 EIGEN_STATIC_ASSERT((std::is_same<std::remove_const_t<MatrixType>, OriginalMatrixType>::value),
86 THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE)
89 EIGEN_DEVICE_FUNC
constexpr Index rows()
const {
return m_matrix.rows() * m_rowFactor.value(); }
90 EIGEN_DEVICE_FUNC
constexpr Index cols()
const {
return m_matrix.cols() * m_colFactor.value(); }
92 EIGEN_DEVICE_FUNC
constexpr const MatrixTypeNested_& nestedExpression()
const {
return m_matrix; }
95 MatrixTypeNested m_matrix;
96 const internal::variable_if_dynamic<Index, RowFactor> m_rowFactor;
97 const internal::variable_if_dynamic<Index, ColFactor> m_colFactor;