changeset 8981:ed5055b0a476

fix & simplify ndarray->matrix conversions
author Jaroslav Hajek <highegg@gmail.com>
date Sat, 14 Mar 2009 19:42:50 +0100
parents 80d499b82ff3
children dc6bda6f9994
files liboctave/CNDArray.cc liboctave/ChangeLog liboctave/dNDArray.cc liboctave/fCNDArray.cc liboctave/fNDArray.cc liboctave/fNDArray.h
diffstat 6 files changed, 31 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/CNDArray.cc
+++ b/liboctave/CNDArray.cc
@@ -830,24 +830,11 @@
 {
   ComplexMatrix retval;
 
-  int nd = ndims ();
-
-  switch (nd)
-    {
-    case 1:
-      retval = ComplexMatrix (Array2<Complex> (*this, dimensions(0), 1));
-      break;
-
-    case 2:
-      retval = ComplexMatrix (Array2<Complex> (*this, dimensions(0),
-					       dimensions(1)));
-      break;
-
-    default:
-      (*current_liboctave_error_handler)
-	("invalid conversion of ComplexNDArray to ComplexMatrix");
-      break;
-    }
+  if (ndims () == 2)
+      retval = ComplexMatrix (Array2<Complex> (*this));
+  else
+    (*current_liboctave_error_handler)
+      ("invalid conversion of ComplexNDArray to ComplexMatrix");
 
   return retval;
 }
--- a/liboctave/ChangeLog
+++ b/liboctave/ChangeLog
@@ -1,3 +1,11 @@
+2009-03-14  Jaroslav Hajek  <highegg@gmail.com>
+
+	* fNDArray.h (FloatMatrix::matrix_value): Fix return type.
+	* dNDArray.cc (Matrix::matrix_value): Simplify.
+	* fNDArray.cc (FloatMatrix::matrix_value): Simplify.
+	* CNDArray.cc (ComplexMatrix::matrix_value): Simplify.
+	* fCNDArray.cc (FloatComplexMatrix::matrix_value): Simplify.
+
 2009-03-13  Jaroslav Hajek  <highegg@gmail.com>
 
 	* Range.h (Range::Range (double, double, octave_idx_type)): Remove
--- a/liboctave/dNDArray.cc
+++ b/liboctave/dNDArray.cc
@@ -879,23 +879,11 @@
 {
   Matrix retval;
 
-  int nd = ndims ();
-
-  switch (nd)
-    {
-    case 1:
-      retval = Matrix (Array2<double> (*this, dimensions(0), 1));
-      break;
-
-    case 2:
-      retval = Matrix (Array2<double> (*this, dimensions(0), dimensions(1)));
-      break;
-
-    default:
-      (*current_liboctave_error_handler)
-	("invalid conversion of NDArray to Matrix");
-      break;
-    }
+  if (ndims () == 2)
+      retval = Matrix (Array2<double> (*this));
+  else
+    (*current_liboctave_error_handler)
+      ("invalid conversion of NDArray to Matrix");
 
   return retval;
 }
--- a/liboctave/fCNDArray.cc
+++ b/liboctave/fCNDArray.cc
@@ -825,24 +825,11 @@
 {
   FloatComplexMatrix retval;
 
-  int nd = ndims ();
-
-  switch (nd)
-    {
-    case 1:
-      retval = FloatComplexMatrix (Array2<FloatComplex> (*this, dimensions(0), 1));
-      break;
-
-    case 2:
-      retval = FloatComplexMatrix (Array2<FloatComplex> (*this, dimensions(0),
-					       dimensions(1)));
-      break;
-
-    default:
-      (*current_liboctave_error_handler)
-	("invalid conversion of FloatComplexNDArray to FloatComplexMatrix");
-      break;
-    }
+  if (ndims () == 2)
+      retval = FloatComplexMatrix (Array2<FloatComplex> (*this));
+  else
+    (*current_liboctave_error_handler)
+      ("invalid conversion of FloatComplexNDArray to FloatComplexMatrix");
 
   return retval;
 }
--- a/liboctave/fNDArray.cc
+++ b/liboctave/fNDArray.cc
@@ -829,28 +829,16 @@
                        dims ());
 }
 
-Matrix
+FloatMatrix
 FloatNDArray::matrix_value (void) const
 {
-  Matrix retval;
-
-  int nd = ndims ();
-
-  switch (nd)
-    {
-    case 1:
-      retval = Matrix (Array2<float> (*this, dimensions(0), 1));
-      break;
+  FloatMatrix retval;
 
-    case 2:
-      retval = Matrix (Array2<float> (*this, dimensions(0), dimensions(1)));
-      break;
-
-    default:
-      (*current_liboctave_error_handler)
-	("invalid conversion of FloatNDArray to Matrix");
-      break;
-    }
+  if (ndims () == 2)
+      retval = FloatMatrix (Array2<float> (*this));
+  else
+    (*current_liboctave_error_handler)
+      ("invalid conversion of FloatNDArray to FloatMatrix");
 
   return retval;
 }
--- a/liboctave/fNDArray.h
+++ b/liboctave/fNDArray.h
@@ -121,7 +121,7 @@
 
   friend class FloatComplexNDArray;
 
-  Matrix matrix_value (void) const;
+  FloatMatrix matrix_value (void) const;
 
   FloatNDArray squeeze (void) const { return MArrayN<float>::squeeze (); }