aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/examples/make_circulant.cpp.expression
diff options
context:
space:
mode:
authorGravatar Jitse Niesen <jitse@maths.leeds.ac.uk>2014-09-27 23:25:58 +0100
committerGravatar Jitse Niesen <jitse@maths.leeds.ac.uk>2014-09-27 23:25:58 +0100
commitce2035af868d57b85b4078c15843d5c1f51047dc (patch)
treeca6392457ba02fa24e8f5f0ddcf755697d73d36e /doc/examples/make_circulant.cpp.expression
parent6d0f0b8cecd0ee944503d885fd34278044bab746 (diff)
New doc page on implementing a new expression class.
Diffstat (limited to 'doc/examples/make_circulant.cpp.expression')
-rw-r--r--doc/examples/make_circulant.cpp.expression20
1 files changed, 20 insertions, 0 deletions
diff --git a/doc/examples/make_circulant.cpp.expression b/doc/examples/make_circulant.cpp.expression
new file mode 100644
index 000000000..a68bcb730
--- /dev/null
+++ b/doc/examples/make_circulant.cpp.expression
@@ -0,0 +1,20 @@
+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 typename Eigen::internal::traits<Circulant>::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;
+};