diff --git a/pybind/core/point.cpp b/pybind/core/point.cpp index e6fb585..193c435 100644 --- a/pybind/core/point.cpp +++ b/pybind/core/point.cpp @@ -40,6 +40,12 @@ bool add_point_type(py::module& m) using vector_t = vector2; using value_t = typename point_t::value_t; + auto to_str = [](const point_t& p) { + std::ostringstream ss; + ss << p; + return ss.str(); + }; + py::class_(m, point_trait::name()) .def(py::init()) .def(py::init()) @@ -47,12 +53,8 @@ bool add_point_type(py::module& m) .def(py::self != py::self) .def("data", &point_t::data) .def("components", &point_t::data) - .def("__repr__", - [](const point_t& p) { - std::ostringstream ss; - ss << p; - return ss.str(); - }) + .def("__repr__", to_str) + .def("__str__", to_str) .def("__getitem__", [](const point_t& p, size_t i) { return p[i]; diff --git a/pybind/core/rect.cpp b/pybind/core/rect.cpp index aeadc76..311f646 100644 --- a/pybind/core/rect.cpp +++ b/pybind/core/rect.cpp @@ -19,6 +19,12 @@ namespace py = pybind11; void add_rect(py::module& m) { // size + auto to_str = [](const rect& r) { + std::ostringstream ss; + ss << r; + return ss.str(); + }; + py::class_(m, "rect") .def(py::init()) .def(py::init()) @@ -38,10 +44,6 @@ void add_rect(py::module& m) .def("area", &rect::area) .def(py::self == py::self) .def(py::self != py::self) - .def("__repr__", - [](const size& s) { - std::ostringstream ss; - ss << s; - return ss.str(); - }); + .def("__repr__", to_str) + .def("__str__", to_str); } diff --git a/pybind/core/size.cpp b/pybind/core/size.cpp index 7ff7f13..defca2d 100644 --- a/pybind/core/size.cpp +++ b/pybind/core/size.cpp @@ -17,6 +17,12 @@ namespace py = pybind11; void add_size(py::module& m) { + auto to_str = [](const size& s) { + std::ostringstream ss; + ss << s; + return ss.str(); + }; + // size py::class_(m, "size") .def(py::init()) @@ -31,12 +37,8 @@ void add_size(py::module& m) .def(py::self - py::self) .def(py::self == py::self) .def(py::self != py::self) - .def("__repr__", - [](const size& s) { - std::ostringstream ss; - ss << s; - return ss.str(); - }); + .def("__repr__", to_str) + .def("__str__", to_str); m.def("maximal_size", &maximal_size); m.def("minimal_size", &minimal_size); m.def("transpose", &transpose); diff --git a/pybind/core/vector.cpp b/pybind/core/vector.cpp index 124a69d..0d4f7bc 100644 --- a/pybind/core/vector.cpp +++ b/pybind/core/vector.cpp @@ -39,6 +39,12 @@ bool add_vector_type(py::module& m) using vector_t = vector2; using value_t = typename vector_t::value_t; + auto to_str = [](const vector_t& p) { + std::ostringstream ss; + ss << p; + return ss.str(); + }; + py::class_(m, vector_trait::name()) .def(py::init()) .def(py::init()) @@ -46,12 +52,8 @@ bool add_vector_type(py::module& m) .def(py::self != py::self) .def("data", &vector_t::data) .def("components", &vector_t::data) - .def("__repr__", - [](const vector_t& p) { - std::ostringstream ss; - ss << p; - return ss.str(); - }) + .def("__repr__", to_str) + .def("__str__", to_str) .def("__getitem__", [](const vector_t& p, size_t i) { return p[i];