# HG changeset patch # User Pascal Dupuis # Date 1295899027 18000 # Node ID 2aafbdac2ca888b3ead07dad98efb29fdef60b66 # Parent 7503f299b80228bf59ab3d52993d860cbed6f214 Explicitly disallow copying in some classes diff -r 7503f299b802 -r 2aafbdac2ca8 liboctave/Array.cc --- a/liboctave/Array.cc Sun Jan 23 22:27:05 2011 -0800 +++ b/liboctave/Array.cc Mon Jan 24 14:57:07 2011 -0500 @@ -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 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 @@ -655,6 +667,7 @@ ~rec_resize_helper (void) { delete [] cext; } private: + // recursive resizing template 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 void resize_fill (const T* src, T *dest, const T& rfv) const { do_resize_fill (src, dest, rfv, n-1); } - }; template diff -r 7503f299b802 -r 2aafbdac2ca8 liboctave/ChangeLog --- a/liboctave/ChangeLog Sun Jan 23 22:27:05 2011 -0800 +++ b/liboctave/ChangeLog Mon Jan 24 14:57:07 2011 -0500 @@ -1,3 +1,10 @@ +2011-01-24 Pascal Dupuis + + * 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 * oct-refcount.h: New source. diff -r 7503f299b802 -r 2aafbdac2ca8 liboctave/SparseQR.h --- a/liboctave/SparseQR.h Sun Jan 23 22:27:05 2011 -0800 +++ b/liboctave/SparseQR.h Mon Jan 24 14:57:07 2011 -0500 @@ -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) : diff -r 7503f299b802 -r 2aafbdac2ca8 liboctave/cmd-edit.cc --- a/liboctave/cmd-edit.cc Sun Jan 23 22:27:05 2011 -0800 +++ b/liboctave/cmd-edit.cc Mon Jan 24 14:57:07 2011 -0500 @@ -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 diff -r 7503f299b802 -r 2aafbdac2ca8 src/ChangeLog --- a/src/ChangeLog Sun Jan 23 22:27:05 2011 -0800 +++ b/src/ChangeLog Mon Jan 24 14:57:07 2011 -0500 @@ -1,3 +1,8 @@ +2011-01-24 Pascal Dupuis + + * ov-base-mat.h (class octave_base_matrix): Disallow assignment. + * ov-range.h (class octave_range): Likewise. + 2011-01-23 John W. Eaton * ov-struct.cc (octave_scalar_struct::print_raw): diff -r 7503f299b802 -r 2aafbdac2ca8 src/ov-base-mat.h --- a/src/ov-base-mat.h Sun Jan 23 22:27:05 2011 -0800 +++ b/src/ov-base-mat.h Mon Jan 24 14:57:07 2011 -0500 @@ -187,6 +187,12 @@ mutable MatrixType *typ; mutable idx_vector *idx_cache; + +private: + + // No assignment. + + octave_base_matrix& operator = (const octave_base_matrix&); }; #endif diff -r 7503f299b802 -r 2aafbdac2ca8 src/ov-range.h --- a/src/ov-range.h Sun Jan 23 22:27:05 2011 -0800 +++ b/src/ov-range.h Mon Jan 24 14:57:07 2011 -0500 @@ -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 diff -r 7503f299b802 -r 2aafbdac2ca8 src/unwind-prot.h --- a/src/unwind-prot.h Sun Jan 23 22:27:05 2011 -0800 +++ b/src/unwind-prot.h Mon Jan 24 14:57:07 2011 -0500 @@ -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.