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