12 template <
typename Scalar>
18 template <
typename Scalar>
33 RequireInitialization = 1,
56 static int digits10() {
return std::numeric_limits<Scalar>::digits10; }
60 template <
typename Scalar>
111 std::stringstream ss;
112 ss <<
"value: " <<
m_value << std::endl;
126 template <
typename Scalar>
127 Eigen::Matrix<CustomType<Scalar>, Eigen::Dynamic, Eigen::Dynamic>
create(
129 typedef Eigen::Matrix<CustomType<Scalar>, Eigen::Dynamic, Eigen::Dynamic>
134 template <
typename Scalar>
136 Eigen::Dynamic>&
mat) {
137 std::cout <<
mat << std::endl;
140 template <
typename Scalar>
143 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> Matrix;
147 template <
typename Scalar>
149 using namespace Eigen;
154 bp::class_<Type>(
name.c_str(), bp::init<Scalar>(bp::arg(
"value")))
156 .def(bp::self + bp::self)
157 .def(bp::self - bp::self)
158 .def(bp::self * bp::self)
159 .def(bp::self / bp::self)
161 .def(bp::self += bp::self)
162 .def(bp::self -= bp::self)
163 .def(bp::self *= bp::self)
164 .def(bp::self /= bp::self)
168 int code = eigenpy::registerNewType<Type>();
169 std::cout <<
"code: " << code << std::endl;
170 eigenpy::registerCommonUfunc<Type>();
174 using namespace Eigen;
178 expose_custom_type<double>(
"CustomDouble");
180 typedef Eigen::Matrix<DoubleType, Eigen::Dynamic, Eigen::Dynamic>
184 bp::def(
"create_double", create<double>);
186 expose_custom_type<float>(
"CustomFloat");
188 typedef Eigen::Matrix<FloatType, Eigen::Dynamic, Eigen::Dynamic> FloatMatrix;
191 bp::def(
"create_float", create<float>);
193 bp::def(
"build_matrix", build_matrix<double>);
194 #if EIGEN_VERSION_AT_LEAST(3, 3, 0)
195 bp::def(
"print", print<double>);
196 bp::def(
"print", print<float>);
199 eigenpy::registerCast<DoubleType, double>(
true);
200 eigenpy::registerCast<double, DoubleType>(
true);
201 eigenpy::registerCast<DoubleType, int>(
false);
202 eigenpy::registerCast<int, DoubleType>(
true);
203 eigenpy::registerCast<DoubleType, long long>(
false);
204 eigenpy::registerCast<long long, DoubleType>(
true);
205 eigenpy::registerCast<DoubleType, long>(
false);
206 eigenpy::registerCast<long, DoubleType>(
true);
207 eigenpy::registerCast<FloatType, double>(
true);
208 eigenpy::registerCast<double, FloatType>(
false);
209 eigenpy::registerCast<FloatType, long long>(
false);
210 eigenpy::registerCast<long long, FloatType>(
true);
211 eigenpy::registerCast<FloatType, int>(
false);
212 eigenpy::registerCast<int, FloatType>(
true);
213 eigenpy::registerCast<FloatType, long>(
false);
214 eigenpy::registerCast<long, FloatType>(
true);
216 bp::implicitly_convertible<double, DoubleType>();
217 bp::implicitly_convertible<DoubleType, double>();