toon-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Toon-members] TooN/internal operators.hh


From: Edward Rosten
Subject: [Toon-members] TooN/internal operators.hh
Date: Tue, 10 Mar 2009 09:38:03 +0000

CVSROOT:        /cvsroot/toon
Module name:    TooN
Changes by:     Edward Rosten <edrosten>        09/03/10 09:38:03

Modified files:
        internal       : operators.hh 

Log message:
        Remove scalar / matrix

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/operators.hh?cvsroot=toon&r1=1.12&r2=1.13

Patches:
Index: operators.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/operators.hh,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- operators.hh        9 Mar 2009 12:00:06 -0000       1.12
+++ operators.hh        10 Mar 2009 09:38:03 -0000      1.13
@@ -221,8 +221,9 @@
 // matrix <op> scalar 
 // scalar <op> matrix 
 //
+// Except <scalar> / <matrix> does not exist
 
-#define TOON_MAKE_SCALAR_OPS(OPNAME, OP) \
+#define TOON_MAKE_VECTOR_SCALAR_OP_PAIR(OPNAME, OP) \
 template<int S, typename P1, typename B1, typename P2> \
 Vector<S, typename Internal::OPNAME##Type<P1, P2>::type> operator OP (const 
Vector<S, P1, B1>& v, const P2& s)\
 {      \
@@ -236,13 +237,16 @@
        typedef typename Internal::OPNAME##Type<P1, P2>::type restype;\
        return Vector<S,restype>(s, v, 
Operator<Internal::ApplyScalarLeft<restype, Internal::OPNAME> >(), v.size());\
 }\
+
+#define TOON_MAKE_MATRIX_SCALAR_OP_LEFT(OPNAME, OP) \
 template<int R, int C, typename P1, typename B1, typename P2> \
 Matrix<R, C, typename Internal::OPNAME##Type<P1, P2>::type> operator OP (const 
Matrix<R, C, P1, B1>& m, const P2& s)\
 {      \
        typedef typename Internal::OPNAME##Type<P1, P2>::type restype;\
        return Matrix<R, C,restype>(m, s, 
Operator<Internal::ApplyScalar<restype, Internal::OPNAME> >(), m.num_rows(), 
m.num_cols());\
 }\
-\
+
+#define TOON_MAKE_MATRIX_SCALAR_OP_RIGHT(OPNAME, OP) \
 template<int R, int C, typename P1, typename P2, typename B2> \
 Matrix<R, C, typename Internal::OPNAME##Type<P1, P2>::type> operator OP (const 
P1& s, const Matrix<R, C, P2, B2>& m)\
 {      \
@@ -250,12 +254,22 @@
        return Matrix<R, C,restype>(s, m, 
Operator<Internal::ApplyScalarLeft<restype, Internal::OPNAME> >(), 
m.num_rows(), m.num_cols());\
 }
 
+#define TOON_MAKE_SCALAR_OPS(OPNAME, OP)\
+TOON_MAKE_VECTOR_SCALAR_OP_PAIR(OPNAME, OP)\
+TOON_MAKE_MATRIX_SCALAR_OP_LEFT(OPNAME, OP)\
+TOON_MAKE_MATRIX_SCALAR_OP_RIGHT(OPNAME, OP)
+
 TOON_MAKE_SCALAR_OPS(Add, +)
 TOON_MAKE_SCALAR_OPS(Subtract, -)
 TOON_MAKE_SCALAR_OPS(Multiply, *)
-TOON_MAKE_SCALAR_OPS(Divide, /)
+
+TOON_MAKE_VECTOR_SCALAR_OP_PAIR(Divide, /)
+TOON_MAKE_MATRIX_SCALAR_OP_LEFT(Divide, /)
 
 #undef TOON_MAKE_SCALAR_OPS
+#undef TOON_MAKE_VECTOR_SCALAR_OP_PAIR
+#undef TOON_MAKE_MATRIX_SCALAR_OP_LEFT
+#undef TOON_MAKE_MATRIX_SCALAR_OP_RIGHT
 
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]