Mercurial > octave
annotate liboctave/util/oct-sparse.cc @ 26376:00f796120a6d stable
maint: Update copyright dates in all source files.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 02 Jan 2019 16:32:43 -0500 |
parents | 6652d3823428 |
children | 097774bed4ed |
rev | line source |
---|---|
23391
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1 /* |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2 |
26376
00f796120a6d
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
3 Copyright (C) 2017-2019 John W. Eaton |
23391
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
4 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
5 This file is part of Octave. |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
6 |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23391
diff
changeset
|
7 Octave is free software: you can redistribute it and/or modify it |
23391
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
8 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23391
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
23391
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
10 (at your option) any later version. |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
11 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
13 WITHOUT ANY WARRANTY; without even the implied warranty of |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
15 GNU General Public License for more details. |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
16 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
18 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23391
diff
changeset
|
19 <https://www.gnu.org/licenses/>. |
23391
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
20 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
21 */ |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
22 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
23 #if defined (HAVE_CONFIG_H) |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
24 # include "config.h" |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
25 #endif |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
26 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
27 #include "lo-error.h" |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
28 #include "oct-sparse.h" |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
29 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
30 #if (defined (HAVE_AMD) || defined (HAVE_CCOLAMD) \ |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
31 || defined (HAVE_CHOLMOD) || defined (HAVE_COLAMD) \ |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
32 || defined (HAVE_CXSPARSE) || defined (HAVE_UMFPACK)) |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
33 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
34 static inline void |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
35 check_suitesparse_integer_size (void) |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
36 { |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
37 // FIXME: maybe it would be better to make this a configure check and |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
38 // disable suitesparse if it fails? |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
39 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
40 if (sizeof (octave::suitesparse_integer) != sizeof (octave_idx_type)) |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
41 (*current_liboctave_error_handler) |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
42 ("size of suitesparse integer does not match octave_idx_type!"); |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
43 } |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
44 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
45 namespace octave |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
46 { |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
47 suitesparse_integer * |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
48 to_suitesparse_intptr (octave_idx_type *i) |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
49 { |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
50 check_suitesparse_integer_size (); |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
51 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
52 return reinterpret_cast<suitesparse_integer *> (i); |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
53 } |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
54 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
55 const suitesparse_integer * |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
56 to_suitesparse_intptr (const octave_idx_type *i) |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
57 { |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
58 check_suitesparse_integer_size (); |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
59 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
60 return reinterpret_cast<const suitesparse_integer *> (i); |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
61 } |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
62 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
63 octave_idx_type* |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
64 to_octave_idx_type_ptr (suitesparse_integer *i) |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
65 { |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
66 check_suitesparse_integer_size (); |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
67 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
68 return reinterpret_cast<octave_idx_type *> (i); |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
69 } |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
70 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
71 const octave_idx_type* |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
72 to_octave_idx_type_ptr (const suitesparse_integer *i) |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
73 { |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
74 check_suitesparse_integer_size (); |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
75 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
76 return reinterpret_cast<const octave_idx_type *> (i); |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
77 } |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
78 } |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
79 |
209e749363a2
safe cast between SuiteSparse_long and octave_idx_type pointers (bug #50510)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
80 #endif |