Mercurial > octave
diff libinterp/corefcn/mex.cc @ 22869:f75d289645ec
make deleted functions public
* octave-gui.h, resource-manager.h, shortcut-manager.h,
base-text-renderer.h, c-file-ptr-stream.h, dynamic-ld.cc,
dynamic-ld.h, event-queue.h, ft-text-renderer.cc, gl-render.cc,
gl-render.h, graphics.cc, graphics.in.h, interpreter.h, mex.cc,
mxarray.in.h, oct-fstrm.h, oct-iostrm.h, oct-prcstrm.h,
oct-procbuf.h, oct-stdstrm.h, oct-stream.cc, oct-stream.h,
oct-strstrm.h, octave-link.h, pager.h, profiler.h, sighandlers.cc,
symtab.h, text-renderer.h, zfstream.h, __init_fltk__.cc,
ov-builtin.h, ov-dld-fcn.h, ov-fcn.h, ov-mex-fcn.h, ov-typeinfo.h,
ov-usr-fcn.h, octave.h, lex.h, parse.h, pt-arg-list.h,
pt-array-list.h, pt-assign.h, pt-binop.h, pt-bp.h, pt-cell.h,
pt-check.h, pt-classdef.h, pt-cmd.h, pt-colon.h, pt-const.h,
pt-decl.h, pt-eval.h, pt-except.h, pt-exp.h, pt-fcn-handle.h,
pt-funcall.h, pt-id.h, pt-idx.h, pt-jump.h, pt-loop.h, pt-mat.h,
pt-misc.h, pt-pr-code.h, pt-select.h, pt-stmt.h, pt-unop.h,
pt-walk.h, pt.h, token.h, Array.cc, idx-vector.h, oct-fftw.h,
sparse-chol.cc, sparse-qr.cc, file-ops.h, mach-info.h, oct-env.h,
action-container.h, cmd-edit.cc, cmd-edit.h, cmd-hist.h,
oct-locbuf.h, oct-mutex.h, oct-shlib.cc, oct-sort.h, pathsearch.h,
singleton-cleanup.h, unwind-prot.h, url-transfer.cc, url-transfer.h:
Declare deleted copy constructors and assignment operators public.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 06 Dec 2016 12:40:45 -0500 |
parents | 89756f2f085b |
children | f97e22a9012a |
line wrap: on
line diff
--- a/libinterp/corefcn/mex.cc Tue Dec 06 10:59:29 2016 -0500 +++ b/libinterp/corefcn/mex.cc Tue Dec 06 12:40:45 2016 -0500 @@ -159,6 +159,11 @@ : mxArray_base (), val (ov), mutate_flag (false), id (mxUNKNOWN_CLASS), class_name (0), ndims (-1), dims (0) { } + // No assignment! FIXME: should this be implemented? Note that we + // do have a copy constructor. + + mxArray_octave_value& operator = (const mxArray_octave_value&) = delete; + mxArray_base *dup (void) const { return new mxArray_octave_value (*this); } mxArray *as_mxArray (void) const @@ -618,11 +623,6 @@ mutable char *class_name; mutable mwSize ndims; mutable mwSize *dims; - - // No assignment! FIXME: should this be implemented? Note that we - // do have a copy constructor. - - mxArray_octave_value& operator = (const mxArray_octave_value&); }; // The base class for the Matlab-style representation, used to handle @@ -688,8 +688,23 @@ dims[1] = n; } + mxArray_matlab (const mxArray_matlab& val) + : mxArray_base (val), class_name (mxArray::strsave (val.class_name)), + id (val.id), ndims (val.ndims), + dims (static_cast<mwSize *> (mxArray::malloc (ndims * sizeof (mwSize)))) + { + for (mwIndex i = 0; i < ndims; i++) + dims[i] = val.dims[i]; + } + public: + // No assignment! + // FIXME: should this be implemented? + // Note that we *do* have a copy constructor. + + mxArray_matlab& operator = (const mxArray_matlab&); + ~mxArray_matlab (void) { mxFree (class_name); @@ -985,15 +1000,6 @@ protected: - mxArray_matlab (const mxArray_matlab& val) - : mxArray_base (val), class_name (mxArray::strsave (val.class_name)), - id (val.id), ndims (val.ndims), - dims (static_cast<mwSize *> (mxArray::malloc (ndims * sizeof (mwSize)))) - { - for (mwIndex i = 0; i < ndims; i++) - dims[i] = val.dims[i]; - } - dim_vector dims_to_dim_vector (void) const { @@ -1023,12 +1029,6 @@ { error ("invalid type for operation"); } - - // No assignment! - // FIXME: should this be implemented? - // Note that we *do* have a copy constructor. - - mxArray_matlab& operator = (const mxArray_matlab&); }; // Matlab-style numeric, character, and logical data. @@ -1132,6 +1132,31 @@ } } +protected: + + mxArray_number (const mxArray_number& val) + : mxArray_matlab (val), + pr (mxArray::malloc (get_number_of_elements () * get_element_size ())), + pi (val.pi ? mxArray::malloc (get_number_of_elements () + * get_element_size ()) + : 0) + { + size_t nbytes = get_number_of_elements () * get_element_size (); + + if (pr) + memcpy (pr, val.pr, nbytes); + + if (pi) + memcpy (pi, val.pi, nbytes); + } + +public: + + // No assignment! FIXME: should this be implemented? Note that we + // do have a copy constructor. + + mxArray_number& operator = (const mxArray_number&); + mxArray_base *dup (void) const { return new mxArray_number (*this); } ~mxArray_number (void) @@ -1415,31 +1440,10 @@ return octave_value (val); } - mxArray_number (const mxArray_number& val) - : mxArray_matlab (val), - pr (mxArray::malloc (get_number_of_elements () * get_element_size ())), - pi (val.pi ? mxArray::malloc (get_number_of_elements () - * get_element_size ()) - : 0) - { - size_t nbytes = get_number_of_elements () * get_element_size (); - - if (pr) - memcpy (pr, val.pr, nbytes); - - if (pi) - memcpy (pi, val.pi, nbytes); - } - private: void *pr; void *pi; - - // No assignment! FIXME: should this be implemented? Note that we - // do have a copy constructor. - - mxArray_number& operator = (const mxArray_number&); }; // Matlab-style sparse arrays. @@ -1457,6 +1461,37 @@ jc (static_cast<mwIndex *> (mxArray::calloc (n + 1, sizeof (mwIndex)))) { } +private: + + mxArray_sparse (const mxArray_sparse& val) + : mxArray_matlab (val), nzmax (val.nzmax), + pr (mxArray::malloc (nzmax * get_element_size ())), + pi (val.pi ? mxArray::malloc (nzmax * get_element_size ()) : 0), + ir (static_cast<mwIndex *> (mxArray::malloc (nzmax * sizeof (mwIndex)))), + jc (static_cast<mwIndex *> (mxArray::malloc (nzmax * sizeof (mwIndex)))) + { + size_t nbytes = nzmax * get_element_size (); + + if (pr) + memcpy (pr, val.pr, nbytes); + + if (pi) + memcpy (pi, val.pi, nbytes); + + if (ir) + memcpy (ir, val.ir, nzmax * sizeof (mwIndex)); + + if (jc) + memcpy (jc, val.jc, (val.get_n () + 1) * sizeof (mwIndex)); + } + +public: + + // No assignment! FIXME: should this be implemented? Note that we + // do have a copy constructor. + + mxArray_sparse& operator = (const mxArray_sparse&); + mxArray_base *dup (void) const { return new mxArray_sparse (*this); } ~mxArray_sparse (void) @@ -1580,33 +1615,6 @@ void *pi; mwIndex *ir; mwIndex *jc; - - mxArray_sparse (const mxArray_sparse& val) - : mxArray_matlab (val), nzmax (val.nzmax), - pr (mxArray::malloc (nzmax * get_element_size ())), - pi (val.pi ? mxArray::malloc (nzmax * get_element_size ()) : 0), - ir (static_cast<mwIndex *> (mxArray::malloc (nzmax * sizeof (mwIndex)))), - jc (static_cast<mwIndex *> (mxArray::malloc (nzmax * sizeof (mwIndex)))) - { - size_t nbytes = nzmax * get_element_size (); - - if (pr) - memcpy (pr, val.pr, nbytes); - - if (pi) - memcpy (pi, val.pi, nbytes); - - if (ir) - memcpy (ir, val.ir, nzmax * sizeof (mwIndex)); - - if (jc) - memcpy (jc, val.jc, (val.get_n () + 1) * sizeof (mwIndex)); - } - - // No assignment! FIXME: should this be implemented? Note that we - // do have a copy constructor. - - mxArray_sparse& operator = (const mxArray_sparse&); }; // Matlab-style struct arrays. @@ -1650,6 +1658,35 @@ init (keys); } +private: + + mxArray_struct (const mxArray_struct& val) + : mxArray_matlab (val), nfields (val.nfields), + fields (static_cast<char **> (mxArray::malloc (nfields + * sizeof (char *)))), + data (static_cast<mxArray **> (mxArray::malloc (nfields * + get_number_of_elements () + * sizeof (mxArray *)))) + { + for (int i = 0; i < nfields; i++) + fields[i] = mxArray::strsave (val.fields[i]); + + mwSize nel = get_number_of_elements (); + + for (mwIndex i = 0; i < nel * nfields; i++) + { + mxArray *ptr = val.data[i]; + data[i] = ptr ? ptr->dup () : 0; + } + } + +public: + + // No assignment! FIXME: should this be implemented? Note that we + // do have a copy constructor. + + mxArray_struct& operator = (const mxArray_struct& val); + void init (const char **keys) { for (int i = 0; i < nfields; i++) @@ -1844,31 +1881,6 @@ char **fields; mxArray **data; - - mxArray_struct (const mxArray_struct& val) - : mxArray_matlab (val), nfields (val.nfields), - fields (static_cast<char **> (mxArray::malloc (nfields - * sizeof (char *)))), - data (static_cast<mxArray **> (mxArray::malloc (nfields * - get_number_of_elements () - * sizeof (mxArray *)))) - { - for (int i = 0; i < nfields; i++) - fields[i] = mxArray::strsave (val.fields[i]); - - mwSize nel = get_number_of_elements (); - - for (mwIndex i = 0; i < nel * nfields; i++) - { - mxArray *ptr = val.data[i]; - data[i] = ptr ? ptr->dup () : 0; - } - } - - // No assignment! FIXME: should this be implemented? Note that we - // do have a copy constructor. - - mxArray_struct& operator = (const mxArray_struct& val); }; // Matlab-style cell arrays. @@ -1892,6 +1904,29 @@ data (static_cast<mxArray **> (mxArray::calloc (get_number_of_elements (), sizeof (mxArray *)))) { } +private: + + mxArray_cell (const mxArray_cell& val) + : mxArray_matlab (val), + data (static_cast<mxArray **> (mxArray::malloc (get_number_of_elements () + * sizeof (mxArray *)))) + { + mwSize nel = get_number_of_elements (); + + for (mwIndex i = 0; i < nel; i++) + { + mxArray *ptr = val.data[i]; + data[i] = ptr ? ptr->dup () : 0; + } + } + +public: + + // No assignment! FIXME: should this be implemented? Note that we + // do have a copy constructor. + + mxArray_cell& operator = (const mxArray_cell&); + mxArray_base *dup (void) const { return new mxArray_cell (*this); } ~mxArray_cell (void) @@ -1934,25 +1969,6 @@ private: mxArray **data; - - mxArray_cell (const mxArray_cell& val) - : mxArray_matlab (val), - data (static_cast<mxArray **> (mxArray::malloc (get_number_of_elements () - * sizeof (mxArray *)))) - { - mwSize nel = get_number_of_elements (); - - for (mwIndex i = 0; i < nel; i++) - { - mxArray *ptr = val.data[i]; - data[i] = ptr ? ptr->dup () : 0; - } - } - - // No assignment! FIXME: should this be implemented? Note that we - // do have a copy constructor. - - mxArray_cell& operator = (const mxArray_cell&); }; // ------------------------------------------------------------------ @@ -2065,6 +2081,12 @@ mex (octave_mex_function *f) : curr_mex_fcn (f), memlist (), arraylist (), fname (0) { } + // No copying! + + mex (const mex&) = delete; + + mex& operator = (const mex&) = delete; + ~mex (void) { // We can't use mex::free here because it modifies memlist. @@ -2361,12 +2383,6 @@ #endif } - - // No copying! - - mex (const mex&) = delete; - - mex& operator = (const mex&) = delete; }; // List of memory resources we allocated.