annotate liboctave/cruft/misc/quit.h @ 22327:d0562b3159c7

move more classes inside octave namespace * ov-complex.cc, quit.h, lo-array-errwarn.h, lo-array-errwarn.cc, lo-array-gripes.cc: Move classes inside octave namespace. * NEWS, file-editor-tab.cc, Cell.cc, __qp__.cc, cellfun.cc, daspk.cc, dasrt.cc, dassl.cc, data.cc, error.cc, error.h, errwarn.cc, errwarn.h, file-io.cc, gcd.cc, graphics.cc, graphics.in.h, gripes.cc, gripes.h, input.cc, interpreter.cc, interpreter.h, inv.cc, jit-typeinfo.cc, load-path.cc, ls-mat-ascii.cc, ls-mat5.cc, lsode.cc, mex.cc, oct-handle.h, oct-map.cc, oct-stream.cc, quad.cc, rand.cc, sparse-xdiv.cc, sparse-xpow.cc, sparse.cc, sub2ind.cc, toplev.cc, utils.cc, variables.cc, xdiv.cc, xpow.cc, __eigs__.cc, __init_gnuplot__.cc, ov-base-diag.cc, ov-base-mat.cc, ov-base-scalar.cc, ov-base-sparse.cc, ov-base.cc, ov-class.cc, ov-classdef.cc, ov-complex.h, ov-complex.cc, ov-cx-mat.cc, ov-cx-sparse.cc, ov-fcn-handle.cc, ov-float.cc, ov-float.h, ov-flt-complex.h, ov-flt-cx-mat.cc, ov-flt-re-mat.cc, ov-java.cc, ov-oncleanup.cc, ov-perm.cc, ov-range.cc, ov-re-diag.cc, ov-re-mat.cc, ov-re-sparse.cc, ov-scalar.cc, ov-scalar.h, ov-str-mat.cc, ov.cc, op-cs-cs.cc, op-fcs-fcs.cc, op-fs-fs.cc, op-int.h, op-s-s.cc, ops.h, oct-parse.in.yy, pt-assign.cc, pt-eval.cc, pt-idx.cc, pt.cc, Array-util.cc, Array.cc, CColVector.cc, CDiagMatrix.cc, CMatrix.cc, CNDArray.cc, CRowVector.cc, CSparse.cc, DiagArray2.cc, MDiagArray2.cc, MSparse.cc, PermMatrix.cc, Range.cc, Sparse.cc, dColVector.cc, dDiagMatrix.cc, dMatrix.cc, dNDArray.cc, dRowVector.cc, dSparse.cc, fCColVector.cc, fCDiagMatrix.cc, fCMatrix.cc, fCNDArray.cc, fCRowVector.cc, fColVector.cc, fDiagMatrix.cc, fMatrix.cc, fNDArray.cc, fRowVector.cc, idx-vector.cc, quit.cc, quit.h, gepbalance.cc, Sparse-diag-op-defs.h, Sparse-op-defs.h, Sparse-perm-op-defs.h, mx-inlines.cc, mx-op-defs.h, cmd-edit.cc, lo-array-errwarn.cc, lo-array-errwarn.h, lo-array-gripes.cc, lo-array-gripes.h, oct-binmap.h: Update to use namespace.
author John W. Eaton <jwe@octave.org>
date Wed, 17 Aug 2016 03:41:42 -0400
parents bac0d6f07a3e
children 4caa7b28d183
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
1 /*
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
2
22323
bac0d6f07a3e maint: Update copyright notices for 2016.
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
3 Copyright (C) 2002-2016 John W. Eaton
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
4
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
6
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6123
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6123
diff changeset
10 option) any later version.
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
11
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
15 for more details.
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
16
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6123
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6123
diff changeset
19 <http://www.gnu.org/licenses/>.
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
20
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
21 */
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
22
20791
f7084eae3318 maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents: 20785
diff changeset
23 #if ! defined (octave_quit_h)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
24 #define octave_quit_h 1
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
25
21244
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21227
diff changeset
26 #include "octave-config.h"
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21227
diff changeset
27
19082
96df707c7dad Do not include system header files in extern "C" block (bug #43171)
Johannes Zarl <johannes.zarl@jku.at>
parents: 17744
diff changeset
28 #include <setjmp.h>
96df707c7dad Do not include system header files in extern "C" block (bug #43171)
Johannes Zarl <johannes.zarl@jku.at>
parents: 17744
diff changeset
29
21941
1d23b75cbcd1 hide signal.h from C++ sources
John W. Eaton <jwe@octave.org>
parents: 21849
diff changeset
30 /* The signal header is just needed for the sig_atomic_t type. */
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
31 #if defined (__cplusplus)
21941
1d23b75cbcd1 hide signal.h from C++ sources
John W. Eaton <jwe@octave.org>
parents: 21849
diff changeset
32 # include <csignal>
21202
f7121e111991 maint: indent #ifdef blocks in liboctave and src directories.
Rik <rik@octave.org>
parents: 21040
diff changeset
33 # include <string>
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
34 extern "C" {
21941
1d23b75cbcd1 hide signal.h from C++ sources
John W. Eaton <jwe@octave.org>
parents: 21849
diff changeset
35 #else
1d23b75cbcd1 hide signal.h from C++ sources
John W. Eaton <jwe@octave.org>
parents: 21849
diff changeset
36 # include <signal.h>
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
37 #endif
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
38
4180
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
39 #if defined (OCTAVE_HAVE_SIG_JUMP)
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
40
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
41 typedef sigjmp_buf octave_jmp_buf;
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
42
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
43 #define octave_set_current_context sigsetjmp (current_context, 1)
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
44
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
45 #else
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
46
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
47 typedef jmp_buf octave_jmp_buf;
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
48
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
49 #define octave_set_current_context setjmp (current_context)
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
50
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
51 #endif
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
52
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
53 OCTAVE_API extern octave_jmp_buf current_context;
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
54
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
55 OCTAVE_API extern void octave_save_current_context (void *);
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
56
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
57 OCTAVE_API extern void octave_restore_current_context (void *);
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
58
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
59 OCTAVE_NORETURN OCTAVE_API extern void octave_jump_to_enclosing_context (void);
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
60
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
61 #if defined (__cplusplus)
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
62
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
63 namespace octave
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
64 {
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
65 class
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
66 execution_exception
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
67 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
68 public:
20666
e0e2c2ce7e94 defer stack trace until back at top level
John W. Eaton <jwe@octave.org>
parents: 20535
diff changeset
69
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
70 execution_exception (void) : m_stack_trace () { }
20666
e0e2c2ce7e94 defer stack trace until back at top level
John W. Eaton <jwe@octave.org>
parents: 20535
diff changeset
71
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
72 execution_exception (const execution_exception& x)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
73 : m_stack_trace (x.m_stack_trace) { }
20666
e0e2c2ce7e94 defer stack trace until back at top level
John W. Eaton <jwe@octave.org>
parents: 20535
diff changeset
74
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
75 execution_exception& operator = (const execution_exception& x)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
76 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
77 if (&x != this)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
78 m_stack_trace = x.m_stack_trace;
20666
e0e2c2ce7e94 defer stack trace until back at top level
John W. Eaton <jwe@octave.org>
parents: 20535
diff changeset
79
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
80 return *this;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
81 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
82
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
83 ~execution_exception (void) { }
20666
e0e2c2ce7e94 defer stack trace until back at top level
John W. Eaton <jwe@octave.org>
parents: 20535
diff changeset
84
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
85 virtual void set_stack_trace (const std::string& st)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
86 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
87 m_stack_trace = st;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
88 }
20666
e0e2c2ce7e94 defer stack trace until back at top level
John W. Eaton <jwe@octave.org>
parents: 20535
diff changeset
89
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
90 virtual void set_stack_trace (void)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
91 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
92 m_stack_trace = "";
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
93 }
20785
b6f2909e7f94 always throw exception after debugging with debug_on_error
John W. Eaton <jwe@octave.org>
parents: 20666
diff changeset
94
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
95 virtual std::string info (void) const
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
96 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
97 return m_stack_trace;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
98 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
99
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
100 private:
20666
e0e2c2ce7e94 defer stack trace until back at top level
John W. Eaton <jwe@octave.org>
parents: 20535
diff changeset
101
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
102 std::string m_stack_trace;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
103 };
20785
b6f2909e7f94 always throw exception after debugging with debug_on_error
John W. Eaton <jwe@octave.org>
parents: 20666
diff changeset
104
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
105 class
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
106 exit_exception
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
107 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
108 public:
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
109
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
110 exit_exception (int exit_status = 0, bool safe_to_return = false)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
111 : m_exit_status (exit_status), m_safe_to_return (safe_to_return)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
112 { }
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
113
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
114 exit_exception (const exit_exception& ex)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
115 : m_exit_status (ex.m_exit_status), m_safe_to_return (ex.m_safe_to_return)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
116 { }
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
117
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
118 exit_exception& operator = (exit_exception& ex)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
119 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
120 if (this != &ex)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
121 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
122 m_exit_status = ex.m_exit_status;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
123 m_safe_to_return = ex.m_safe_to_return;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
124 }
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
125
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
126 return *this;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
127 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
128
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
129 ~exit_exception (void) { }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
130
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
131 int exit_status (void) const { return m_exit_status; }
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
132
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
133 bool safe_to_return (void) const { return m_safe_to_return; }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
134
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
135 private:
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
136
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
137 int m_exit_status;
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
138
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
139 bool m_safe_to_return;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
140 };
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
141
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
142 class
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
143 interrupt_exception
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
144 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
145 };
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
146 }
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
147
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
148 OCTAVE_DEPRECATED ("use 'octave::execution_exception' instead")
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
149 typedef octave::exit_exception octave_execution_exception;
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
150
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
151 OCTAVE_DEPRECATED ("use 'octave::exit_exception' instead")
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
152 typedef octave::exit_exception octave_exit_exception;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
153
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
154 OCTAVE_DEPRECATED ("use 'octave::interrupt_exception' instead")
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
155 typedef octave::interrupt_exception octave_interrupt_exception;
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
156
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
157 #endif
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
158
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
159 enum octave_exception
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
160 {
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
161 octave_no_exception = 0,
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
162 octave_exec_exception = 1,
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
163 octave_alloc_exception = 3,
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
164 octave_quit_exception = 4
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
165 };
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
166
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
167 OCTAVE_API extern sig_atomic_t octave_interrupt_immediately;
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
168
5133
7191f6e086f9 [project @ 2005-02-08 19:17:41 by jwe]
jwe
parents: 4793
diff changeset
169 /*
7191f6e086f9 [project @ 2005-02-08 19:17:41 by jwe]
jwe
parents: 4793
diff changeset
170 > 0: interrupt pending
7191f6e086f9 [project @ 2005-02-08 19:17:41 by jwe]
jwe
parents: 4793
diff changeset
171 0: no interrupt pending
7191f6e086f9 [project @ 2005-02-08 19:17:41 by jwe]
jwe
parents: 4793
diff changeset
172 < 0: handling interrupt
7191f6e086f9 [project @ 2005-02-08 19:17:41 by jwe]
jwe
parents: 4793
diff changeset
173 */
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
174 OCTAVE_API extern sig_atomic_t octave_interrupt_state;
4180
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
175
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
176 OCTAVE_API extern sig_atomic_t octave_exception_state;
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
177
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
178 OCTAVE_API extern sig_atomic_t octave_exit_exception_status;
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
179
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
180 OCTAVE_API extern sig_atomic_t octave_exit_exception_safe_to_return;
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
181
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
182 OCTAVE_API extern volatile sig_atomic_t octave_signal_caught;
5142
0f9108f298ab [project @ 2005-02-12 02:29:34 by jwe]
jwe
parents: 5133
diff changeset
183
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
184 OCTAVE_API extern void octave_handle_signal (void);
5142
0f9108f298ab [project @ 2005-02-12 02:29:34 by jwe]
jwe
parents: 5133
diff changeset
185
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
186 OCTAVE_NORETURN OCTAVE_API extern void octave_throw_interrupt_exception (void);
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
187
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
188 OCTAVE_NORETURN OCTAVE_API extern void octave_throw_execution_exception (void);
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
189
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
190 OCTAVE_NORETURN OCTAVE_API extern void octave_throw_bad_alloc (void);
4180
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
191
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
192 OCTAVE_API extern void octave_rethrow_exception (void);
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
193
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
194 #if defined (__cplusplus)
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
195
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
196 extern OCTAVE_API void
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
197 clean_up_and_exit (int exit_status, bool safe_to_return = false);
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
198
10142
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
199 inline void octave_quit (void)
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
200 {
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
201 if (octave_signal_caught)
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
202 {
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
203 octave_signal_caught = 0;
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
204 octave_handle_signal ();
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
205 }
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
206 };
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
207
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
208 #define OCTAVE_QUIT octave_quit ()
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
209
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
210 #else
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
211
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
212 #define OCTAVE_QUIT \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
213 do \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
214 { \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
215 if (octave_signal_caught) \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
216 { \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
217 octave_signal_caught = 0; \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
218 octave_handle_signal (); \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
219 } \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
220 } \
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
221 while (0)
10142
829e69ec3110 make OCTAVE_QUIT a function
Jaroslav Hajek <highegg@gmail.com>
parents: 9933
diff changeset
222 #endif
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
223
4302
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
224 /* Normally, you just want to use
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
225
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
226 BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE;
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
227 ... some code that calls a "foreign" function ...
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
228 END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE;
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
229
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
230 but sometimes it is useful to do something like
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
231
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
232 BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE_1;
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
233 ... custom code here, normally ending in a call to
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
234 octave_rethrow_exception ...
4302
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
235 BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE_2;
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
236
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
237 so that you can perform extra clean up operations before throwing
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
238 the interrupt exception. */
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
239
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
240 #define BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
241 BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE_1; \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
242 octave_rethrow_exception (); \
4302
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
243 BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE_2
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
244
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
245 #define BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE_1 \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
246 do \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
247 { \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
248 octave_jmp_buf saved_context; \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
249 \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
250 octave_save_current_context (saved_context); \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
251 \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
252 if (octave_set_current_context) \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
253 { \
9930
1ddc25c3623a libcruft/misc: untabify sources
John W. Eaton <jwe@octave.org>
parents: 8928
diff changeset
254 octave_restore_current_context (saved_context)
4302
ebc2d8e4968b [project @ 2003-01-22 22:02:23 by jwe]
jwe
parents: 4268
diff changeset
255
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
256 #define BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE_2 \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
257 } \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
258 else \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
259 { \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
260 octave_interrupt_immediately++
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
261
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
262 #define END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
263 octave_interrupt_immediately--; \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
264 octave_restore_current_context (saved_context); \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
265 } \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
266 } \
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
267 while (0)
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
268
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
269 #if defined (__cplusplus)
4196
f874c6c68845 [project @ 2002-11-20 22:27:01 by jwe]
jwe
parents: 4182
diff changeset
270
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
271 #define BEGIN_INTERRUPT_WITH_EXCEPTIONS \
4182
4d1d7c51205c [project @ 2002-11-15 20:33:47 by jwe]
jwe
parents: 4181
diff changeset
272 sig_atomic_t saved_octave_interrupt_immediately = octave_interrupt_immediately; \
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
273 \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
274 try \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
275 { \
4182
4d1d7c51205c [project @ 2002-11-15 20:33:47 by jwe]
jwe
parents: 4181
diff changeset
276 octave_interrupt_immediately = 0;
4180
84fe3ca3a246 [project @ 2002-11-15 04:47:01 by jwe]
jwe
parents: 4155
diff changeset
277
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
278 #define END_INTERRUPT_WITH_EXCEPTIONS \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
279 } \
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
280 catch (const octave::interrupt_exception&) \
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
281 { \
4182
4d1d7c51205c [project @ 2002-11-15 20:33:47 by jwe]
jwe
parents: 4181
diff changeset
282 octave_interrupt_immediately = saved_octave_interrupt_immediately; \
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
283 octave_jump_to_enclosing_context (); \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
284 } \
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
285 catch (const octave::execution_exception&) \
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
286 { \
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
287 octave_interrupt_immediately = saved_octave_interrupt_immediately; \
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
288 octave_exception_state = octave_exec_exception; \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
289 octave_jump_to_enclosing_context (); \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
290 } \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
291 catch (const std::bad_alloc&) \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
292 { \
4182
4d1d7c51205c [project @ 2002-11-15 20:33:47 by jwe]
jwe
parents: 4181
diff changeset
293 octave_interrupt_immediately = saved_octave_interrupt_immediately; \
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
294 octave_exception_state = octave_alloc_exception; \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
295 octave_jump_to_enclosing_context (); \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
296 } \
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
297 catch (const octave::exit_exception& ex) \
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
298 { \
22094
9203833cab7d move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents: 21949
diff changeset
299 octave_interrupt_immediately = saved_octave_interrupt_immediately; \
22197
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
300 octave_exception_state = octave_quit_exception; \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
301 octave_exit_exception_status = ex.exit_status (); \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
302 octave_exit_exception_safe_to_return = ex.safe_to_return (); \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
303 octave_jump_to_enclosing_context (); \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
304 } \
e43d83253e28 refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents: 22094
diff changeset
305 \
4182
4d1d7c51205c [project @ 2002-11-15 20:33:47 by jwe]
jwe
parents: 4181
diff changeset
306 octave_interrupt_immediately = saved_octave_interrupt_immediately
4196
f874c6c68845 [project @ 2002-11-20 22:27:01 by jwe]
jwe
parents: 4182
diff changeset
307 #endif
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
308
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
309 #if defined (__cplusplus)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
310 }
4560
661246155bbc [project @ 2003-10-28 21:02:43 by jwe]
jwe
parents: 4551
diff changeset
311
4572
4623ef02a605 [project @ 2003-10-31 03:07:05 by jwe]
jwe
parents: 4560
diff changeset
312 /* These should only be declared for C++ code, and should also be
4623ef02a605 [project @ 2003-10-31 03:07:05 by jwe]
jwe
parents: 4560
diff changeset
313 outside of any extern "C" block. */
4560
661246155bbc [project @ 2003-10-28 21:02:43 by jwe]
jwe
parents: 4551
diff changeset
314
21227
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
315 extern OCTAVE_API void (*octave_signal_hook) (void);
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
316 extern OCTAVE_API void (*octave_interrupt_hook) (void);
25150962bfd3 eliminate CRUFT_API macro
John W. Eaton <jwe@octave.org>
parents: 21213
diff changeset
317 extern OCTAVE_API void (*octave_bad_alloc_hook) (void);
4560
661246155bbc [project @ 2003-10-28 21:02:43 by jwe]
jwe
parents: 4551
diff changeset
318
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
319 #endif
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
320
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents:
diff changeset
321 #endif