00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #if !defined (octave_Array3_h)
00026 #define octave_Array3_h 1
00027
00028 #include <cassert>
00029 #include <cstdlib>
00030
00031 #include "Array.h"
00032 #include "lo-error.h"
00033
00034 class idx_vector;
00035
00036
00037
00038 template <class T>
00039 class
00040 Array3 : public Array<T>
00041 {
00042 protected:
00043
00044 static octave_idx_type get_size (octave_idx_type r, octave_idx_type c, octave_idx_type p)
00045 { return Array<T>::get_size (r, c, p); }
00046
00047 Array3 (T *d, octave_idx_type r, octave_idx_type c, octave_idx_type p) : Array<T> (d, dim_vector (r, c, p)) { }
00048
00049 public:
00050
00051 Array3 (void) : Array<T> (dim_vector (0, 0, 0)) { }
00052
00053 Array3 (octave_idx_type r, octave_idx_type c, octave_idx_type p) : Array<T> (dim_vector (r, c, p)) { }
00054
00055 Array3 (octave_idx_type r, octave_idx_type c, octave_idx_type p, const T& val)
00056 : Array<T> (dim_vector (r, c, p), val) { }
00057
00058 Array3 (const Array3<T>& a)
00059 : Array<T> (a, a.dims ()) { }
00060
00061 Array3 (const Array<T>& a, octave_idx_type r, octave_idx_type c, octave_idx_type p)
00062 : Array<T> (a, dim_vector (r, c, p)) { }
00063
00064 ~Array3 (void) { }
00065
00066 Array3<T>& operator = (const Array3<T>& a)
00067 {
00068 if (this != &a)
00069 Array<T>::operator = (a);
00070
00071 return *this;
00072 }
00073
00074 void resize (octave_idx_type r, octave_idx_type c, octave_idx_type p)
00075 { Array<T>::resize (dim_vector (r, c, p)); }
00076
00077 void resize (octave_idx_type r, octave_idx_type c, octave_idx_type p, const T& val)
00078 { Array<T>::resize_fill (dim_vector (r, c, p), val); }
00079
00080 Array3<T> sort (octave_idx_type dim = 0, sortmode mode = ASCENDING) const
00081 {
00082 Array<T> tmp = Array<T>::sort (dim, mode);
00083 return Array3<T> (tmp, tmp.rows (), tmp.columns (), tmp.pages ());
00084 }
00085
00086 Array3<T> sort (Array<octave_idx_type> &sidx, octave_idx_type dim = 0,
00087 sortmode mode = ASCENDING) const
00088 {
00089 Array<T> tmp = Array<T>::sort (sidx, dim, mode);
00090 return Array3<T> (tmp, tmp.rows (), tmp.columns (), tmp.pages ());
00091 }
00092 };
00093
00094 #endif
00095
00096
00097
00098
00099
00100