Mercurial > hg > octave-lyh
changeset 12233:2aafbdac2ca8 release-3-4-x
Explicitly disallow copying in some classes
author | Pascal Dupuis <Pascal.Dupuis@uclouvain.be> |
---|---|
date | Mon, 24 Jan 2011 14:57:07 -0500 |
parents | 7503f299b802 |
children | 84f55b186eb7 |
files | liboctave/Array.cc liboctave/ChangeLog liboctave/SparseQR.h liboctave/cmd-edit.cc src/ChangeLog src/ov-base-mat.h src/ov-range.h src/unwind-prot.h |
diffstat | 8 files changed, 66 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/Array.cc +++ b/liboctave/Array.cc @@ -383,6 +383,7 @@ return dest + nr*nc; } + private: // Recursive N-d generalized transpose @@ -417,11 +418,16 @@ return dest; } + // No copying! + + rec_permute_helper (const rec_permute_helper&); + + rec_permute_helper& operator = (const rec_permute_helper&); + public: template <class T> void permute (const T *src, T *dest) const { do_permute (src, dest, top); } - }; @@ -599,6 +605,12 @@ } } + // No copying! + + rec_index_helper (const rec_index_helper&); + + rec_index_helper& operator = (const rec_index_helper&); + public: template <class T> @@ -655,6 +667,7 @@ ~rec_resize_helper (void) { delete [] cext; } private: + // recursive resizing template <class T> void do_resize_fill (const T* src, T *dest, const T& rfv, int lev) const @@ -673,11 +686,18 @@ fill_or_memset (dext[lev] - k * dd, rfv, dest + k * dd); } } + + // No copying! + + rec_resize_helper (const rec_resize_helper&); + + rec_resize_helper& operator = (const rec_resize_helper&); + public: + template <class T> void resize_fill (const T* src, T *dest, const T& rfv) const { do_resize_fill (src, dest, rfv, n-1); } - }; template <class T>
--- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,10 @@ +2011-01-24 Pascal Dupuis <Pascal.Dupuis@worldonline.be> + + * SparseQR.h (class SparseQR::SparseQR_reps): Disallow copying. + * Array.cc (class rec_permute_helper, class rec_index_helper, + class rec_resize_helper): Likewise. + * cmd-edit.cc (class default_command_editor): Likewise. + 2011-01-22 Jaroslav Hajek <highegg@gmail.com> * oct-refcount.h: New source.
--- a/liboctave/SparseQR.h +++ b/liboctave/SparseQR.h @@ -73,11 +73,22 @@ CXSPARSE_DNAME (n) *N; #endif + + private: + + // No copying! + + SparseQR_rep (const SparseQR_rep&); + + SparseQR_rep& operator = (const SparseQR_rep&); }; + private: + SparseQR_rep *rep; public: + SparseQR (void) : rep (new SparseQR_rep (SparseMatrix(), 0)) { } SparseQR (const SparseMatrix& a, int order = 0) :
--- a/liboctave/cmd-edit.cc +++ b/liboctave/cmd-edit.cc @@ -753,6 +753,12 @@ FILE *input_stream; FILE *output_stream; + + // No copying! + + default_command_editor (const default_command_editor&); + + default_command_editor& operator = (const default_command_editor&); }; std::string
--- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2011-01-24 Pascal Dupuis <Pascal.Dupuis@worldonline.be> + + * ov-base-mat.h (class octave_base_matrix): Disallow assignment. + * ov-range.h (class octave_range): Likewise. + 2011-01-23 John W. Eaton <jwe@octave.org> * ov-struct.cc (octave_scalar_struct::print_raw):
--- a/src/ov-base-mat.h +++ b/src/ov-base-mat.h @@ -187,6 +187,12 @@ mutable MatrixType *typ; mutable idx_vector *idx_cache; + +private: + + // No assignment. + + octave_base_matrix& operator = (const octave_base_matrix&); }; #endif
--- a/src/ov-range.h +++ b/src/ov-range.h @@ -305,6 +305,10 @@ mutable idx_vector *idx_cache; + // No assignment. + + octave_range& operator = (const octave_range&); + DECLARE_OCTAVE_ALLOCATOR DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
--- a/src/unwind-prot.h +++ b/src/unwind-prot.h @@ -127,14 +127,15 @@ void run (void) { (e_obj->*e_method) (); } private: - // No copying! XXX + + T *e_obj; + void (T::*e_method) (void); + + // No copying! method_elem (const method_elem&); method_elem operator = (const method_elem&); - - T *e_obj; - void (T::*e_method) (void); }; // An element that stores arbitrary variable, and restores it.