changeset 11277:7d5351fc575a

mex.cc: convert mxArray_octave_value to matlab style representation when duplicating
author John W. Eaton <jwe@octave.org>
date Fri, 19 Nov 2010 21:27:02 -0500
parents 475e90eb4ff1
children cf5f87246c90
files src/ChangeLog src/mex.cc src/mxarray.h.in
diffstat 3 files changed, 19 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Nov 19 20:44:18 2010 -0500
+++ b/src/ChangeLog	Fri Nov 19 21:27:02 2010 -0500
@@ -1,3 +1,11 @@
+2010-11-19  John W. Eaton  <jwe@octave.org>
+
+	Bug #31706.
+
+	* mex.h, mex.cc (mxArray::dup): Rename from clone.  Change all
+	uses and derived classes.
+	(mxArray_octave_value::dup): Convert to mxArray object here.
+
 2010-11-19  John W. Eaton  <jwe@octave.org>
 
 	* mex.cc (mex::free): Don't warn about skipping memory not
--- a/src/mex.cc	Fri Nov 19 20:44:18 2010 -0500
+++ b/src/mex.cc	Fri Nov 19 21:27:02 2010 -0500
@@ -115,7 +115,7 @@
 
 public:
 
-  mxArray *clone (void) const = 0;
+  mxArray *dup (void) const = 0;
 
   ~mxArray_base (void) { }
 
@@ -327,7 +327,7 @@
     : mxArray_base (), val (ov), mutate_flag (false),
       id (mxUNKNOWN_CLASS), class_name (0), ndims (-1), dims (0) { }
 
-  mxArray *clone (void) const { return new mxArray_octave_value (*this); }
+  mxArray *dup (void) const { return val.as_mxArray (); }
 
   ~mxArray_octave_value (void)
   {
@@ -1175,7 +1175,7 @@
       } 
   }
 
-  mxArray_number *clone (void) const { return new mxArray_number (*this); }
+  mxArray_number *dup (void) const { return new mxArray_number (*this); }
 
   ~mxArray_number (void)
   {
@@ -1494,7 +1494,7 @@
     jc = static_cast<mwIndex *> (calloc (n + 1, sizeof (mwIndex)));
   }
 
-  mxArray_sparse *clone (void) const { return new mxArray_sparse (*this); }
+  mxArray_sparse *dup (void) const { return new mxArray_sparse (*this); }
 
   ~mxArray_sparse (void)
   {
@@ -1680,7 +1680,7 @@
       fields[i] = strsave (keys[i]);
   }
 
-  mxArray_struct *clone (void) const { return new mxArray_struct (*this); }
+  mxArray_struct *dup (void) const { return new mxArray_struct (*this); }
 
   ~mxArray_struct (void)
   {
@@ -1878,7 +1878,7 @@
     for (mwIndex i = 0; i < nel * nfields; i++)
       {
         mxArray *ptr = val.data[i];
-        data[i] = ptr ? ptr->clone () : 0;
+        data[i] = ptr ? ptr->dup () : 0;
       }
   }
 };
@@ -1901,7 +1901,7 @@
     : mxArray_matlab (mxCELL_CLASS, m, n),
       data (static_cast<mxArray **> (calloc (get_number_of_elements (), sizeof (mxArray *)))) { }
 
-  mxArray_cell *clone (void) const { return new mxArray_cell (*this); }
+  mxArray_cell *dup (void) const { return new mxArray_cell (*this); }
 
   ~mxArray_cell (void)
   {
@@ -1955,7 +1955,7 @@
     for (mwIndex i = 0; i < nel; i++)
       {
         mxArray *ptr = val.data[i];
-        data[i] = ptr ? ptr->clone () : 0;
+        data[i] = ptr ? ptr->dup () : 0;
       }
   }
 };
@@ -2614,7 +2614,7 @@
 mxArray *
 mxDuplicateArray (const mxArray *ptr)
 {
-  return maybe_mark_array (ptr->clone ());
+  return maybe_mark_array (ptr->dup ());
 }
 
 // Destructor.
--- a/src/mxarray.h.in	Fri Nov 19 20:44:18 2010 -0500
+++ b/src/mxarray.h.in	Fri Nov 19 21:27:02 2010 -0500
@@ -163,9 +163,9 @@
 
   mxArray (mwSize m, mwSize n);
 
-  virtual mxArray *clone (void) const
+  virtual mxArray *dup (void) const
   {
-    mxArray *new_rep = rep->clone ();
+    mxArray *new_rep = rep->dup ();
 
     return new mxArray (new_rep, name);
   }