# 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;