annotate liboctave/util/lo-array-errwarn.cc @ 30564:796f54d4ddbf stable

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2021. In all .txi and .texi files except gpl.txi and gpl.texi in the doc/liboctave and doc/interpreter directories, change the copyright to "Octave Project Developers", the same as used for other source files. Update copyright notices for 2022 (not done since 2019). For gpl.txi and gpl.texi, change the copyright notice to be "Free Software Foundation, Inc." and leave the date at 2007 only because this file only contains the text of the GPL, not anything created by the Octave Project Developers. Add Paul Thomas to contributors.in.
author John W. Eaton <jwe@octave.org>
date Tue, 28 Dec 2021 18:22:40 -0500
parents 6d827dcde2b9
children 83f9f8bda883
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 29570
diff changeset
3 // Copyright (C) 2016-2022 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
25
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21660
diff changeset
26 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21229
diff changeset
27 # include "config.h"
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
28 #endif
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
29
26569
0e77df67b522 Add static compile-time checking of printf functions in liboctave.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
30 #include <cinttypes>
25806
0360ed7c39a8 Always print non-integer part of non-integer indices in invalid index message (bug #46859).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 25054
diff changeset
31 #include <cmath>
0360ed7c39a8 Always print non-integer part of non-integer indices in invalid index message (bug #46859).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 25054
diff changeset
32
29570
6d827dcde2b9 * lo-array-errwarn.cc: Include <limits>. (bug #60470)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
33 #include <limits>
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
34 #include <sstream>
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
35
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
36 #include "lo-array-errwarn.h"
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
37 #include "lo-error.h"
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
38
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
39 namespace octave
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
40 {
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
41 // Text constants used to shorten code below.
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
42
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
43 static const char *error_id_nonconformant_args
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
44 = "Octave:nonconformant-args";
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
45
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
46 static const char *error_id_index_out_of_bounds
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
47 = "Octave:index-out-of-bounds";
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
48
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
49 static const char *error_id_invalid_index = "Octave:invalid-index";
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
50
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
51 static const char *warning_id_nearly_singular_matrix
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
52 = "Octave:nearly-singular-matrix";
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
53
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
54 static const char *warning_id_singular_matrix = "Octave:singular-matrix";
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 26569
diff changeset
55
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
56 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
57 err_nan_to_logical_conversion (void)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
58 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
59 (*current_liboctave_error_handler)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
60 ("invalid conversion from NaN to logical");
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
61 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
62
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
63 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
64 err_nan_to_character_conversion (void)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
65 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
66 (*current_liboctave_error_handler)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
67 ("invalid conversion from NaN to character");
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
68 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
69
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
70 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
71 err_nonconformant (const char *op,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
72 octave_idx_type op1_len, octave_idx_type op2_len)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
73 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
74 const char *err_id = error_id_nonconformant_args;
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
75
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
76 (*current_liboctave_error_with_id_handler)
26569
0e77df67b522 Add static compile-time checking of printf functions in liboctave.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
77 (err_id, "%s: nonconformant arguments (op1 len: %" OCTAVE_IDX_TYPE_FORMAT
0e77df67b522 Add static compile-time checking of printf functions in liboctave.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
78 ", op2 len: % " OCTAVE_IDX_TYPE_FORMAT ")",
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
79 op, op1_len, op2_len);
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
80 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
81
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
82 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
83 err_nonconformant (const char *op,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
84 octave_idx_type op1_nr, octave_idx_type op1_nc,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
85 octave_idx_type op2_nr, octave_idx_type op2_nc)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
86 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
87 const char *err_id = error_id_nonconformant_args;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
88
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
89 (*current_liboctave_error_with_id_handler)
26569
0e77df67b522 Add static compile-time checking of printf functions in liboctave.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
90 (err_id, "%s: nonconformant arguments "
0e77df67b522 Add static compile-time checking of printf functions in liboctave.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
91 "(op1 is %" OCTAVE_IDX_TYPE_FORMAT "x%" OCTAVE_IDX_TYPE_FORMAT ", "
0e77df67b522 Add static compile-time checking of printf functions in liboctave.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
92 "op2 is %" OCTAVE_IDX_TYPE_FORMAT"x%" OCTAVE_IDX_TYPE_FORMAT ")",
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
93 op, op1_nr, op1_nc, op2_nr, op2_nc);
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
94 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
95
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
96 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
97 err_nonconformant (const char *op,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
98 const dim_vector& op1_dims, const dim_vector& op2_dims)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
99 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
100 const char *err_id = error_id_nonconformant_args;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
101
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
102 std::string op1_dims_str = op1_dims.str ();
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
103 std::string op2_dims_str = op2_dims.str ();
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
104
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
105 (*current_liboctave_error_with_id_handler)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
106 (err_id, "%s: nonconformant arguments (op1 is %s, op2 is %s)",
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
107 op, op1_dims_str.c_str (), op2_dims_str.c_str ());
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
108 }
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
109
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
110 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
111 err_del_index_out_of_range (bool is1d, octave_idx_type idx,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
112 octave_idx_type ext)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
113 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
114 const char *err_id = error_id_index_out_of_bounds;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
115
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
116 (*current_liboctave_error_with_id_handler)
26569
0e77df67b522 Add static compile-time checking of printf functions in liboctave.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
117 (err_id, "A(%s) = []: index out of bounds: value %" OCTAVE_IDX_TYPE_FORMAT
0e77df67b522 Add static compile-time checking of printf functions in liboctave.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
118 " out of bound %" OCTAVE_IDX_TYPE_FORMAT,
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
119 is1d ? "I" : "..,I,..", idx, ext);
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
120 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
121
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
122 // Show the expression that caused the error, e.g., "A(-1,_)",
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
123 // "A(0+1i)", "A(_,3)". Show how many indices come before/after the
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
124 // offending one, e.g., (<error>), (<error>,_), or (_,<error>,...[x5]...)
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
125
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
126 std::string
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
127 index_exception::expression (void) const
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
128 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
129 std::ostringstream buf;
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
130
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
131 if (m_var.empty () || m_var == "<unknown>")
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
132 buf << "index ";
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
133 else
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
134 buf << m_var;
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
135
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
136 bool show_parens = m_dim > 0;
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
137
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
138 if (show_parens)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
139 {
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
140 if (m_dim < 5)
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
141 {
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23446
diff changeset
142 buf << '(';
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
143
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
144 for (octave_idx_type i = 1; i < m_dim; i++)
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
145 buf << "_,";
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
146 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
147 else
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
148 buf << "(...[x" << m_dim - 1 << "]...";
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
149 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
150
28012
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
151 buf << m_index;
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
152
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
153 if (show_parens)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
154 {
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
155 if (m_nd - m_dim < 5)
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
156 {
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
157 for (octave_idx_type i = 0; i < m_nd - m_dim; i++)
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
158 buf << ",_";
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
159
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
160 if (m_nd >= m_dim)
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23446
diff changeset
161 buf << ')';
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
162 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
163 else
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
164 buf << "...[x" << m_nd - m_dim << "]...)";
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
165 }
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
166
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
167 return buf.str ();
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
168 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
169
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
170 class invalid_index : public index_exception
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
171 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
172 public:
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
173
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
174 invalid_index (const std::string& value, octave_idx_type ndim,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
175 octave_idx_type dimen)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
176 : index_exception (value, ndim, dimen)
28012
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
177 {
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
178 // Virtual, but the one we want to call is defined in this class.
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
179 update_message ();
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
180 }
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
181
28012
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
182 void update_message (void)
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
183 {
28012
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
184 static std::string exp
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
185 = std::to_string (std::numeric_limits<octave_idx_type>::digits);
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
186
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
187 set_message (expression ()
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
188 + ": subscripts must be either integers 1 to (2^" + exp
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
189 + ")-1 or logicals");
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
190 }
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
191
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
192 // ID of error to throw
23446
cd4e1ee28716 maint: Use convention 'void * fcn ()' for functions which return pointers.
Rik <rik@octave.org>
parents: 23220
diff changeset
193 const char * err_id (void) const
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
194 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
195 return error_id_invalid_index;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
196 }
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
197 };
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
198
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
199 // Complain if an index is negative, fractional, or too big.
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
200
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
201 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
202 err_invalid_index (const std::string& idx, octave_idx_type nd,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
203 octave_idx_type dim, const std::string&)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
204 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
205 invalid_index e (idx, nd, dim);
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
206
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
207 throw e;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
208 }
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
209
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
210 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
211 err_invalid_index (octave_idx_type n, octave_idx_type nd,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
212 octave_idx_type dim, const std::string& var)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
213 {
28003
60d8d6e5594d use std::to_string instead of ostringstream buffer
John W. Eaton <jwe@octave.org>
parents: 27997
diff changeset
214 err_invalid_index (std::to_string (n + 1), nd, dim, var);
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
215 }
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
216
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
217 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
218 err_invalid_index (double n, octave_idx_type nd, octave_idx_type dim,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
219 const std::string& var)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
220 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
221 std::ostringstream buf;
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
222 buf << n + 1;
25807
cb775c73866d Don't print fractional part of an invalid NaN index.
Rik <rik@octave.org>
parents: 25806
diff changeset
223
cb775c73866d Don't print fractional part of an invalid NaN index.
Rik <rik@octave.org>
parents: 25806
diff changeset
224 if (! std::isnan (n))
cb775c73866d Don't print fractional part of an invalid NaN index.
Rik <rik@octave.org>
parents: 25806
diff changeset
225 {
cb775c73866d Don't print fractional part of an invalid NaN index.
Rik <rik@octave.org>
parents: 25806
diff changeset
226 // if n not an integer, but would be printed as one, show diff
cb775c73866d Don't print fractional part of an invalid NaN index.
Rik <rik@octave.org>
parents: 25806
diff changeset
227 double nearest = std::floor (n + 1.5);
cb775c73866d Don't print fractional part of an invalid NaN index.
Rik <rik@octave.org>
parents: 25806
diff changeset
228 if (n + 1 != nearest && (buf.str ().find ('.') == std::string::npos))
cb775c73866d Don't print fractional part of an invalid NaN index.
Rik <rik@octave.org>
parents: 25806
diff changeset
229 buf << std::showpos << (n + 1 - nearest);
cb775c73866d Don't print fractional part of an invalid NaN index.
Rik <rik@octave.org>
parents: 25806
diff changeset
230 }
25806
0360ed7c39a8 Always print non-integer part of non-integer indices in invalid index message (bug #46859).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 25054
diff changeset
231
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
232 err_invalid_index (buf.str (), nd, dim, var);
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
233 }
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
234
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
235 // Complain for read access beyond the bounds of an array.
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
236
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
237 class out_of_range : public index_exception
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
238 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
239 public:
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
240
28004
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
241 out_of_range (const std::string& value, octave_idx_type nd,
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
242 octave_idx_type dim, octave_idx_type ext,
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
243 const dim_vector& size)
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
244 : index_exception (value, nd, dim), m_size (size), m_extent (ext)
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
245 {
28012
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
246 // Virtual, but the one we want to call is defined in this class.
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
247 update_message ();
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
248 }
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
249
28012
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
250 void update_message (void)
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
251 {
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
252 set_message (expression () + ": out of bound "
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
253 + std::to_string (m_extent)
9a965fec21c1 refactor index_exception classes to accommodate std::exception::what method
John W. Eaton <jwe@octave.org>
parents: 28004
diff changeset
254 + " (dimensions are " + m_size.str ('x') + ")");
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
255 }
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
256
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
257 // ID of error to throw.
23446
cd4e1ee28716 maint: Use convention 'void * fcn ()' for functions which return pointers.
Rik <rik@octave.org>
parents: 23220
diff changeset
258 const char * err_id (void) const
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
259 {
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
260 return error_id_index_out_of_bounds;
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
261 }
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
262
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
263 private:
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
264
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
265 // Dimension of object being accessed.
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
266 dim_vector m_size;
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
267
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
268 // Length of dimension being accessed.
27379
3db033e86376 use m_ prefix for data members in most liboctave/util classes
John W. Eaton <jwe@octave.org>
parents: 27101
diff changeset
269 octave_idx_type m_extent;
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
270 };
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
271
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
272 // Complain of an index that is out of range
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
273 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
274 err_index_out_of_range (int nd, int dim, octave_idx_type idx,
28004
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
275 octave_idx_type ext, const dim_vector& dv)
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
276 {
28004
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
277 throw out_of_range (std::to_string (idx), nd, dim, ext, dv);
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
278 }
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
279
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
280 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
281 err_invalid_resize (void)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
282 {
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
283 (*current_liboctave_error_with_id_handler)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
284 ("Octave:invalid-resize",
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
285 "Invalid resizing operation or ambiguous assignment to an out-of-bounds array element");
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
286 }
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
287
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
288 void
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
289 warn_singular_matrix (double rcond)
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
290 {
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
291 if (rcond == 0.0)
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
292 {
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
293 (*current_liboctave_warning_with_id_handler)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
294 (warning_id_singular_matrix,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
295 "matrix singular to machine precision");
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
296 }
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
297 else
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
298 {
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
299 (*current_liboctave_warning_with_id_handler)
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
300 (warning_id_nearly_singular_matrix,
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
301 "matrix singular to machine precision, rcond = %g", rcond);
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
302 }
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
303 }
28004
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
304
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
305 // DEPRECATED in Octave 6.
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
306
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
307 // Complain of an index that is out of range, but we don't know matrix size
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
308 void
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
309 err_index_out_of_range (int nd, int dim, octave_idx_type idx,
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
310 octave_idx_type ext)
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
311 {
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
312 // The dim_vector setting here doesn't really make sense. However,
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
313 // this function has been deprecated and will be removed in version
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
314 // 8, so there's no need to attempt to fix it.
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
315
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
316 throw out_of_range (std::to_string (idx), nd, dim, ext,
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
317 dim_vector (1, 1, 1, 1, 1, 1, 1));
403df0b32204 update out_of_range error messages
John W. Eaton <jwe@octave.org>
parents: 28003
diff changeset
318 }
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
319 }
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
320
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
diff changeset
321 /* Tests in test/index.tst */