00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #if !defined (octave_MSparse_h)
00025 #define octave_MSparse_h 1
00026
00027 #include "MArray2.h"
00028
00029 #include "Sparse.h"
00030
00031
00032
00033
00034
00035 #include "MSparse-defs.h"
00036
00037 SPARSE_OPS_FORWARD_DECLS (MSparse, MArray2, )
00038
00039 template <class T>
00040 class
00041 MSparse : public Sparse<T>
00042 {
00043 public:
00044
00045 MSparse (void) : Sparse<T> () { }
00046
00047 MSparse (octave_idx_type n, octave_idx_type m) : Sparse<T> (n, m) { }
00048
00049 MSparse (const dim_vector& dv, octave_idx_type nz = 0) :
00050 Sparse<T> (dv, nz) { }
00051
00052 MSparse (const MSparse<T>& a) : Sparse<T> (a) { }
00053
00054 MSparse (const MSparse<T>& a, const dim_vector& dv) : Sparse<T> (a, dv) { }
00055
00056 MSparse (const Sparse<T>& a) : Sparse<T> (a) { }
00057
00058 MSparse (const Array<T> a, const Array<octave_idx_type>& r,
00059 const Array<octave_idx_type>& c, octave_idx_type nr = -1,
00060 octave_idx_type nc = -1, bool sum_terms = true)
00061 : Sparse<T> (a, r, c, nr, nc, sum_terms) { }
00062
00063 MSparse (const Array<T> a, const Array<double>& r,
00064 const Array<double>& c, octave_idx_type nr = -1,
00065 octave_idx_type nc = -1, bool sum_terms = true)
00066 : Sparse<T> (a, r, c, nr, nc, sum_terms) { }
00067
00068 explicit MSparse (octave_idx_type r, octave_idx_type c, T val) : Sparse<T> (r, c, val) { }
00069
00070 MSparse (octave_idx_type r, octave_idx_type c, octave_idx_type num_nz) : Sparse<T> (r, c, num_nz) { }
00071
00072 ~MSparse (void) { }
00073
00074 MSparse<T>& operator = (const MSparse<T>& a)
00075 {
00076 Sparse<T>::operator = (a);
00077 return *this;
00078 }
00079
00080 MSparse<T>& insert (const Sparse<T>& a, octave_idx_type r, octave_idx_type c)
00081 {
00082 Sparse<T>::insert (a, r, c);
00083 return *this;
00084 }
00085
00086 MSparse<T>& insert (const Sparse<T>& a, const Array<octave_idx_type>& indx)
00087 {
00088 Sparse<T>::insert (a, indx);
00089 return *this;
00090 }
00091
00092 MSparse<T> transpose (void) const { return Sparse<T>::transpose (); }
00093
00094 MSparse<T> squeeze (void) const { return Sparse<T>::squeeze (); }
00095
00096 MSparse<T> index (idx_vector& i, int resize_ok) const
00097 { return Sparse<T>::index (i, resize_ok); }
00098
00099 MSparse<T> index (idx_vector& i, idx_vector& j, int resize_ok) const
00100 { return Sparse<T>::index (i, j, resize_ok); }
00101
00102 MSparse<T> index (Array<idx_vector>& ra_idx, int resize_ok) const
00103 { return Sparse<T>::index (ra_idx, resize_ok); }
00104
00105 MSparse<T> reshape (const dim_vector& new_dims) const
00106 { return Sparse<T>::reshape (new_dims); }
00107
00108 MSparse<T> permute (const Array<octave_idx_type>& vec, bool inv = false) const
00109 { return Sparse<T>::permute (vec, inv); }
00110
00111 MSparse<T> ipermute (const Array<octave_idx_type>& vec) const
00112 { return Sparse<T>::ipermute (vec); }
00113
00114
00115 MSparse<T> diag (octave_idx_type k = 0) const
00116 {
00117 return Sparse<T>::diag (k);
00118 }
00119
00120 template <class U, class F>
00121 MSparse<U> map (F fcn) const
00122 {
00123 return Sparse<T>::template map<U> (fcn);
00124 }
00125
00126
00127
00128
00129
00130 };
00131
00132 #endif
00133
00134
00135
00136
00137
00138