# HG changeset patch # User John W. Eaton # Date 1290220022 18000 # Node ID 7d5351fc575a850973934534263d9210b4be564d # Parent 475e90eb4ff12fdd2001fbc9fcb073eede3710e5 mex.cc: convert mxArray_octave_value to matlab style representation when duplicating diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2010-11-19 John W. Eaton + + 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 * mex.cc (mex::free): Don't warn about skipping memory not diff --git a/src/mex.cc b/src/mex.cc --- a/src/mex.cc +++ b/src/mex.cc @@ -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 (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 (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. diff --git a/src/mxarray.h.in b/src/mxarray.h.in --- a/src/mxarray.h.in +++ b/src/mxarray.h.in @@ -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); }