comparison libinterp/corefcn/hook-fcn.h @ 31607:aac27ad79be6 stable

maint: Re-indent code after switch to using namespace macros. * build-env.h, build-env.in.cc, Cell.h, __betainc__.cc, __eigs__.cc, __ftp__.cc, __ichol__.cc, __ilu__.cc, __isprimelarge__.cc, __magick_read__.cc, __pchip_deriv__.cc, amd.cc, base-text-renderer.cc, base-text-renderer.h, besselj.cc, bitfcns.cc, bsxfun.cc, c-file-ptr-stream.h, call-stack.cc, call-stack.h, ccolamd.cc, cellfun.cc, chol.cc, colamd.cc, dasrt.cc, data.cc, debug.cc, defaults.cc, defaults.h, det.cc, display.cc, display.h, dlmread.cc, dynamic-ld.cc, dynamic-ld.h, ellipj.cc, environment.cc, environment.h, error.cc, error.h, errwarn.h, event-manager.cc, event-manager.h, event-queue.cc, event-queue.h, fcn-info.cc, fcn-info.h, fft.cc, fft2.cc, file-io.cc, filter.cc, find.cc, ft-text-renderer.cc, ft-text-renderer.h, gcd.cc, gl-render.cc, gl-render.h, gl2ps-print.cc, gl2ps-print.h, graphics-toolkit.cc, graphics-toolkit.h, graphics.cc, gsvd.cc, gtk-manager.cc, gtk-manager.h, help.cc, help.h, hook-fcn.cc, hook-fcn.h, input.cc, input.h, interpreter-private.cc, interpreter-private.h, interpreter.cc, interpreter.h, inv.cc, jsondecode.cc, jsonencode.cc, latex-text-renderer.cc, latex-text-renderer.h, load-path.cc, load-path.h, load-save.cc, load-save.h, lookup.cc, ls-hdf5.cc, ls-mat4.cc, ls-mat5.cc, lsode.cc, lu.cc, mappers.cc, matrix_type.cc, max.cc, mex.cc, mexproto.h, mxarray.h, mxtypes.in.h, oct-errno.in.cc, oct-hdf5-types.cc, oct-hist.cc, oct-hist.h, oct-map.cc, oct-map.h, oct-opengl.h, oct-prcstrm.h, oct-process.cc, oct-process.h, oct-stdstrm.h, oct-stream.cc, oct-stream.h, oct-strstrm.h, octave-default-image.h, ordqz.cc, ordschur.cc, pager.cc, pager.h, pinv.cc, pow2.cc, pr-output.cc, psi.cc, qr.cc, quadcc.cc, rand.cc, regexp.cc, settings.cc, settings.h, sighandlers.cc, sighandlers.h, sparse-xpow.cc, sqrtm.cc, stack-frame.cc, stack-frame.h, stream-euler.cc, strfns.cc, svd.cc, syminfo.cc, syminfo.h, symrcm.cc, symrec.cc, symrec.h, symscope.cc, symscope.h, symtab.cc, symtab.h, sysdep.cc, sysdep.h, text-engine.cc, text-engine.h, text-renderer.cc, text-renderer.h, time.cc, toplev.cc, typecast.cc, url-handle-manager.cc, url-handle-manager.h, urlwrite.cc, utils.cc, utils.h, variables.cc, variables.h, xdiv.cc, __delaunayn__.cc, __init_fltk__.cc, __init_gnuplot__.cc, __ode15__.cc, __voronoi__.cc, audioread.cc, convhulln.cc, gzip.cc, cdef-class.cc, cdef-class.h, cdef-fwd.h, cdef-manager.cc, cdef-manager.h, cdef-method.cc, cdef-method.h, cdef-object.cc, cdef-object.h, cdef-package.cc, cdef-package.h, cdef-property.cc, cdef-property.h, cdef-utils.cc, cdef-utils.h, ov-base-diag.cc, ov-base-int.cc, ov-base-mat.cc, ov-base-mat.h, ov-base-scalar.cc, ov-base.cc, ov-base.h, ov-bool-mat.cc, ov-bool-mat.h, ov-bool-sparse.cc, ov-bool.cc, ov-builtin.h, ov-cell.cc, ov-ch-mat.cc, ov-class.cc, ov-class.h, ov-classdef.cc, ov-classdef.h, ov-complex.cc, ov-cx-diag.cc, ov-cx-mat.cc, ov-cx-sparse.cc, ov-dld-fcn.cc, ov-dld-fcn.h, ov-fcn-handle.cc, ov-fcn-handle.h, ov-fcn.h, ov-float.cc, ov-flt-complex.cc, ov-flt-cx-diag.cc, ov-flt-cx-mat.cc, ov-flt-re-diag.cc, ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-intx.h, ov-java.cc, ov-lazy-idx.cc, ov-legacy-range.cc, ov-magic-int.cc, ov-mex-fcn.cc, ov-mex-fcn.h, ov-null-mat.cc, ov-perm.cc, ov-range.cc, ov-re-diag.cc, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-scalar.cc, ov-str-mat.cc, ov-struct.cc, ov-typeinfo.cc, ov-typeinfo.h, ov-usr-fcn.cc, ov-usr-fcn.h, ov.cc, ov.h, ovl.h, octave.cc, octave.h, op-b-sbm.cc, op-bm-sbm.cc, op-cs-scm.cc, op-fm-fcm.cc, op-fs-fcm.cc, op-s-scm.cc, op-scm-cs.cc, op-scm-s.cc, op-sm-cs.cc, ops.h, anon-fcn-validator.cc, anon-fcn-validator.h, bp-table.cc, bp-table.h, comment-list.cc, comment-list.h, filepos.h, lex.h, oct-lvalue.cc, oct-lvalue.h, parse.h, profiler.cc, profiler.h, pt-anon-scopes.cc, pt-anon-scopes.h, pt-arg-list.cc, pt-arg-list.h, pt-args-block.cc, pt-args-block.h, pt-array-list.cc, pt-array-list.h, pt-assign.cc, pt-assign.h, pt-binop.cc, pt-binop.h, pt-bp.cc, pt-bp.h, pt-cbinop.cc, pt-cbinop.h, pt-cell.cc, pt-cell.h, pt-check.cc, pt-check.h, pt-classdef.cc, pt-classdef.h, pt-cmd.h, pt-colon.cc, pt-colon.h, pt-const.cc, pt-const.h, pt-decl.cc, pt-decl.h, pt-eval.cc, pt-eval.h, pt-except.cc, pt-except.h, pt-exp.cc, pt-exp.h, pt-fcn-handle.cc, pt-fcn-handle.h, pt-id.cc, pt-id.h, pt-idx.cc, pt-idx.h, pt-jump.h, pt-loop.cc, pt-loop.h, pt-mat.cc, pt-mat.h, pt-misc.cc, pt-misc.h, pt-pr-code.cc, pt-pr-code.h, pt-select.cc, pt-select.h, pt-spmd.cc, pt-spmd.h, pt-stmt.cc, pt-stmt.h, pt-tm-const.cc, pt-tm-const.h, pt-unop.cc, pt-unop.h, pt-walk.cc, pt-walk.h, pt.cc, pt.h, token.cc, token.h, Range.cc, Range.h, idx-vector.cc, idx-vector.h, range-fwd.h, CollocWt.cc, CollocWt.h, aepbalance.cc, aepbalance.h, chol.cc, chol.h, gepbalance.cc, gepbalance.h, gsvd.cc, gsvd.h, hess.cc, hess.h, lo-mappers.cc, lo-mappers.h, lo-specfun.cc, lo-specfun.h, lu.cc, lu.h, oct-convn.cc, oct-convn.h, oct-fftw.cc, oct-fftw.h, oct-norm.cc, oct-norm.h, oct-rand.cc, oct-rand.h, oct-spparms.cc, oct-spparms.h, qr.cc, qr.h, qrp.cc, qrp.h, randgamma.cc, randgamma.h, randmtzig.cc, randmtzig.h, randpoisson.cc, randpoisson.h, schur.cc, schur.h, sparse-chol.cc, sparse-chol.h, sparse-lu.cc, sparse-lu.h, sparse-qr.cc, sparse-qr.h, svd.cc, svd.h, child-list.cc, child-list.h, dir-ops.cc, dir-ops.h, file-ops.cc, file-ops.h, file-stat.cc, file-stat.h, lo-sysdep.cc, lo-sysdep.h, lo-sysinfo.cc, lo-sysinfo.h, mach-info.cc, mach-info.h, oct-env.cc, oct-env.h, oct-group.cc, oct-group.h, oct-password.cc, oct-password.h, oct-syscalls.cc, oct-syscalls.h, oct-time.cc, oct-time.h, oct-uname.cc, oct-uname.h, action-container.cc, action-container.h, base-list.h, cmd-edit.cc, cmd-edit.h, cmd-hist.cc, cmd-hist.h, f77-fcn.h, file-info.cc, file-info.h, lo-array-errwarn.cc, lo-array-errwarn.h, lo-hash.cc, lo-hash.h, lo-ieee.h, lo-regexp.cc, lo-regexp.h, lo-utils.cc, lo-utils.h, oct-base64.cc, oct-base64.h, oct-glob.cc, oct-glob.h, oct-inttypes.h, oct-mutex.cc, oct-mutex.h, oct-refcount.h, oct-shlib.cc, oct-shlib.h, oct-sparse.cc, oct-sparse.h, oct-string.h, octave-preserve-stream-state.h, pathsearch.cc, pathsearch.h, quit.cc, quit.h, unwind-prot.cc, unwind-prot.h, url-transfer.cc, url-transfer.h: Re-indent code after switch to using namespace macros.
author Rik <rik@octave.org>
date Thu, 01 Dec 2022 18:02:15 -0800
parents e88a07dec498
children 23664317f0d3 597f3ee61a48
comparison
equal deleted inserted replaced
31605:e88a07dec498 31607:aac27ad79be6
36 #include "ov-fcn-handle.h" 36 #include "ov-fcn-handle.h"
37 #include "variables.h" 37 #include "variables.h"
38 38
39 OCTAVE_BEGIN_NAMESPACE(octave) 39 OCTAVE_BEGIN_NAMESPACE(octave)
40 40
41 class base_hook_function 41 class base_hook_function
42 { 42 {
43 public: 43 public:
44 44
45 base_hook_function (void) = default; 45 base_hook_function (void) = default;
46 46
47 base_hook_function (const base_hook_function&) = default; 47 base_hook_function (const base_hook_function&) = default;
48 48
49 virtual ~base_hook_function (void) = default; 49 virtual ~base_hook_function (void) = default;
50 50
51 virtual std::string id (void) const { return ""; } 51 virtual std::string id (void) const { return ""; }
52 52
53 virtual bool is_valid (void) const { return false; } 53 virtual bool is_valid (void) const { return false; }
54 54
55 virtual void eval (const octave_value_list&) { } 55 virtual void eval (const octave_value_list&) { }
56 }; 56 };
57 57
58 class hook_function 58 class hook_function
59 { 59 {
60 public: 60 public:
61 61
62 hook_function (void) 62 hook_function (void)
63 { 63 {
64 static std::shared_ptr<base_hook_function> 64 static std::shared_ptr<base_hook_function>
65 nil_rep (new base_hook_function ()); 65 nil_rep (new base_hook_function ());
66 66
67 m_rep = nil_rep; 67 m_rep = nil_rep;
68 } 68 }
69 69
70 hook_function (const octave_value& f, 70 hook_function (const octave_value& f,
71 const octave_value& d = octave_value ()); 71 const octave_value& d = octave_value ());
72 72
73 ~hook_function (void) = default; 73 ~hook_function (void) = default;
74 74
75 hook_function (const hook_function& hf) = default; 75 hook_function (const hook_function& hf) = default;
76 76
77 hook_function& operator = (const hook_function& hf) = default; 77 hook_function& operator = (const hook_function& hf) = default;
78 78
79 std::string id (void) const { return m_rep->id (); } 79 std::string id (void) const { return m_rep->id (); }
80 80
81 bool is_valid (void) const { return m_rep->is_valid (); } 81 bool is_valid (void) const { return m_rep->is_valid (); }
82 82
83 void eval (const octave_value_list& initial_args) 83 void eval (const octave_value_list& initial_args)
84 { 84 {
85 m_rep->eval (initial_args); 85 m_rep->eval (initial_args);
86 } 86 }
87 87
88 private: 88 private:
89 89
90 std::shared_ptr<base_hook_function> m_rep; 90 std::shared_ptr<base_hook_function> m_rep;
91 }; 91 };
92 92
93 class named_hook_function : public base_hook_function 93 class named_hook_function : public base_hook_function
94 { 94 {
95 public: 95 public:
96 96
97 named_hook_function (const std::string& n, const octave_value& d) 97 named_hook_function (const std::string& n, const octave_value& d)
98 : m_name (n), m_data (d) 98 : m_name (n), m_data (d)
99 { } 99 { }
100 100
101 void eval (const octave_value_list& initial_args); 101 void eval (const octave_value_list& initial_args);
102 102
103 std::string id (void) const { return m_name; } 103 std::string id (void) const { return m_name; }
104 104
105 bool is_valid (void) const { return is_valid_function (m_name); } 105 bool is_valid (void) const { return is_valid_function (m_name); }
106 106
107 private: 107 private:
108 108
109 std::string m_name; 109 std::string m_name;
110 110
111 octave_value m_data; 111 octave_value m_data;
112 }; 112 };
113 113
114 class fcn_handle_hook_function : public base_hook_function 114 class fcn_handle_hook_function : public base_hook_function
115 { 115 {
116 public: 116 public:
117 117
118 fcn_handle_hook_function (const octave_value& fh_arg, const octave_value& d) 118 fcn_handle_hook_function (const octave_value& fh_arg, const octave_value& d)
119 : m_ident (), m_valid (false), m_fcn_handle (fh_arg), m_data (d) 119 : m_ident (), m_valid (false), m_fcn_handle (fh_arg), m_data (d)
120 { 120 {
121 octave_fcn_handle *fh = m_fcn_handle.fcn_handle_value (true); 121 octave_fcn_handle *fh = m_fcn_handle.fcn_handle_value (true);
122 122
123 if (fh) 123 if (fh)
124 { 124 {
125 m_valid = true; 125 m_valid = true;
126 126
127 std::ostringstream buf; 127 std::ostringstream buf;
128 buf << fh; 128 buf << fh;
129 m_ident = fh->fcn_name () + ':' + buf.str (); 129 m_ident = fh->fcn_name () + ':' + buf.str ();
130 } 130 }
131 } 131 }
132 132
133 void eval (const octave_value_list& initial_args); 133 void eval (const octave_value_list& initial_args);
134 134
135 std::string id (void) const { return m_ident; } 135 std::string id (void) const { return m_ident; }
136 136
137 bool is_valid (void) const { return m_valid; } 137 bool is_valid (void) const { return m_valid; }
138 138
139 private: 139 private:
140 140
141 std::string m_ident; 141 std::string m_ident;
142 142
143 bool m_valid; 143 bool m_valid;
144 144
145 octave_value m_fcn_handle; 145 octave_value m_fcn_handle;
146 146
147 octave_value m_data; 147 octave_value m_data;
148 }; 148 };
149 149
150 class hook_function_list 150 class hook_function_list
151 { 151 {
152 public: 152 public:
153 153
154 typedef std::map<std::string, hook_function> map_type; 154 typedef std::map<std::string, hook_function> map_type;
155 155
156 typedef map_type::iterator iterator; 156 typedef map_type::iterator iterator;
157 typedef map_type::const_iterator const_iterator; 157 typedef map_type::const_iterator const_iterator;
158 158
159 hook_function_list (void) = default; 159 hook_function_list (void) = default;
160 160
161 ~hook_function_list (void) = default; 161 ~hook_function_list (void) = default;
162 162
163 hook_function_list (const hook_function_list& lst) = default; 163 hook_function_list (const hook_function_list& lst) = default;
164 164
165 hook_function_list& operator = (const hook_function_list& lst) = default; 165 hook_function_list& operator = (const hook_function_list& lst) = default;
166 166
167 bool empty (void) const { return m_fcn_map.empty (); } 167 bool empty (void) const { return m_fcn_map.empty (); }
168 168
169 void clear (void) { m_fcn_map.clear (); } 169 void clear (void) { m_fcn_map.clear (); }
170 170
171 void insert (const std::string& id, const hook_function& f) 171 void insert (const std::string& id, const hook_function& f)
172 { 172 {
173 m_fcn_map[id] = f; 173 m_fcn_map[id] = f;
174 } 174 }
175 175
176 iterator find (const std::string& id) 176 iterator find (const std::string& id)
177 { 177 {
178 return m_fcn_map.find (id); 178 return m_fcn_map.find (id);
179 } 179 }
180 180
181 const_iterator find (const std::string& id) const 181 const_iterator find (const std::string& id) const
182 { 182 {
183 return m_fcn_map.find (id); 183 return m_fcn_map.find (id);
184 } 184 }
185 185
186 iterator end (void) { return m_fcn_map.end (); } 186 iterator end (void) { return m_fcn_map.end (); }
187 187
188 const_iterator end (void) const { return m_fcn_map.end (); } 188 const_iterator end (void) const { return m_fcn_map.end (); }
189 189
190 void erase (iterator p) { m_fcn_map.erase (p); } 190 void erase (iterator p) { m_fcn_map.erase (p); }
191 191
192 void run (const octave_value_list& initial_args = octave_value_list ()) 192 void run (const octave_value_list& initial_args = octave_value_list ())
193 { 193 {
194 auto p = m_fcn_map.begin (); 194 auto p = m_fcn_map.begin ();
195 195
196 while (p != m_fcn_map.end ()) 196 while (p != m_fcn_map.end ())
197 { 197 {
198 std::string hook_fcn_id = p->first; 198 std::string hook_fcn_id = p->first;
199 hook_function hook_fcn = p->second; 199 hook_function hook_fcn = p->second;
200 200
201 auto q = p++; 201 auto q = p++;
202 202
203 if (hook_fcn.is_valid ()) 203 if (hook_fcn.is_valid ())
204 hook_fcn.eval (initial_args); 204 hook_fcn.eval (initial_args);
205 else 205 else
206 m_fcn_map.erase (q); 206 m_fcn_map.erase (q);
207 } 207 }
208 } 208 }
209 209
210 private: 210 private:
211 211
212 map_type m_fcn_map; 212 map_type m_fcn_map;
213 }; 213 };
214 214
215 OCTAVE_END_NAMESPACE(octave) 215 OCTAVE_END_NAMESPACE(octave)
216 216
217 #if defined (OCTAVE_PROVIDE_DEPRECATED_SYMBOLS) 217 #if defined (OCTAVE_PROVIDE_DEPRECATED_SYMBOLS)
218 OCTAVE_DEPRECATED (7, "use 'octave::base_hook_function' instead") 218 OCTAVE_DEPRECATED (7, "use 'octave::base_hook_function' instead")