| template <class ArgType> |
| class Circulant : public Eigen::MatrixBase<Circulant<ArgType> > { |
| public: |
| Circulant(const ArgType& arg) : m_arg(arg) { |
| EIGEN_STATIC_ASSERT(ArgType::ColsAtCompileTime == 1, YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX); |
| } |
| |
| typedef typename Eigen::internal::ref_selector<Circulant>::type Nested; |
| |
| typedef Eigen::Index Index; |
| Index rows() const { return m_arg.rows(); } |
| Index cols() const { return m_arg.rows(); } |
| |
| typedef typename Eigen::internal::ref_selector<ArgType>::type ArgTypeNested; |
| ArgTypeNested m_arg; |
| }; |