changeset 10545:ffe28cdc6fe2

fix reshape() and permute() for scalars
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 23 Apr 2010 11:42:58 +0200
parents 9961fc022d9d
children f5b8b28917a2
files src/ChangeLog src/ov-base-scalar.cc src/ov-base-scalar.h
diffstat 3 files changed, 23 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Apr 23 11:23:43 2010 +0200
+++ b/src/ChangeLog	Fri Apr 23 11:42:58 2010 +0200
@@ -1,3 +1,10 @@
+2010-04-23  Jaroslav Hajek  <highegg@gmail.com>
+
+	* ov-base-scalar.h (octave_base_scalar::reshape,
+	octave_base_scalar::permute): Remove implementations.
+	* ov-base-scalar.cc (octave_base_scalar::reshape,
+	octave_base_scalar::permute): Provide correct implementations here.
+
 2010-04-23  Jaroslav Hajek  <highegg@gmail.com>
 
 	* ov-bool.h (octave_bool::empty_clone): Correctly return an empty
--- a/src/ov-base-scalar.cc	Fri Apr 23 11:23:43 2010 +0200
+++ b/src/ov-base-scalar.cc	Fri Apr 23 11:42:58 2010 +0200
@@ -101,6 +101,20 @@
 }
 
 template <class ST>
+octave_value
+octave_base_scalar<ST>::permute (const Array<int>& vec, bool inv) const
+{
+  return Array<ST> (1, 1, scalar).permute (vec, inv);
+}
+
+template <class ST>
+octave_value
+octave_base_scalar<ST>::reshape (const dim_vector& new_dims) const
+{
+  return Array<ST> (1, 1, scalar).reshape (new_dims);
+}
+
+template <class ST>
 bool
 octave_base_scalar<ST>::is_true (void) const
 {
--- a/src/ov-base-scalar.h	Fri Apr 23 11:23:43 2010 +0200
+++ b/src/ov-base-scalar.h	Fri Apr 23 11:42:58 2010 +0200
@@ -80,11 +80,9 @@
 
   octave_idx_type nnz (void) const { return (scalar != ST ()) ? 1 : 0; }
 
-  octave_value permute (const Array<int>&, bool = false) const
-    { return scalar; }
+  octave_value permute (const Array<int>&, bool = false) const;
 
-  octave_value reshape (const dim_vector& new_dims) const
-    { return array_value ().reshape (new_dims); }
+  octave_value reshape (const dim_vector& new_dims) const;
 
   size_t byte_size (void) const { return sizeof (ST); }