12 template <
typename Scalar>
18 template <
typename Scalar>
33 RequireInitialization = 1,
56 static int digits10() {
return std::numeric_limits<Scalar>::digits10; }
58 return std::numeric_limits<Scalar>::max_digits10;
63 template <
typename Scalar>
114 std::stringstream ss;
115 ss <<
"value: " <<
m_value << std::endl;
129 template <
typename Scalar>
130 Eigen::Matrix<CustomType<Scalar>, Eigen::Dynamic, Eigen::Dynamic>
create(
132 typedef Eigen::Matrix<CustomType<Scalar>, Eigen::Dynamic, Eigen::Dynamic>
137 template <
typename Scalar>
139 Eigen::Dynamic>&
mat) {
140 std::cout <<
mat << std::endl;
143 template <
typename Scalar>
146 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> Matrix;
150 template <
typename Scalar>
152 using namespace Eigen;
157 bp::class_<Type>(
name.c_str(), bp::init<Scalar>(bp::arg(
"value")))
159 .def(bp::self + bp::self)
160 .def(bp::self - bp::self)
161 .def(bp::self * bp::self)
162 .def(bp::self / bp::self)
164 .def(bp::self += bp::self)
165 .def(bp::self -= bp::self)
166 .def(bp::self *= bp::self)
167 .def(bp::self /= bp::self)
171 int code = eigenpy::registerNewType<Type>();
172 std::cout <<
"code: " << code << std::endl;
173 eigenpy::registerCommonUfunc<Type>();
177 using namespace Eigen;
181 expose_custom_type<double>(
"CustomDouble");
183 typedef Eigen::Matrix<DoubleType, Eigen::Dynamic, Eigen::Dynamic>
187 bp::def(
"create_double", create<double>);
189 expose_custom_type<float>(
"CustomFloat");
191 typedef Eigen::Matrix<FloatType, Eigen::Dynamic, Eigen::Dynamic> FloatMatrix;
194 bp::def(
"create_float", create<float>);
196 bp::def(
"build_matrix", build_matrix<double>);
197 #if EIGEN_VERSION_AT_LEAST(3, 3, 0)
198 bp::def(
"print", print<double>);
199 bp::def(
"print", print<float>);
202 eigenpy::registerCast<DoubleType, double>(
true);
203 eigenpy::registerCast<double, DoubleType>(
true);
204 eigenpy::registerCast<DoubleType, int>(
false);
205 eigenpy::registerCast<int, DoubleType>(
true);
206 eigenpy::registerCast<DoubleType, long long>(
false);
207 eigenpy::registerCast<long long, DoubleType>(
true);
208 eigenpy::registerCast<DoubleType, long>(
false);
209 eigenpy::registerCast<long, DoubleType>(
true);
210 eigenpy::registerCast<FloatType, double>(
true);
211 eigenpy::registerCast<double, FloatType>(
false);
212 eigenpy::registerCast<FloatType, long long>(
false);
213 eigenpy::registerCast<long long, FloatType>(
true);
214 eigenpy::registerCast<FloatType, int>(
false);
215 eigenpy::registerCast<int, FloatType>(
true);
216 eigenpy::registerCast<FloatType, long>(
false);
217 eigenpy::registerCast<long, FloatType>(
true);
219 bp::implicitly_convertible<double, DoubleType>();
220 bp::implicitly_convertible<DoubleType, double>();