# HG changeset patch # User Jaroslav Hajek # Date 1222082329 -7200 # Node ID b5b4bd3139dfd318eb003cdcbe084b7f28fae411 # Parent 0feae0f0c49bf4a40f735943c91c53e1072a6767 use static member instead of bool flag to mark null matrices diff --git a/liboctave/Array.cc b/liboctave/Array.cc --- a/liboctave/Array.cc +++ b/liboctave/Array.cc @@ -38,6 +38,8 @@ #include "Array-util.h" #include "idx-vector.h" #include "lo-error.h" + +template const Array Array::null_matrix (dim_vector (0, 0)); // One dimensional array class. Handles the reference counting for // all the derived classes. diff --git a/liboctave/Array.h b/liboctave/Array.h --- a/liboctave/Array.h +++ b/liboctave/Array.h @@ -64,26 +64,24 @@ T *data; octave_idx_type len; int count; - bool null_matrix; ArrayRep (T *d, octave_idx_type l) - : data (d), len (l), count (1), null_matrix (false) { } + : data (d), len (l), count (1) { } ArrayRep (void) - : data (0), len (0), count (1), null_matrix (false) { } + : data (0), len (0), count (1) { } explicit ArrayRep (octave_idx_type n) - : data (new T [n]), len (n), count (1), null_matrix (false) { } + : data (new T [n]), len (n), count (1) { } explicit ArrayRep (octave_idx_type n, const T& val) - : data (new T [n]), len (n), count (1), null_matrix (false) + : data (new T [n]), len (n), count (1) { fill (val); } ArrayRep (const ArrayRep& a) - : data (new T [a.len]), len (a.len), count (1), - null_matrix (a.null_matrix) + : data (new T [a.len]), len (a.len), count (1) { for (octave_idx_type i = 0; i < len; i++) data[i] = a.data[i]; @@ -107,10 +105,6 @@ { octave_qsort (data, static_cast (len), sizeof (T), compare); } - - void mark_as_null_matrix (void) { null_matrix = true; } - - bool is_null_matrix (void) const { return null_matrix; } private: @@ -468,9 +462,11 @@ bool is_empty (void) const { return numel () == 0; } - void mark_as_null_matrix (void) { rep->mark_as_null_matrix (); } + static const Array null_matrix ; // Null matrix is 0x0. - bool is_null_matrix (void) const { return rep->is_null_matrix (); } + void mark_as_null_matrix (void) { *this = null_matrix; } + + bool is_null_matrix (void) const { return rep == null_matrix.rep; } Array transpose (void) const; Array hermitian (T (*fcn) (const T&) = 0) const;