Mercurial > octave
diff liboctave/util/action-container.h @ 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 | 87e3163f6c87 |
children | ef4d915df748 |
line wrap: on
line diff
--- a/liboctave/util/action-container.h Tue Dec 06 10:59:29 2016 -0500 +++ b/liboctave/util/action-container.h Tue Dec 06 12:40:45 2016 -0500 @@ -42,21 +42,20 @@ class elem { public: - elem (void) { } - - virtual void run (void) { } - - virtual ~elem (void) = default; friend class action_container; - private: + elem (void) { } // No copying! elem (const elem&) = delete; elem& operator = (const elem&) = delete; + + virtual ~elem (void) = default; + + virtual void run (void) { } }; // An element that merely runs a void (*)(void) function. @@ -64,12 +63,14 @@ class fcn_elem : public elem { public: + fcn_elem (void (*fptr) (void)) : e_fptr (fptr) { } void run (void) { e_fptr (); } private: + void (*e_fptr) (void); }; @@ -80,20 +81,22 @@ class fcn_arg_elem : public elem { public: + fcn_arg_elem (void (*fcn) (T), T arg) : e_fcn (fcn), e_arg (arg) { } - void run (void) { e_fcn (e_arg); } - - private: - // No copying! fcn_arg_elem (const fcn_arg_elem&) = delete; fcn_arg_elem& operator = (const fcn_arg_elem&) = delete; + void run (void) { e_fcn (e_arg); } + + private: + void (*e_fcn) (T); + T e_arg; }; @@ -105,13 +108,16 @@ class fcn_crefarg_elem : public elem { public: + fcn_crefarg_elem (void (*fcn) (const T&), const T& arg) : e_fcn (fcn), e_arg (arg) { } void run (void) { e_fcn (e_arg); } private: + void (*e_fcn) (const T&); + T e_arg; }; @@ -121,21 +127,23 @@ class method_elem : public elem { public: + method_elem (T *obj, void (T::*method) (void)) : e_obj (obj), e_method (method) { } + // No copying! + + method_elem (const method_elem&) = delete; + + method_elem operator = (const method_elem&) = delete; + void run (void) { (e_obj->*e_method) (); } private: T *e_obj; + void (T::*e_method) (void); - - // No copying! - - method_elem (const method_elem&) = delete; - - method_elem operator = (const method_elem&) = delete; }; // An element for calling a member function with a single argument @@ -144,22 +152,25 @@ class method_arg_elem : public elem { public: + method_arg_elem (T *obj, void (T::*method) (A), A arg) : e_obj (obj), e_method (method), e_arg (arg) { } + // No copying! + + method_arg_elem (const method_arg_elem&) = delete; + + method_arg_elem operator = (const method_arg_elem&) = delete; + void run (void) { (e_obj->*e_method) (e_arg); } private: T *e_obj; - void (T::*e_method) (A); - A e_arg; - // No copying! + void (T::*e_method) (A); - method_arg_elem (const method_arg_elem&) = delete; - - method_arg_elem operator = (const method_arg_elem&) = delete; + A e_arg; }; // An element for calling a member function with a single argument @@ -168,22 +179,25 @@ class method_crefarg_elem : public elem { public: + method_crefarg_elem (T *obj, void (T::*method) (const A&), const A& arg) : e_obj (obj), e_method (method), e_arg (arg) { } + // No copying! + + method_crefarg_elem (const method_crefarg_elem&) = delete; + + method_crefarg_elem operator = (const method_crefarg_elem&) = delete; + void run (void) { (e_obj->*e_method) (e_arg); } private: T *e_obj; - void (T::*e_method) (const A&); - A e_arg; - // No copying! + void (T::*e_method) (const A&); - method_crefarg_elem (const method_crefarg_elem&) = delete; - - method_crefarg_elem operator = (const method_crefarg_elem&) = delete; + A e_arg; }; // An element that stores arbitrary variable, and restores it. @@ -192,19 +206,20 @@ class restore_var_elem : public elem { public: + restore_var_elem (T& ref, const T& val) : e_ptr (&ref), e_val (val) { } - void run (void) { *e_ptr = e_val; } - - private: - // No copying! restore_var_elem (const restore_var_elem&) = delete; restore_var_elem& operator = (const restore_var_elem&) = delete; + void run (void) { *e_ptr = e_val; } + + private: + T *e_ptr, e_val; }; @@ -214,24 +229,31 @@ class delete_ptr_elem : public elem { public: + delete_ptr_elem (T *ptr) : e_ptr (ptr) { } + // No copying! + + delete_ptr_elem (const delete_ptr_elem&) = delete; + + delete_ptr_elem operator = (const delete_ptr_elem&) = delete; + void run (void) { delete e_ptr; } private: T *e_ptr; - - // No copying! - - delete_ptr_elem (const delete_ptr_elem&) = delete; - - delete_ptr_elem operator = (const delete_ptr_elem&) = delete; }; action_container (void) { } + // No copying! + + action_container (const action_container&) = delete; + + action_container& operator = (const action_container&) = delete; + virtual ~action_container (void) = default; virtual void add (elem *new_elem) = 0; @@ -330,14 +352,6 @@ virtual size_t size (void) const = 0; bool empty (void) const { return size () == 0; } - -private: - - // No copying! - - action_container (const action_container&) = delete; - - action_container& operator = (const action_container&) = delete; }; #endif