diff src/OPERATORS/op-range.cc @ 8150:283989f2da9b

make null assignment matlab compatible
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 26 Sep 2008 11:52:01 -0400
parents 82be108cc558
children 9238637cb81c
line wrap: on
line diff
--- a/src/OPERATORS/op-range.cc	Thu Sep 25 13:44:51 2008 -0400
+++ b/src/OPERATORS/op-range.cc	Fri Sep 26 11:52:01 2008 -0400
@@ -38,6 +38,7 @@
 #include "ov-bool.h"
 #include "ov-bool-mat.h"
 #include "ov-typeinfo.h"
+#include "ov-null-mat.h"
 #include "ops.h"
 
 // range unary ops.
@@ -82,6 +83,13 @@
   return new octave_float_matrix (FloatNDArray (v.array_value ()));
 }
 
+CONVDECL (range_to_matrix)
+{
+  CAST_CONV_ARG (const octave_range&);
+
+  return new octave_matrix (v.array_value ());
+}
+
 void
 install_range_ops (void)
 {
@@ -108,6 +116,17 @@
   INSTALL_CATOP (octave_char_matrix, octave_range, chm_r);
 
   INSTALL_CONVOP (octave_range, octave_float_matrix, range_to_float_matrix);
+
+  // FIXME: this would be unneccessary if octave_base_value::numeric_assign always tried converting
+  // lhs before rhs.
+  
+  INSTALL_ASSIGNCONV (octave_range, octave_null_matrix, octave_matrix);
+  INSTALL_ASSIGNCONV (octave_range, octave_null_str, octave_matrix);
+  INSTALL_ASSIGNCONV (octave_range, octave_null_sq_str, octave_matrix);
+
+  // However, this should probably be here just in case we need it.
+  
+  INSTALL_WIDENOP (octave_range, octave_matrix, range_to_matrix);
 }
 
 /*