From 5b68fd0caf721d1d09a6c250300c02250f6cd64a Mon Sep 17 00:00:00 2001
From: Tobias Schmidt <tobias.schmidt@unibas.ch>
Date: Wed, 3 Aug 2011 13:18:13 +0200
Subject: [PATCH] export == and != operator for vec, mat and quat

---
 modules/geom/pymod/export_mat2.cc | 2 ++
 modules/geom/pymod/export_mat3.cc | 2 ++
 modules/geom/pymod/export_mat4.cc | 2 ++
 modules/geom/pymod/export_quat.cc | 1 +
 modules/geom/pymod/export_vec2.cc | 2 ++
 modules/geom/pymod/export_vec3.cc | 2 ++
 modules/geom/pymod/export_vec4.cc | 2 ++
 modules/geom/src/quat.hh          | 1 +
 8 files changed, 14 insertions(+)

diff --git a/modules/geom/pymod/export_mat2.cc b/modules/geom/pymod/export_mat2.cc
index 8905a4746..0338f1ddd 100644
--- a/modules/geom/pymod/export_mat2.cc
+++ b/modules/geom/pymod/export_mat2.cc
@@ -61,6 +61,8 @@ void export_Mat2()
     .def(self * self)
     .def(self * Vec2())
     .def(self / Real())
+    .def(self == self)
+    .def(self != self)
     .def(self_ns::str(self))
     .def("__getitem__",Mat2_getitem)
     .def("__setitem__",Mat2_setitem)
diff --git a/modules/geom/pymod/export_mat3.cc b/modules/geom/pymod/export_mat3.cc
index bf92d2e4e..1e543b7d9 100644
--- a/modules/geom/pymod/export_mat3.cc
+++ b/modules/geom/pymod/export_mat3.cc
@@ -90,6 +90,8 @@ void export_Mat3()
     .def(self * self)
     .def(self *= self)
     .def(self / Real())
+    .def(self == self)
+    .def(self != self)
     .def(self_ns::str(self))
     .def("__getitem__",Mat3_getitem)
     .def("__getitem__",Mat3_getslice)
diff --git a/modules/geom/pymod/export_mat4.cc b/modules/geom/pymod/export_mat4.cc
index 3bb555b2c..1745e35b7 100644
--- a/modules/geom/pymod/export_mat4.cc
+++ b/modules/geom/pymod/export_mat4.cc
@@ -112,6 +112,8 @@ void export_Mat4()
     .def(self *= self)
     .def(self * Vec4())
     .def(self / Real())
+    .def(self == self)
+    .def(self != self)
     .def(self_ns::str(self))
     .def("__repr__", mat4_repr)
     .def("__getitem__",Mat4_getitem)
diff --git a/modules/geom/pymod/export_quat.cc b/modules/geom/pymod/export_quat.cc
index 7368ede77..4e136ea8e 100644
--- a/modules/geom/pymod/export_quat.cc
+++ b/modules/geom/pymod/export_quat.cc
@@ -40,6 +40,7 @@ void export_Quat()
     .def(self += self)
     .def(self -= self)
     .def(self == self)
+    .def(self != self)
     .def(-self)
     .def(self * Real())
     .def(self * Quat())
diff --git a/modules/geom/pymod/export_vec2.cc b/modules/geom/pymod/export_vec2.cc
index 456d26db3..161bda9f6 100644
--- a/modules/geom/pymod/export_vec2.cc
+++ b/modules/geom/pymod/export_vec2.cc
@@ -67,6 +67,8 @@ void export_Vec2()
     .def(self / Real())
     .def(self + self)
     .def(self - self)
+    .def(self == self)
+    .def(self != self)
     .def("__repr__", vec2_repr)
     .def(self_ns::str(self))
     .def("__getitem__",Vec2_getitem)
diff --git a/modules/geom/pymod/export_vec3.cc b/modules/geom/pymod/export_vec3.cc
index 9a9b8f47c..aab91add3 100644
--- a/modules/geom/pymod/export_vec3.cc
+++ b/modules/geom/pymod/export_vec3.cc
@@ -70,6 +70,8 @@ void export_Vec3()
     .def(self + Real())
     .def(Real() + self)
     .def(self - self)
+    .def(self == self)
+    .def(self != self)
     .def(self_ns::str(self))
     .def("__getitem__",Vec3_getitem)
     .def("__setitem__",Vec3_setitem)
diff --git a/modules/geom/pymod/export_vec4.cc b/modules/geom/pymod/export_vec4.cc
index 4ebe1bbd1..986fbfa73 100644
--- a/modules/geom/pymod/export_vec4.cc
+++ b/modules/geom/pymod/export_vec4.cc
@@ -67,6 +67,8 @@ void export_Vec4()
     .def(self / Real())
     .def(self + self)
     .def(self - self)
+    .def(self == self)
+    .def(self != self)
     .def(self_ns::str(self))
     .def("__getitem__",Vec4_getitem)
     .def("__setitem__",Vec4_setitem)
diff --git a/modules/geom/src/quat.hh b/modules/geom/src/quat.hh
index 4347952c0..dc206e4e5 100644
--- a/modules/geom/src/quat.hh
+++ b/modules/geom/src/quat.hh
@@ -93,6 +93,7 @@ public:
   Quat& operator/=(const Quat& q);
   // comparable
   bool operator==(const Quat& q) const;
+  bool operator!=(const Quat& q) const { return !this->operator==(q); }
 
   // Apply rotation to vector.
   Vec3 Rotate(const Vec3& vec) const;
-- 
GitLab