Mercurial > hg > octave-nkf
comparison liboctave/MArray.h @ 1989:a4b0826e240c
[project @ 1996-03-02 00:33:22 by jwe]
author | jwe |
---|---|
date | Sat, 02 Mar 1996 00:34:12 +0000 |
parents | 1281a23a34dd |
children | 5668c00f9c7a |
comparison
equal
deleted
inserted
replaced
1988:7b56630a1e05 | 1989:a4b0826e240c |
---|---|
28 #if !defined (octave_MArray_h) | 28 #if !defined (octave_MArray_h) |
29 #define octave_MArray_h 1 | 29 #define octave_MArray_h 1 |
30 | 30 |
31 #include "Array.h" | 31 #include "Array.h" |
32 | 32 |
33 // Classes we declare. | |
34 | |
35 template <class T> class MArray; | |
36 template <class T> class MArray2; | |
37 | |
38 #ifndef NO_DIAG_ARRAY | |
39 template <class T> class MDiagArray; | |
40 #endif | |
41 | |
42 // One dimensional array with math ops. | 33 // One dimensional array with math ops. |
43 | 34 |
44 template <class T> | 35 template <class T> |
45 class MArray : public Array<T> | 36 class MArray : public Array<T> |
46 { | 37 { |
51 public: | 42 public: |
52 | 43 |
53 MArray (void) : Array<T> () { } | 44 MArray (void) : Array<T> () { } |
54 MArray (int n) : Array<T> (n) { } | 45 MArray (int n) : Array<T> (n) { } |
55 MArray (int n, const T& val) : Array<T> (n, val) { } | 46 MArray (int n, const T& val) : Array<T> (n, val) { } |
56 MArray (const Array<T>& a) : Array<T> (a) { } | 47 // MArray (const Array<T>& a) : Array<T> (a) { } |
57 MArray (const MArray<T>& a) : Array<T> (a) { } | 48 MArray (const MArray<T>& a) : Array<T> (a) { } |
58 | 49 |
59 ~MArray (void) { } | 50 ~MArray (void) { } |
60 | 51 |
61 MArray<T>& operator = (const MArray<T>& a) | 52 MArray<T>& operator = (const MArray<T>& a) |
98 friend MArray<T> quotient (const MArray<T>& a, const MArray<T>& b); | 89 friend MArray<T> quotient (const MArray<T>& a, const MArray<T>& b); |
99 | 90 |
100 friend MArray<T> operator - (const MArray<T>& a); | 91 friend MArray<T> operator - (const MArray<T>& a); |
101 }; | 92 }; |
102 | 93 |
103 // Two dimensional array with math ops. | 94 #define INSTANTIATE_MARRAY_FRIENDS(T) \ |
104 | 95 template MArray<T> operator + (const MArray<T>& a, const T& s); \ |
105 template <class T> | 96 template MArray<T> operator - (const MArray<T>& a, const T& s); \ |
106 class MArray2 : public Array2<T> | 97 template MArray<T> operator * (const MArray<T>& a, const T& s); \ |
107 { | 98 template MArray<T> operator / (const MArray<T>& a, const T& s); \ |
108 protected: | 99 template MArray<T> operator + (const T& s, const MArray<T>& a); \ |
109 | 100 template MArray<T> operator - (const T& s, const MArray<T>& a); \ |
110 MArray2 (T *d, int n, int m) : Array2<T> (d, n, m) { } | 101 template MArray<T> operator * (const T& s, const MArray<T>& a); \ |
111 | 102 template MArray<T> operator / (const T& s, const MArray<T>& a); \ |
112 public: | 103 template MArray<T> operator + (const MArray<T>& a, const MArray<T>& b); \ |
113 | 104 template MArray<T> operator - (const MArray<T>& a, const MArray<T>& b); \ |
114 MArray2 (void) : Array2<T> () { } | 105 template MArray<T> product (const MArray<T>& a, const MArray<T>& b); \ |
115 MArray2 (int n, int m) : Array2<T> (n, m) { } | 106 template MArray<T> quotient (const MArray<T>& a, const MArray<T>& b); \ |
116 MArray2 (int n, int m, const T& val) : Array2<T> (n, m, val) { } | 107 template MArray<T> operator - (const MArray<T>& a); |
117 MArray2 (const Array2<T>& a) : Array2<T> (a) { } | |
118 MArray2 (const MArray2<T>& a) : Array2<T> (a) { } | |
119 | |
120 #ifndef NO_DIAG_ARRAY | |
121 MArray2 (const MDiagArray<T>& a); | |
122 #endif | |
123 | |
124 ~MArray2 (void) { } | |
125 | |
126 MArray2<T>& operator = (const MArray2<T>& a) | |
127 { | |
128 Array2<T>::operator = (a); | |
129 return *this; | |
130 } | |
131 | |
132 // element by element MArray2 by scalar ops | |
133 | |
134 friend MArray2<T>& operator += (MArray2<T>& a, const T& s); | |
135 friend MArray2<T>& operator -= (MArray2<T>& a, const T& s); | |
136 | |
137 // element by element MArray2 by MArray2 ops | |
138 | |
139 friend MArray2<T>& operator += (MArray2<T>& a, const MArray2<T>& b); | |
140 friend MArray2<T>& operator -= (MArray2<T>& a, const MArray2<T>& b); | |
141 | |
142 // element by element MArray2 by scalar ops | |
143 | |
144 friend MArray2<T> operator + (const MArray2<T>& a, const T& s); | |
145 friend MArray2<T> operator - (const MArray2<T>& a, const T& s); | |
146 friend MArray2<T> operator * (const MArray2<T>& a, const T& s); | |
147 friend MArray2<T> operator / (const MArray2<T>& a, const T& s); | |
148 | |
149 // element by element scalar by MArray2 ops | |
150 | |
151 friend MArray2<T> operator + (const T& s, const MArray2<T>& a); | |
152 friend MArray2<T> operator - (const T& s, const MArray2<T>& a); | |
153 friend MArray2<T> operator * (const T& s, const MArray2<T>& a); | |
154 friend MArray2<T> operator / (const T& s, const MArray2<T>& a); | |
155 | |
156 // element by element MArray2 by MArray2 ops | |
157 | |
158 friend MArray2<T> operator + (const MArray2<T>& a, const MArray2<T>& b); | |
159 friend MArray2<T> operator - (const MArray2<T>& a, const MArray2<T>& b); | |
160 | |
161 friend MArray2<T> product (const MArray2<T>& a, const MArray2<T>& b); | |
162 friend MArray2<T> quotient (const MArray2<T>& a, const MArray2<T>& b); | |
163 | |
164 friend MArray2<T> operator - (const MArray2<T>& a); | |
165 }; | |
166 | |
167 // Two dimensional diagonal array with math ops. | |
168 | |
169 #ifndef NO_DIAG_ARRAY | |
170 template <class T> | |
171 class MDiagArray : public DiagArray<T> | |
172 { | |
173 protected: | |
174 | |
175 MDiagArray (T *d, int r, int c) : DiagArray<T> (d, r, c) { } | |
176 | |
177 public: | |
178 | |
179 MDiagArray (void) : DiagArray<T> () { } | |
180 MDiagArray (int n) : DiagArray<T> (n) { } | |
181 // MDiagArray (int n, const T& val) : DiagArray<T> (n, val) { } | |
182 MDiagArray (int r, int c) : DiagArray<T> (r, c) { } | |
183 MDiagArray (int r, int c, const T& val) : DiagArray<T> (r, c, val) { } | |
184 MDiagArray (const DiagArray<T>& a) : DiagArray<T> (a) { } | |
185 MDiagArray (const MDiagArray<T>& a) : DiagArray<T> (a) { } | |
186 MDiagArray (const MArray<T>& a) : DiagArray<T> (a) { } | |
187 | |
188 ~MDiagArray (void) { } | |
189 | |
190 MDiagArray<T>& operator = (const MDiagArray<T>& a) | |
191 { | |
192 DiagArray<T>::operator = (a); | |
193 return *this; | |
194 } | |
195 | |
196 // element by element MDiagArray by MDiagArray ops | |
197 | |
198 friend MDiagArray<T>& operator += (MDiagArray<T>& a, const MDiagArray<T>& b); | |
199 friend MDiagArray<T>& operator -= (MDiagArray<T>& a, const MDiagArray<T>& b); | |
200 | |
201 // element by element MDiagArray by scalar ops | |
202 | |
203 friend MDiagArray<T> operator * (const MDiagArray<T>& a, const T& s); | |
204 friend MDiagArray<T> operator / (const MDiagArray<T>& a, const T& s); | |
205 | |
206 // element by element scalar by MDiagArray ops | |
207 | |
208 friend MDiagArray<T> operator * (const T& s, const MDiagArray<T>& a); | |
209 | |
210 // element by element MDiagArray by MDiagArray ops | |
211 | |
212 friend MDiagArray<T> operator + (const MDiagArray<T>& a, | |
213 const MDiagArray<T>& b); | |
214 | |
215 friend MDiagArray<T> operator - (const MDiagArray<T>& a, | |
216 const MDiagArray<T>& b); | |
217 | |
218 friend MDiagArray<T> product (const MDiagArray<T>& a, | |
219 const MDiagArray<T>& b); | |
220 | |
221 friend MDiagArray<T> operator - (const MDiagArray<T>& a); | |
222 }; | |
223 #endif | |
224 | 108 |
225 #endif | 109 #endif |
226 | 110 |
227 /* | 111 /* |
228 ;;; Local Variables: *** | 112 ;;; Local Variables: *** |