Mercurial > hg > octave-lyh
diff liboctave/MDiagArray2.h @ 3580:2923f52d8fda
[project @ 2000-02-05 07:14:21 by jwe]
author | jwe |
---|---|
date | Sat, 05 Feb 2000 07:14:25 +0000 |
parents | 5eef8a2294bd |
children | d9803711e047 |
line wrap: on
line diff
--- a/liboctave/MDiagArray2.h +++ b/liboctave/MDiagArray2.h @@ -31,48 +31,13 @@ #include "DiagArray2.h" #include "MArray2.h" -#if defined (LTGT) -#undef LTGT -#endif - -#if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL) -#define LTGT -#else +// Two dimensional diagonal array with math ops. -#define LTGT <> - -template <class T> -class MDiagArray2; - -template <typename T> MDiagArray2<T>& -operator += (MDiagArray2<T>& a, const MDiagArray2<T>& b); - -template <typename T> MDiagArray2<T>& -operator -= (MDiagArray2<T>& a, const MDiagArray2<T>& b); +// But first, some preprocessor abuse... -template <typename T> MDiagArray2<T> -operator * (const MDiagArray2<T>& a, const T& s); - -template <typename T> MDiagArray2<T> -operator / (const MDiagArray2<T>& a, const T& s); - -template <typename T> MDiagArray2<T> -operator * (const T& s, const MDiagArray2<T>& a); - -template <typename T> MDiagArray2<T> -operator + (const MDiagArray2<T>& a, const MDiagArray2<T>& b); +#include "MArray-defs.h" -template <typename T> MDiagArray2<T> -operator - (const MDiagArray2<T>& a, const MDiagArray2<T>& b); - -template <typename T> MDiagArray2<T> -product (const MDiagArray2<T>& a, const MDiagArray2<T>& b); - -template <typename T> MDiagArray2<T> -operator - (const MDiagArray2<T>& a); -#endif - -// Two dimensional diagonal array with math ops. +MDIAGARRAY2_OPS_FORWARD_DECLS (MDiagArray2) template <class T> class MDiagArray2 : public DiagArray2<T> @@ -109,20 +74,13 @@ return retval; } -}; -#undef LTGT + // Currently, the OPS functions don't need to be friends, but that + // may change. -#define INSTANTIATE_MDIAGARRAY_FRIENDS(T) \ - template MDiagArray2<T>& operator += (MDiagArray2<T>& a, const MDiagArray2<T>& b); \ - template MDiagArray2<T>& operator -= (MDiagArray2<T>& a, const MDiagArray2<T>& b); \ - template MDiagArray2<T> operator * (const MDiagArray2<T>& a, const T& s); \ - template MDiagArray2<T> operator / (const MDiagArray2<T>& a, const T& s); \ - template MDiagArray2<T> operator * (const T& s, const MDiagArray2<T>& a); \ - template MDiagArray2<T> operator + (const MDiagArray2<T>& a, const MDiagArray2<T>& b); \ - template MDiagArray2<T> operator - (const MDiagArray2<T>& a, const MDiagArray2<T>& b); \ - template MDiagArray2<T> product (const MDiagArray2<T>& a, const MDiagArray2<T>& b); \ - template MDiagArray2<T> operator - (const MDiagArray2<T>& a); + MDIAGARRAY2_OPS_FRIEND_DECLS (MDiagArray2) + +}; #endif