Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenlib/BLI_math_vec_types.hh42
1 files changed, 42 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_math_vec_types.hh b/source/blender/blenlib/BLI_math_vec_types.hh
index ae8cb0056bb..2e0b17d8bc4 100644
--- a/source/blender/blenlib/BLI_math_vec_types.hh
+++ b/source/blender/blenlib/BLI_math_vec_types.hh
@@ -444,6 +444,48 @@ template<typename T, int Size> struct vec_base : public vec_struct_base<T, Size>
BLI_VEC_OP_IMPL(ret, i, ret[i] = ~a[i]);
}
+ /** Bit-shift operators. */
+
+ BLI_INT_OP(T) friend vec_base operator<<(const vec_base &a, const vec_base &b)
+ {
+ BLI_VEC_OP_IMPL(ret, i, ret[i] = a[i] << b[i]);
+ }
+
+ BLI_INT_OP(T) friend vec_base operator<<(const vec_base &a, T b)
+ {
+ BLI_VEC_OP_IMPL(ret, i, ret[i] = a[i] << b);
+ }
+
+ BLI_INT_OP(T) vec_base &operator<<=(T b)
+ {
+ BLI_VEC_OP_IMPL_SELF(i, (*this)[i] <<= b);
+ }
+
+ BLI_INT_OP(T) vec_base &operator<<=(const vec_base &b)
+ {
+ BLI_VEC_OP_IMPL_SELF(i, (*this)[i] <<= b[i]);
+ }
+
+ BLI_INT_OP(T) friend vec_base operator>>(const vec_base &a, const vec_base &b)
+ {
+ BLI_VEC_OP_IMPL(ret, i, ret[i] = a[i] >> b[i]);
+ }
+
+ BLI_INT_OP(T) friend vec_base operator>>(const vec_base &a, T b)
+ {
+ BLI_VEC_OP_IMPL(ret, i, ret[i] = a[i] >> b);
+ }
+
+ BLI_INT_OP(T) vec_base &operator>>=(T b)
+ {
+ BLI_VEC_OP_IMPL_SELF(i, (*this)[i] >>= b);
+ }
+
+ BLI_INT_OP(T) vec_base &operator>>=(const vec_base &b)
+ {
+ BLI_VEC_OP_IMPL_SELF(i, (*this)[i] >>= b[i]);
+ }
+
/** Modulo operators. */
BLI_INT_OP(T) friend vec_base operator%(const vec_base &a, const vec_base &b)