Browse Source

python: fix Clang's -Wself-assign-overloaded warnings.

It's unfortunate that the pybind11 operator helpers need this, but well.
pull/2/head
Vladimír Vondruš 7 years ago
parent
commit
7e057863c8
  1. 28
      src/python/magnum/math.cpp
  2. 7
      src/python/magnum/math.matrix.h
  3. 14
      src/python/magnum/math.vector.h
  4. 28
      src/python/magnum/math.vectorintegral.cpp

28
src/python/magnum/math.cpp

@ -190,11 +190,32 @@ template<class T> void boolVector(py::class_<T>& 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<T>, "Object representation");
@ -263,7 +284,14 @@ template<class T> void quaternion(py::module& m, py::class_<T>& 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")

7
src/python/magnum/math.matrix.h

@ -72,7 +72,14 @@ template<class T, class ...Args> void everyRectangularMatrix(py::class_<T, Args.
.def(-py::self, "Negated matrix")
.def(py::self += py::self, "Add and assign a matrix")
.def(py::self + py::self, "Add a matrix")
#ifdef __clang__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wself-assign-overloaded"
#endif
.def(py::self -= py::self, "Subtract and assign a matrix")
#ifdef __clang__
#pragma GCC diagnostic pop
#endif
.def(py::self - py::self, "Subtract a matrix")
.def(py::self *= typename T::Type{}, "Multiply with a scalar and assign")
.def(py::self * typename T::Type{}, "Multiply with a scalar")

14
src/python/magnum/math.vector.h

@ -96,7 +96,14 @@ template<class T, class ...Args> void everyVector(py::class_<T, Args...>& 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<class T, class ...Args> void everyVector(py::class_<T, Args...>& 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");

28
src/python/magnum/math.vectorintegral.cpp

@ -33,14 +33,42 @@ template<class T> void vectorIntegral(py::class_<T>& 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")

Loading…
Cancel
Save