blob: 9868c1e9ebf282fdc7ca693ea20db29a1fb3ce50 [file] [log] [blame]
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;
};