diff --git a/src/python/magnum/math.cpp b/src/python/magnum/math.cpp index b2e44e9..efc908f 100644 --- a/src/python/magnum/math.cpp +++ b/src/python/magnum/math.cpp @@ -190,11 +190,32 @@ template void boolVector(py::class_& c) { /* Operators */ .def(~py::self, "Bitwise inversion") + #ifdef __clang__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wself-assign-overloaded" + #endif .def(py::self &= py::self, "Bitwise AND and assign") + #ifdef __clang__ + #pragma GCC diagnostic pop + #endif .def(py::self & py::self, "Bitwise AND") + #ifdef __clang__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wself-assign-overloaded" + #endif .def(py::self |= py::self, "Bitwise OR and assign") + #ifdef __clang__ + #pragma GCC diagnostic pop + #endif .def(py::self | py::self, "Bitwise OR") + #ifdef __clang__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wself-assign-overloaded" + #endif .def(py::self ^= py::self, "Bitwise XOR and assign") + #ifdef __clang__ + #pragma GCC diagnostic pop + #endif .def(py::self ^ py::self, "Bitwise XOR") .def("__repr__", repr, "Object representation"); @@ -263,7 +284,14 @@ template void quaternion(py::module& m, py::class_& c) { .def(-py::self, "Negated quaternion") .def(py::self += py::self, "Add and assign a quaternion") .def(py::self + py::self, "Add a quaternion") + #ifdef __clang__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wself-assign-overloaded" + #endif .def(py::self -= py::self, "Subtract and assign a quaternion") + #ifdef __clang__ + #pragma GCC diagnostic pop + #endif .def(py::self - py::self, "Subtract a quaternion") .def(py::self *= typename T::Type{}, "Multiply with a scalar and assign") .def(py::self * typename T::Type{}, "Multiply with a scalar") diff --git a/src/python/magnum/math.matrix.h b/src/python/magnum/math.matrix.h index 3d41949..49fae55 100644 --- a/src/python/magnum/math.matrix.h +++ b/src/python/magnum/math.matrix.h @@ -72,7 +72,14 @@ template void everyRectangularMatrix(py::class_ void everyVector(py::class_& c) { .def(-py::self, "Negated vector") .def(py::self += py::self, "Add and assign a vector") .def(py::self + py::self, "Add a vector") + #ifdef __clang__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wself-assign-overloaded" + #endif .def(py::self -= py::self, "Subtract and assign a vector") + #ifdef __clang__ + #pragma GCC diagnostic pop + #endif .def(py::self - py::self, "Subtract a vector") .def(py::self *= typename T::Type{}, "Multiply with a scalar and assign") .def(py::self * typename T::Type{}, "Multiply with a scalar") @@ -104,7 +111,14 @@ template void everyVector(py::class_& c) { .def(py::self / typename T::Type{}, "Divide with a scalar") .def(py::self *= py::self, "Multiply a vector component-wise and assign") .def(py::self * py::self, "Multiply a vector component-wise") + #ifdef __clang__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wself-assign-overloaded" + #endif .def(py::self /= py::self, "Divide a vector component-wise and assign") + #ifdef __clang__ + #pragma GCC diagnostic pop + #endif .def(py::self / py::self, "Divide a vector component-wise") .def(typename T::Type{} * py::self, "Multiply a scalar with a vector") .def(typename T::Type{} / py::self, "Divide a vector with a scalar and invert"); diff --git a/src/python/magnum/math.vectorintegral.cpp b/src/python/magnum/math.vectorintegral.cpp index 20757dc..0e71ca9 100644 --- a/src/python/magnum/math.vectorintegral.cpp +++ b/src/python/magnum/math.vectorintegral.cpp @@ -33,14 +33,42 @@ template void vectorIntegral(py::class_& c) { c .def(py::self %= typename T::Type{}, "Do modulo of an integral vector and assign") .def(py::self % typename T::Type{}, "Modulo of an integral vector") + #ifdef __clang__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wself-assign-overloaded" + #endif .def(py::self %= py::self, "Do module of two integral vectors and assign") + #ifdef __clang__ + #pragma GCC diagnostic pop + #endif .def(py::self % py::self, "Modulo of two integral vectors") .def(~py::self, "Bitwise NOT of an integral vector") + #ifdef __clang__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wself-assign-overloaded" + #endif .def(py::self &= py::self, "Do bitwise AND of two integral vectors and assign") + #ifdef __clang__ + #pragma GCC diagnostic pop + #endif .def(py::self & py::self, "Bitwise AND of two integral vectors") + #ifdef __clang__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wself-assign-overloaded" + #endif .def(py::self |= py::self, "Do bitwise OR of two integral vectors and assign") + #ifdef __clang__ + #pragma GCC diagnostic pop + #endif .def(py::self | py::self, "Bitwise OR of two integral vectors") + #ifdef __clang__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wself-assign-overloaded" + #endif .def(py::self ^= py::self, "Do bitwise XOR of two integral vectors and assign") + #ifdef __clang__ + #pragma GCC diagnostic pop + #endif .def(py::self ^ py::self, "Bitwise XOR of two integral vectors") .def(py::self <<= typename T::Type{}, "Do bitwise left shift of an integral vector and assign") .def(py::self << typename T::Type{}, "Bitwise left shift of an integral vector")