Mercurial > octave-nkf
diff liboctave/Array.h @ 9773:01f897d8a130
optimize memory manipulation by arrays & indexing
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Tue, 03 Nov 2009 11:35:59 +0100 |
parents | b4fdfee405b5 |
children | 6dafc60dde31 |
line wrap: on
line diff
--- a/liboctave/Array.h Tue Nov 03 07:44:20 2009 +0100 +++ b/liboctave/Array.h Tue Nov 03 11:35:59 2009 +0100 @@ -38,6 +38,7 @@ #include "lo-utils.h" #include "oct-sort.h" #include "quit.h" +#include "oct-mem.h" // One dimensional array class. Handles the reference counting for // all the derived classes. @@ -61,29 +62,29 @@ int count; ArrayRep (T *d, octave_idx_type l, bool copy = false) - : data (copy ? new T [l] : d), len (l), count (1) + : data (copy ? octave_new<T> (l) : d), len (l), count (1) { if (copy) - std::copy (d, d + l, data); + octave_ucopy (l, d, data); } ArrayRep (void) : data (0), len (0), count (1) { } - explicit ArrayRep (octave_idx_type n) : data (new T [n]), len (n), count (1) { } + explicit ArrayRep (octave_idx_type n) : data (octave_new<T> (n)), len (n), count (1) { } explicit ArrayRep (octave_idx_type n, const T& val) - : data (new T [n]), len (n), count (1) + : data (octave_new<T> (n)), len (n), count (1) { - std::fill (data, data + n, val); + octave_fill (n, val, data); } ArrayRep (const ArrayRep& a) - : data (new T [a.len]), len (a.len), count (1) + : data (octave_new<T> (a.len)), len (a.len), count (1) { - std::copy (a.data, a.data + a.len, data); + octave_ucopy (a.len, a.data, data); } - ~ArrayRep (void) { delete [] data; } + ~ArrayRep (void) { octave_delete<T> (data); } octave_idx_type length (void) const { return len; } @@ -168,7 +169,7 @@ T * coerce (const U *a, octave_idx_type len) { - T *retval = new T [len]; + T *retval = octave_new<T> (len); for (octave_idx_type i = 0; i < len; i++) retval[i] = T (a[i]); @@ -733,12 +734,12 @@ { return ArrayClass::xelem (ra_idx); } }; -#endif - template <class T> std::ostream& operator << (std::ostream& os, const Array<T>& a); +#endif + /* ;;; Local Variables: *** ;;; mode: C++ ***