diff --git a/src/Python/Vector.hh b/src/Python/Vector.hh index e3031709..fc453816 100644 --- a/src/Python/Vector.hh +++ b/src/Python/Vector.hh @@ -66,31 +66,27 @@ struct Factory { }; } -template -void defInitMod(class_< OpenMesh::VectorT > &classVector); - template void defInitMod(class_< OpenMesh::VectorT > &classVector) { classVector .def("__init__", make_constructor(&Factory::vec2_default)) .def("__init__", make_constructor(&Factory::vec2_user_defined)) ; - - typedef OpenMesh::VectorT Vector; - def("dot", &Vector::operator|); } template void defInitMod(class_< OpenMesh::VectorT > &classVector) { classVector .def("__init__", make_constructor(&Factory::vec3_default)) .def("__init__", make_constructor(&Factory::vec3_user_defined)) +#if (_MSC_VER >= 1900 || __cplusplus > 199711L || defined(__GXX_EXPERIMENTAL_CXX0X__)) && !defined(OPENMESH_VECTOR_LEGACY) + .def("__mod__", &Factory::Vector3::template operator%) + ; + def("cross", &Factory::Vector3::template operator%); +#else .def("__mod__", &Factory::Vector3::operator%) ; - def("cross", &Factory::Vector3::operator%); - - typedef OpenMesh::VectorT Vector; - def("dot", &Vector::operator|); +#endif } template void defInitMod(class_< OpenMesh::VectorT > &classVector) { @@ -98,9 +94,6 @@ void defInitMod(class_< OpenMesh::VectorT > &classVector) { .def("__init__", make_constructor(&Factory::vec4_default)) .def("__init__", make_constructor(&Factory::vec4_user_defined)) ; - - typedef OpenMesh::VectorT Vector; - def("dot", &Vector::operator|); } /** @@ -151,12 +144,23 @@ void expose_vec(const char *_name) { .def("vectorize", &Vector::vectorize, return_internal_reference<>()) .def(self < self) - .def("norm", &Vector::template norm) - .def("length", &Vector::template length) - .def("sqrnorm", &Vector::template sqrnorm) - .def("normalize", &Vector::template normalize, return_internal_reference<>()) - .def("normalized", &Vector::template normalized) - .def("normalize_cond", &Vector::template normalize_cond, return_internal_reference<>()) +#if (_MSC_VER >= 1900 || __cplusplus > 199711L || defined(__GXX_EXPERIMENTAL_CXX0X__)) && !defined(OPENMESH_VECTOR_LEGACY) + .def("dot", &Vector::template operator|) + .def("norm", &Vector::template norm) + .def("length", &Vector::template length) + .def("sqrnorm", &Vector::template sqrnorm) + .def("normalize", &Vector::template normalize, return_internal_reference<>()) + .def("normalized", &Vector::template normalized) + .def("normalize_cond", &Vector::template normalize_cond, return_internal_reference<>()) +#else + .def("dot", &Vector::operator|) + .def("norm", &Vector::norm) + .def("length", &Vector::length) + .def("sqrnorm", &Vector::sqrnorm) + .def("normalize", &Vector::normalize, return_internal_reference<>()) + .def("normalized", &Vector::normalized) + .def("normalize_cond", &Vector::normalize_cond, return_internal_reference<>()) +#endif .def("l1_norm", &Vector::l1_norm) .def("l8_norm", &Vector::l8_norm) @@ -180,7 +184,7 @@ void expose_vec(const char *_name) { .staticmethod("vectorized") ; - defInitMod(classVector); + defInitMod(classVector); } } // namespace OpenMesh