annotate libinterp/octave-value/ov-range.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 e3df47a19871
children 83f9f8bda883 2989202f92f8
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: 30437
diff changeset
3 // Copyright (C) 1996-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 ////////////////////////////////////////////////////////////////////////
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
25
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
26 #if defined (HAVE_CONFIG_H)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
27 # include "config.h"
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
28 #endif
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
29
25438
cb1606f78f6b prefer <istream>, <ostream>, or <iosfwd> to <iostream> where possible
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
30 #include <istream>
cb1606f78f6b prefer <istream>, <ostream>, or <iosfwd> to <iostream> where possible
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
31 #include <ostream>
cb1606f78f6b prefer <istream>, <ostream>, or <iosfwd> to <iostream> where possible
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
32 #include <sstream>
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
33
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
34 #include "dNDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
35 #include "fNDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
36 #include "int8NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
37 #include "int16NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
38 #include "int32NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
39 #include "int64NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
40 #include "uint8NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
41 #include "uint16NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
42 #include "uint32NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
43 #include "uint64NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
44
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
45 #include "lo-ieee.h"
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
46 #include "lo-utils.h"
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
47
10605
1834132fb50b allow non-integer ranges as indices conditionally
John W. Eaton <jwe@octave.org>
parents: 10315
diff changeset
48 #include "defun.h"
1834132fb50b allow non-integer ranges as indices conditionally
John W. Eaton <jwe@octave.org>
parents: 10315
diff changeset
49 #include "variables.h"
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents: 21022
diff changeset
50 #include "errwarn.h"
15149
62a35ae7d6a2 use forward decls for mxArray in ov.h and ov-base.h
John W. Eaton <jwe@octave.org>
parents: 15057
diff changeset
51 #include "mxarray.h"
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
52 #include "mx-type-traits.h"
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
53 #include "ops.h"
20940
48b2ad5ee801 maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents: 20893
diff changeset
54 #include "ovl.h"
19863
09ed6f7538dd avoid needing to include hdf5 in public header files (bug #44370, #43180)
John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
parents: 19861
diff changeset
55 #include "oct-hdf5.h"
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
56 #include "ov-range-traits.h"
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
57 #include "ov-range.h"
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
58 #include "ov-re-mat.h"
2410
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
59 #include "ov-scalar.h"
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
60 #include "pr-output.h"
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
61
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
62 #include "byte-swap.h"
8946
e7e928088e90 fix CRLF issues with text-mode reading in windows when loading ascii data
Benjamin Lindner <lindnerb@users.sourceforge.net>
parents: 8920
diff changeset
63 #include "ls-ascii-helper.h"
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
64 #include "ls-hdf5.h"
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
65 #include "ls-utils.h"
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
66
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
67 #if defined (HAVE_HDF5)
10613
e103fb2182ce use internal variable instead of warning state to control whether to allow non-integer ranges as indices
John W. Eaton <jwe@octave.org>
parents: 10609
diff changeset
68
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
69 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
70 octave_hdf5_id ov_range<float>::hdf5_save_type = H5T_NATIVE_FLOAT;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
71
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
72 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
73 octave_hdf5_id ov_range<double>::hdf5_save_type = H5T_NATIVE_DOUBLE;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
74
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
75 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
76 octave_hdf5_id ov_range<octave_int8>::hdf5_save_type = H5T_NATIVE_INT8;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
77
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
78 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
79 octave_hdf5_id ov_range<octave_int16>::hdf5_save_type = H5T_NATIVE_INT16;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
80
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
81 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
82 octave_hdf5_id ov_range<octave_int32>::hdf5_save_type = H5T_NATIVE_INT32;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
83
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
84 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
85 octave_hdf5_id ov_range<octave_int64>::hdf5_save_type = H5T_NATIVE_INT64;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
86
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
87 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
88 octave_hdf5_id ov_range<octave_uint8>::hdf5_save_type = H5T_NATIVE_UINT8;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
89
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
90 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
91 octave_hdf5_id ov_range<octave_uint16>::hdf5_save_type = H5T_NATIVE_UINT16;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
92
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
93 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
94 octave_hdf5_id ov_range<octave_uint32>::hdf5_save_type = H5T_NATIVE_UINT32;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
95
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
96 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
97 octave_hdf5_id ov_range<octave_uint64>::hdf5_save_type = H5T_NATIVE_UINT64;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
98
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
99 #else
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
100
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
101 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
102 octave_hdf5_id ov_range<float>::hdf5_save_type = 0;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
103
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
104 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
105 octave_hdf5_id ov_range<double>::hdf5_save_type = 0;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
106
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
107 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
108 octave_hdf5_id ov_range<octave_int8>::hdf5_save_type = 0;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
109
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
110 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
111 octave_hdf5_id ov_range<octave_int16>::hdf5_save_type = 0;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
112
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
113 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
114 octave_hdf5_id ov_range<octave_int32>::hdf5_save_type = 0;
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
115
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
116 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
117 octave_hdf5_id ov_range<octave_int64>::hdf5_save_type = 0;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
118
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
119 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
120 octave_hdf5_id ov_range<octave_uint8>::hdf5_save_type = 0;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
121
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
122 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
123 octave_hdf5_id ov_range<octave_uint16>::hdf5_save_type = 0;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
124
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
125 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
126 octave_hdf5_id ov_range<octave_uint32>::hdf5_save_type = 0;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
127
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
128 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
129 octave_hdf5_id ov_range<octave_uint64>::hdf5_save_type = 0;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
130
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
131 #endif
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
132
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
133 DEFINE_TEMPLATE_OV_TYPEID_FUNCTIONS_AND_DATA (ov_range<float>,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
134 "float_range", "single");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
135
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
136 DEFINE_TEMPLATE_OV_TYPEID_FUNCTIONS_AND_DATA (ov_range<double>,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
137 "range", "double");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
138
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
139 DEFINE_TEMPLATE_OV_TYPEID_FUNCTIONS_AND_DATA (ov_range<octave_int8>,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
140 "int8_range", "int8");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
141
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
142 DEFINE_TEMPLATE_OV_TYPEID_FUNCTIONS_AND_DATA (ov_range<octave_int16>,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
143 "int16_range", "int16");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
144
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
145 DEFINE_TEMPLATE_OV_TYPEID_FUNCTIONS_AND_DATA (ov_range<octave_int32>,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
146 "int32_range", "int32");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
147
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
148 DEFINE_TEMPLATE_OV_TYPEID_FUNCTIONS_AND_DATA (ov_range<octave_int64>,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
149 "int64_range", "int64");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
150
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
151 DEFINE_TEMPLATE_OV_TYPEID_FUNCTIONS_AND_DATA (ov_range<octave_uint8>,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
152 "uint8_range", "uint8");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
153
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
154 DEFINE_TEMPLATE_OV_TYPEID_FUNCTIONS_AND_DATA (ov_range<octave_uint16>,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
155 "uint16_range", "uint16");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
156
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
157 DEFINE_TEMPLATE_OV_TYPEID_FUNCTIONS_AND_DATA (ov_range<octave_uint32>,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
158 "uint32_range", "uint32");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
159
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
160 DEFINE_TEMPLATE_OV_TYPEID_FUNCTIONS_AND_DATA (ov_range<octave_uint64>,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
161 "uint64_range", "uint64");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
162
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
163 template <typename T>
5759
ce79d238f142 [project @ 2006-04-13 13:04:32 by jwe]
jwe
parents: 5731
diff changeset
164 static octave_base_value *
ce79d238f142 [project @ 2006-04-13 13:04:32 by jwe]
jwe
parents: 5731
diff changeset
165 default_numeric_conversion_function (const octave_base_value& a)
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
166 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
167 typedef typename octave_value_range_traits<T>::matrix_type ov_mx_type;
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
168
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
169 const ov_range<T>& v = dynamic_cast<const ov_range<T>&> (a);
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
170
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
171 return new ov_mx_type (v.raw_array_value ());
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
172 }
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
173
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
174 template <typename T>
8345
c777f3ce02d8 smarter conversion lookup
Jaroslav Hajek <highegg@gmail.com>
parents: 7789
diff changeset
175 octave_base_value::type_conv_info
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
176 ov_range<T>::numeric_conversion_function (void) const
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
177 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
178 typedef typename octave_value_range_traits<T>::matrix_type ov_mx_type;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
179
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
180 return octave_base_value::type_conv_info
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
181 (default_numeric_conversion_function<T>, ov_mx_type::static_type_id ());
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
182 }
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
183
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
184 template <typename T>
5759
ce79d238f142 [project @ 2006-04-13 13:04:32 by jwe]
jwe
parents: 5731
diff changeset
185 octave_base_value *
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
186 ov_range<T>::try_narrowing_conversion (void)
2410
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
187 {
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23450
diff changeset
188 octave_base_value *retval = nullptr;
2410
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
189
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
190 switch (numel ())
2410
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
191 {
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
192 case 1:
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
193 retval = new typename octave_value_range_traits<T>::scalar_type (m_range.elem (0));
2410
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
194 break;
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
195
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
196 case 0:
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
197 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
198 typedef typename octave_value_range_traits<T>::matrix_type ov_mx_type;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
199 typename ov_mx_type::object_type m (dim_vector (1, 0));
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
200 retval = new ov_mx_type (m);
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
201 }
2410
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
202 break;
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
203
8971
967a692ddfe2 fix range arithmetics
Jaroslav Hajek <highegg@gmail.com>
parents: 8946
diff changeset
204 case -2:
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
205 // FIXME: is this case possible now? It would have to be due to
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
206 // conversion from Range to range<double>, but even in that case,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
207 // is the invalid numel value preserved?
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
208 retval = new typename octave_value_range_traits<T>::matrix_type (raw_array_value ());
8971
967a692ddfe2 fix range arithmetics
Jaroslav Hajek <highegg@gmail.com>
parents: 8946
diff changeset
209 break;
967a692ddfe2 fix range arithmetics
Jaroslav Hajek <highegg@gmail.com>
parents: 8946
diff changeset
210
2410
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
211 default:
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
212 break;
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
213 }
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
214
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
215 return retval;
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
216 }
367485171742 [project @ 1996-10-15 16:50:27 by jwe]
jwe
parents: 2376
diff changeset
217
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
218 template <typename T>
2436
a628e881be66 [project @ 1996-10-29 22:08:28 by jwe]
jwe
parents: 2427
diff changeset
219 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
220 ov_range<T>::subsref (const std::string& type,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
221 const std::list<octave_value_list>& idx)
3933
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
222 {
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
223 octave_value retval;
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
224
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
225 switch (type[0])
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
226 {
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
227 case '(':
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
228 retval = do_index_op (idx.front ());
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
229 break;
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
230
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
231 case '{':
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
232 case '.':
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
233 {
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
234 std::string nm = type_name ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
235 error ("%s cannot be indexed with %c", nm.c_str (), type[0]);
3933
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
236 }
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
237 break;
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
238
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
239 default:
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
240 panic_impossible ();
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
241 }
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
242
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
243 return retval.next_subsref (type, idx);
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
244 }
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
245
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
246 template <typename T>
3933
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3523
diff changeset
247 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
248 ov_range<T>::do_index_op (const octave_value_list& idx,
30390
a61e1a0f6024 maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30006
diff changeset
249 bool resize_ok)
2436
a628e881be66 [project @ 1996-10-29 22:08:28 by jwe]
jwe
parents: 2427
diff changeset
250 {
9986
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
251 if (idx.length () == 1 && ! resize_ok)
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
252 {
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
253 octave_value retval;
2436
a628e881be66 [project @ 1996-10-29 22:08:28 by jwe]
jwe
parents: 2427
diff changeset
254
9986
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
255 // The range can handle a single subscript.
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20228
diff changeset
256
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20228
diff changeset
257 try
9986
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
258 {
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29394
diff changeset
259 octave::idx_vector i = idx(0).index_vector ();
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20228
diff changeset
260
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
261 if (i.is_scalar () && i(0) < numel ())
28634
e057dbd3c108 use m_ prefix for octave_range member variables
John W. Eaton <jwe@octave.org>
parents: 28631
diff changeset
262 retval = m_range.elem (i(0));
20555
f90c8372b7ba eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
263 else
28634
e057dbd3c108 use m_ prefix for octave_range member variables
John W. Eaton <jwe@octave.org>
parents: 28631
diff changeset
264 retval = m_range.index (i);
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20228
diff changeset
265 }
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 28646
diff changeset
266 catch (octave::index_exception& ie)
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20228
diff changeset
267 {
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20228
diff changeset
268 // More info may be added later before displaying error.
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20228
diff changeset
269
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 28646
diff changeset
270 ie.set_pos_if_unset (1, 1);
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20228
diff changeset
271 throw;
9986
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
272 }
2436
a628e881be66 [project @ 1996-10-29 22:08:28 by jwe]
jwe
parents: 2427
diff changeset
273
9986
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
274 return retval;
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
275 }
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
276 else
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
277 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
278 octave_value tmp (new typename octave_value_range_traits<T>::matrix_type (raw_array_value ()));
2436
a628e881be66 [project @ 1996-10-29 22:08:28 by jwe]
jwe
parents: 2427
diff changeset
279
28631
70cdf8de553d move non-member octave_value operator functions to octave namespace
John W. Eaton <jwe@octave.org>
parents: 28628
diff changeset
280 return tmp.index_op (idx, resize_ok);
9986
672e1b49e01e optimize indexing of ranges by single subscripts
Jaroslav Hajek <highegg@gmail.com>
parents: 9892
diff changeset
281 }
2436
a628e881be66 [project @ 1996-10-29 22:08:28 by jwe]
jwe
parents: 2427
diff changeset
282 }
a628e881be66 [project @ 1996-10-29 22:08:28 by jwe]
jwe
parents: 2427
diff changeset
283
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
284 template <typename T>
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29394
diff changeset
285 octave::idx_vector
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
286 ov_range<T>::index_vector (bool require_integers) const
10605
1834132fb50b allow non-integer ranges as indices conditionally
John W. Eaton <jwe@octave.org>
parents: 10315
diff changeset
287 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
288 octave_value tmp (raw_array_value ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
289 return tmp.index_vector (require_integers);
10605
1834132fb50b allow non-integer ranges as indices conditionally
John W. Eaton <jwe@octave.org>
parents: 10315
diff changeset
290 }
1834132fb50b allow non-integer ranges as indices conditionally
John W. Eaton <jwe@octave.org>
parents: 10315
diff changeset
291
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
292 template <typename T>
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
293 double
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
294 ov_range<T>::double_value (bool) const
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
295 {
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
296 octave_idx_type nel = numel ();
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
297
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
298 if (nel == 0)
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
299 err_invalid_conversion ("range", "real scalar");
4455
abbf63293766 [project @ 2003-07-11 01:01:16 by jwe]
jwe
parents: 4452
diff changeset
300
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
301 warn_implicit_conversion ("Octave:array-to-scalar",
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
302 "range", "real scalar");
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
303
28634
e057dbd3c108 use m_ prefix for octave_range member variables
John W. Eaton <jwe@octave.org>
parents: 28631
diff changeset
304 return m_range.base ();
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
305 }
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
306
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
307 template <typename T>
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
308 float
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
309 ov_range<T>::float_value (bool) const
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
310 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
311 octave_idx_type nel = numel ();
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
312
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
313 if (nel == 0)
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
314 err_invalid_conversion ("range", "real scalar");
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
315
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
316 warn_implicit_conversion ("Octave:array-to-scalar",
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
317 "range", "real scalar");
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
318
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
319 return m_range.base ();
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
320 }
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
321
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
322 template <typename T>
9146
a48c500e48e1 support range->string conversions
Jaroslav Hajek <highegg@gmail.com>
parents: 8971
diff changeset
323 charNDArray
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
324 ov_range<T>::char_array_value (bool) const
9146
a48c500e48e1 support range->string conversions
Jaroslav Hajek <highegg@gmail.com>
parents: 8971
diff changeset
325 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
326 const Array<T> matrix = raw_array_value ();
9146
a48c500e48e1 support range->string conversions
Jaroslav Hajek <highegg@gmail.com>
parents: 8971
diff changeset
327 charNDArray retval (dims ());
a48c500e48e1 support range->string conversions
Jaroslav Hajek <highegg@gmail.com>
parents: 8971
diff changeset
328
a48c500e48e1 support range->string conversions
Jaroslav Hajek <highegg@gmail.com>
parents: 8971
diff changeset
329 octave_idx_type nel = numel ();
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
330
9146
a48c500e48e1 support range->string conversions
Jaroslav Hajek <highegg@gmail.com>
parents: 8971
diff changeset
331 for (octave_idx_type i = 0; i < nel; i++)
25688
b2917b7858ba maint: Use Octave convention for spacing of C++ cast statements.
Rik <rik@octave.org>
parents: 25438
diff changeset
332 retval.elem (i) = static_cast<char> (matrix.elem (i));
9146
a48c500e48e1 support range->string conversions
Jaroslav Hajek <highegg@gmail.com>
parents: 8971
diff changeset
333
a48c500e48e1 support range->string conversions
Jaroslav Hajek <highegg@gmail.com>
parents: 8971
diff changeset
334 return retval;
a48c500e48e1 support range->string conversions
Jaroslav Hajek <highegg@gmail.com>
parents: 8971
diff changeset
335 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
336
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
337 template <typename T>
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
338 Complex
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
339 ov_range<T>::complex_value (bool) const
14557
e8e86ae3abbc make diag (x, m, n) return a proper diagonal matrix object (bug #36099)
John W. Eaton <jwe@octave.org>
parents: 14469
diff changeset
340 {
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
341 octave_idx_type nel = numel ();
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
342
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
343 if (nel == 0)
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
344 err_invalid_conversion ("range", "complex scalar");
4455
abbf63293766 [project @ 2003-07-11 01:01:16 by jwe]
jwe
parents: 4452
diff changeset
345
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
346 warn_implicit_conversion ("Octave:array-to-scalar",
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
347 "range", "complex scalar");
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
348
28634
e057dbd3c108 use m_ prefix for octave_range member variables
John W. Eaton <jwe@octave.org>
parents: 28631
diff changeset
349 return Complex (m_range.base (), 0);
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
350 }
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
351
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
352 template <typename T>
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
353 FloatComplex
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
354 ov_range<T>::float_complex_value (bool) const
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
355 {
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
356 float tmp = lo_ieee_float_nan_value ();
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
357
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
358 FloatComplex retval (tmp, tmp);
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
359
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
360 octave_idx_type nel = numel ();
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
361
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
362 if (nel == 0)
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
363 err_invalid_conversion ("range", "complex scalar");
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
364
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
365 warn_implicit_conversion ("Octave:array-to-scalar",
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
366 "range", "complex scalar");
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21102
diff changeset
367
28634
e057dbd3c108 use m_ prefix for octave_range member variables
John W. Eaton <jwe@octave.org>
parents: 28631
diff changeset
368 retval = m_range.base ();
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
369
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
370 return retval;
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
371 }
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
372
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
373 template <typename T>
10613
e103fb2182ce use internal variable instead of warning state to control whether to allow non-integer ranges as indices
John W. Eaton <jwe@octave.org>
parents: 10609
diff changeset
374 boolNDArray
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
375 ov_range<T>::bool_array_value (bool warn) const
10613
e103fb2182ce use internal variable instead of warning state to control whether to allow non-integer ranges as indices
John W. Eaton <jwe@octave.org>
parents: 10609
diff changeset
376 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
377 Array<T> matrix = raw_array_value ();
10613
e103fb2182ce use internal variable instead of warning state to control whether to allow non-integer ranges as indices
John W. Eaton <jwe@octave.org>
parents: 10609
diff changeset
378
29937
da7210e30f3e move some utility functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29569
diff changeset
379 if (warn && ! matrix.test_all (octave::is_one_or_zero<T>))
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents: 21022
diff changeset
380 warn_logical_conversion ();
10613
e103fb2182ce use internal variable instead of warning state to control whether to allow non-integer ranges as indices
John W. Eaton <jwe@octave.org>
parents: 10609
diff changeset
381
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
382 return boolNDArray (matrix);
10613
e103fb2182ce use internal variable instead of warning state to control whether to allow non-integer ranges as indices
John W. Eaton <jwe@octave.org>
parents: 10609
diff changeset
383 }
e103fb2182ce use internal variable instead of warning state to control whether to allow non-integer ranges as indices
John W. Eaton <jwe@octave.org>
parents: 10609
diff changeset
384
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
385 template <typename T>
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
386 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
387 ov_range<T>::resize (const dim_vector& dv, bool fill) const
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
388 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
389 Array<T> retval = raw_array_value ();
5731
c7d5a534afa5 [project @ 2006-04-03 19:33:26 by jwe]
jwe
parents: 5307
diff changeset
390 if (fill)
14616
13cc11418393 improve handling of default resize fill value for arrays
John W. Eaton <jwe@octave.org>
parents: 14557
diff changeset
391 retval.resize (dv, 0);
5731
c7d5a534afa5 [project @ 2006-04-03 19:33:26 by jwe]
jwe
parents: 5307
diff changeset
392 else
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
393 retval.resize (dv);
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
394 return retval;
5731
c7d5a534afa5 [project @ 2006-04-03 19:33:26 by jwe]
jwe
parents: 5307
diff changeset
395 }
c7d5a534afa5 [project @ 2006-04-03 19:33:26 by jwe]
jwe
parents: 5307
diff changeset
396
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
397 template <typename T>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
398 octave::range<float>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
399 ov_range<T>::float_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
400 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
401 err_wrong_type_arg ("ov_range<T>::float_range_value ()", type_name ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
402 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
403
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
404 template <typename T>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
405 octave::range<double>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
406 ov_range<T>::range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
407 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
408 err_wrong_type_arg ("ov_range<T>::range_value()", type_name ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
409 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
410
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
411 template <typename T>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
412 octave::range<octave_int8>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
413 ov_range<T>::int8_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
414 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
415 err_wrong_type_arg ("ov_range<T>::int8_range_value ()", type_name ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
416 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
417
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
418 template <typename T>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
419 octave::range<octave_int16>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
420 ov_range<T>::int16_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
421 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
422 err_wrong_type_arg ("ov_range<T>::int16_range_value ()", type_name ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
423 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
424
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
425 template <typename T>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
426 octave::range<octave_int32>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
427 ov_range<T>::int32_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
428 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
429 err_wrong_type_arg ("ov_range<T>::int32_range_value ()", type_name ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
430 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
431
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
432 template <typename T>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
433 octave::range<octave_int64>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
434 ov_range<T>::int64_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
435 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
436 err_wrong_type_arg ("ov_range<T>::int64_range_value ()", type_name ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
437 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
438
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
439 template <typename T>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
440 octave::range<octave_uint8>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
441 ov_range<T>::uint8_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
442 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
443 err_wrong_type_arg ("ov_range<T>::uint8_range_value ()", type_name ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
444 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
445
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
446 template <typename T>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
447 octave::range<octave_uint16>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
448 ov_range<T>::uint16_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
449 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
450 err_wrong_type_arg ("ov_range<T>::uint16_range_value ()", type_name ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
451 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
452
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
453 template <typename T>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
454 octave::range<octave_uint32>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
455 ov_range<T>::uint32_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
456 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
457 err_wrong_type_arg ("ov_range<T>::uint32_range_value ()", type_name ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
458 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
459
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
460 template <typename T>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
461 octave::range<octave_uint64>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
462 ov_range<T>::uint64_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
463 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
464 err_wrong_type_arg ("ov_range<T>::uint64_range_value ()", type_name ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
465 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
466
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
467 template <typename T>
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
468 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
469 ov_range<T>::convert_to_str_internal (bool pad, bool force, char type) const
2449
31d5588dbb61 [project @ 1996-10-30 22:58:44 by jwe]
jwe
parents: 2436
diff changeset
470 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
471 octave_value tmp (raw_array_value ());
5279
bd32f770c09a [project @ 2005-04-12 21:55:31 by jwe]
jwe
parents: 5275
diff changeset
472 return tmp.convert_to_str (pad, force, type);
2449
31d5588dbb61 [project @ 1996-10-30 22:58:44 by jwe]
jwe
parents: 2436
diff changeset
473 }
31d5588dbb61 [project @ 1996-10-30 22:58:44 by jwe]
jwe
parents: 2436
diff changeset
474
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
475 // FIXME: could most of these fucntions preserve range type now?
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
476
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
477 template <typename T>
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
478 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
479 ov_range<T>::as_double (void) const
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
480 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
481 return NDArray (raw_array_value ());
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
482 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
483
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
484 template <typename T>
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
485 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
486 ov_range<T>::as_single (void) const
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
487 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
488 return FloatMatrix (raw_array_value ());
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
489 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
490
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
491 template <typename T>
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
492 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
493 ov_range<T>::as_int8 (void) const
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
494 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
495 return int8NDArray (raw_array_value ());
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
496 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
497
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
498 template <typename T>
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
499 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
500 ov_range<T>::as_int16 (void) const
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
501 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
502 return int16NDArray (raw_array_value ());
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
503 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
504
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
505 template <typename T>
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
506 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
507 ov_range<T>::as_int32 (void) const
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
508 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
509 return int32NDArray (raw_array_value ());
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
510 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
511
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
512 template <typename T>
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
513 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
514 ov_range<T>::as_int64 (void) const
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
515 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
516 return int64NDArray (raw_array_value ());
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
517 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
518
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
519 template <typename T>
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
520 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
521 ov_range<T>::as_uint8 (void) const
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
522 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
523 return uint8NDArray (raw_array_value ());
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
524 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
525
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
526 template <typename T>
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
527 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
528 ov_range<T>::as_uint16 (void) const
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
529 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
530 return uint16NDArray (raw_array_value ());
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
531 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
532
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
533 template <typename T>
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
534 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
535 ov_range<T>::as_uint32 (void) const
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
536 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
537 return uint32NDArray (raw_array_value ());
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
538 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
539
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
540 template <typename T>
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
541 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
542 ov_range<T>::as_uint64 (void) const
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
543 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
544 return uint64NDArray (raw_array_value ());
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
545 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
546
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
547 template <typename T>
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
548 void
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
549 ov_range<T>::print (std::ostream& os, bool pr_as_read_syntax)
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
550 {
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
551 print_raw (os, pr_as_read_syntax);
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
552 newline (os);
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
553 }
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
554
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
555 template <typename T>
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
556 void
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
557 ov_range<T>::print_raw (std::ostream& os, bool pr_as_read_syntax) const
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
558 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
559 // FIXME: this is a potential waste of memory.
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
560
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
561 typedef typename octave_value_range_traits<T>::matrix_type ov_mx_type;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
562 typename ov_mx_type::object_type tmp (raw_array_value ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
563
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
564 octave_print_internal (os, tmp, pr_as_read_syntax,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
565 current_print_indent_level ());
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
566 }
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
567
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
568 template <typename T>
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
569 bool
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
570 ov_range<T>::print_name_tag (std::ostream& os, const std::string& name) const
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
571 {
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
572 bool retval = false;
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
573
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
574 octave_idx_type n = numel ();
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
575
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
576 indent (os);
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
577
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
578 if (n == 0 || n == 1)
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
579 os << name << " = ";
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
580 else
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
581 {
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
582 os << name << " =";
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
583 newline (os);
13112
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12863
diff changeset
584 if (! Vcompact_format)
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12863
diff changeset
585 newline (os);
969ed305dde5 Remove all blank lines with "format compact"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12863
diff changeset
586
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
587 retval = true;
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
588 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
589
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
590 return retval;
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
591 }
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
592
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
593 template <typename T>
17870
1d2e709bbbda rework short_disp methods
John W. Eaton <jwe@octave.org>
parents: 17787
diff changeset
594 void
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
595 ov_range<T>::short_disp (std::ostream& os) const
16468
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
596 {
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
597 octave_idx_type len = numel ();
16468
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
598
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
599 if (len == 0)
17870
1d2e709bbbda rework short_disp methods
John W. Eaton <jwe@octave.org>
parents: 17787
diff changeset
600 os << "[]";
16468
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
601 else
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
602 {
28634
e057dbd3c108 use m_ prefix for octave_range member variables
John W. Eaton <jwe@octave.org>
parents: 28631
diff changeset
603 os << m_range.base () << ':';
16468
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
604
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
605 if (len > 1)
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
606 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
607 if (m_range.increment () != T (1))
28636
a3db48e66ef8 use Range::increment instead of Range::inc
John W. Eaton <jwe@octave.org>
parents: 28634
diff changeset
608 os << m_range.increment () << ':';
16468
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
609
28634
e057dbd3c108 use m_ prefix for octave_range member variables
John W. Eaton <jwe@octave.org>
parents: 28631
diff changeset
610 os << m_range.limit ();
16468
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
611 }
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
612 }
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
613 }
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
614
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
615 // Skip white space and comments on stream IS.
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
616
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
617 static void
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
618 skip_comments (std::istream& is)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
619 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
620 char c = '\0';
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
621 while (is.get (c))
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
622 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
623 if (c == ' ' || c == '\t' || c == '\n')
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
624 ; // Skip whitespace on way to beginning of next line.
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
625 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
626 break;
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
627 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
628
30006
75dff8f2de2e move some load-save utilities to octave namespace
John W. Eaton <jwe@octave.org>
parents: 29937
diff changeset
629 octave::skip_until_newline (is, false);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
630 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
631
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
632 template <typename T>
24745
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
633 float_display_format
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
634 ov_range<T>::get_edit_display_format (void) const
24745
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
635 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
636 return make_format (m_range);
24745
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
637 }
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
638
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
639 template <typename T>
24745
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
640 std::string
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
641 ov_range<T>::edit_display (const float_display_format& fmt,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
642 octave_idx_type, octave_idx_type j) const
24745
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
643 {
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
644 std::ostringstream buf;
28634
e057dbd3c108 use m_ prefix for octave_range member variables
John W. Eaton <jwe@octave.org>
parents: 28631
diff changeset
645 octave_print_internal (buf, fmt, m_range.elem (j));
24745
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
646 return buf.str ();
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
647 }
d2467914ce33 enable (or improve) display for more types in the variable editor
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
648
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
649 template <typename T>
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
650 bool
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
651 xsave_ascii (std::ostream& os, const octave::range<T>& r,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
652 const bool with_reverse)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
653 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
654 T base = r.base ();
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
655 T limit = r.limit ();
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
656 T inc = r.increment ();
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
657 bool rev = r.reverse ();
20228
00cf2847355d Deprecate Array::nelem() and Range::nelem() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
658 octave_idx_type len = r.numel ();
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
659
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
660 if (inc != T (0))
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
661 os << "# base, limit, increment";
10735
d899b2ee6a37 fix saving/loading of constant ranges (bug #30289)
Jaroslav Hajek <highegg@gmail.com>
parents: 10711
diff changeset
662 else
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
663 os << "# base, length, increment";
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
664
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
665 if (with_reverse)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
666 os << ", reverse\n";
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
667 else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
668 os << "\n";
10735
d899b2ee6a37 fix saving/loading of constant ranges (bug #30289)
Jaroslav Hajek <highegg@gmail.com>
parents: 10711
diff changeset
669
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
670 octave::write_value<T> (os, base);
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23795
diff changeset
671 os << ' ';
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
672 if (inc != T (0))
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
673 octave::write_value<T> (os, limit);
10735
d899b2ee6a37 fix saving/loading of constant ranges (bug #30289)
Jaroslav Hajek <highegg@gmail.com>
parents: 10711
diff changeset
674 else
d899b2ee6a37 fix saving/loading of constant ranges (bug #30289)
Jaroslav Hajek <highegg@gmail.com>
parents: 10711
diff changeset
675 os << len;
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23795
diff changeset
676 os << ' ';
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
677 octave::write_value<T> (os, inc);
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
678 if (with_reverse)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
679 os << ' ' << rev;
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
680 os << "\n";
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
681
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
682 return true;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
683 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
684
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
685 template <typename T>
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
686 bool
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
687 ov_range<T>::save_ascii (std::ostream& os)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
688 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
689 return xsave_ascii (os, m_range, false);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
690 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
691
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
692 // specialize for saving with "reverse" flag
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
693
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
694 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
695 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
696 ov_range<octave_uint8>::save_ascii (std::ostream& os)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
697 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
698 return xsave_ascii (os, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
699 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
700
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
701 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
702 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
703 ov_range<octave_uint16>::save_ascii (std::ostream& os)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
704 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
705 return xsave_ascii (os, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
706 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
707
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
708 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
709 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
710 ov_range<octave_uint32>::save_ascii (std::ostream& os)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
711 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
712 return xsave_ascii (os, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
713 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
714
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
715 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
716 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
717 ov_range<octave_uint64>::save_ascii (std::ostream& os)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
718 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
719 return xsave_ascii (os, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
720 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
721
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
722 template <typename T>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
723 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
724 xload_ascii (std::istream& is, octave::range<T>& r, const bool with_reverse)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
725 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
726 // # base, limit, range comment added by save ().
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
727 skip_comments (is);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
728
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
729 T base, limit, inc;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
730 bool rev = false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
731 is >> base >> limit >> inc;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
732
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
733 if (with_reverse)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
734 is >> rev;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
735
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
736 if (! is)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
737 error ("load: failed to load range constant");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
738
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
739 if (inc != T (0))
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
740 r = octave::range<T> (base, inc, limit, rev);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
741 else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
742 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
743 octave_idx_type numel = static_cast<octave_idx_type> (limit);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
744 r = octave::range<T>::make_constant (base, numel, rev);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
745 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
746
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
747 return true;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
748 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
749
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
750 template <typename T>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
751 bool
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
752 ov_range<T>::load_ascii (std::istream& is)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
753 {
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
754 return xload_ascii (is, m_range, false);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
755 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
756
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
757 // specialize for loading with "reverse" flag
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
758
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
759 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
760 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
761 ov_range<octave_uint8>::load_ascii (std::istream& is)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
762 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
763 return xload_ascii (is, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
764 }
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
765
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
766 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
767 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
768 ov_range<octave_uint16>::load_ascii (std::istream& is)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
769 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
770 return xload_ascii (is, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
771 }
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
772
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
773 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
774 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
775 ov_range<octave_uint32>::load_ascii (std::istream& is)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
776 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
777 return xload_ascii (is, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
778 }
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
779
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
780 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
781 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
782 ov_range<octave_uint64>::load_ascii (std::istream& is)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
783 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
784 return xload_ascii (is, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
785 }
10735
d899b2ee6a37 fix saving/loading of constant ranges (bug #30289)
Jaroslav Hajek <highegg@gmail.com>
parents: 10711
diff changeset
786
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
787 /*
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
788 %!test
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
789 %! a = b = 1:4;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
790 %! sv_file = [tempname(), ".sav"];
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
791 %! unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
792 %! save (sv_file, "a", "-text");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
793 %! clear a;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
794 %! load (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
795 %! assert (a, b);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
796 %! unwind_protect_cleanup
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
797 %! unlink (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
798 %! end_unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
799
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
800 %!test
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
801 %! a = b = uint8(5):-1:0;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
802 %! sv_file = [tempname(), ".sav"];
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
803 %! unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
804 %! save (sv_file, "a", "-text");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
805 %! clear a;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
806 %! load (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
807 %! assert (a, b);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
808 %! unwind_protect_cleanup
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
809 %! unlink (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
810 %! end_unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
811 */
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
812
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
813 template <typename T>
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
814 bool
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
815 xsave_binary (std::ostream& os, bool /* save_as_floats */,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
816 const octave::range<T>& r, const bool with_reverse)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
817 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
818 // FIXME: Not always double!
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
819
5760
8d7162924bd3 [project @ 2006-04-14 04:01:37 by jwe]
jwe
parents: 5759
diff changeset
820 char tmp = LS_DOUBLE;
8d7162924bd3 [project @ 2006-04-14 04:01:37 by jwe]
jwe
parents: 5759
diff changeset
821 os.write (reinterpret_cast<char *> (&tmp), 1);
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
822 T bas = r.base ();
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
823 T lim = r.limit ();
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
824 T inc = r.increment ();
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
825 if (inc == T (0))
20228
00cf2847355d Deprecate Array::nelem() and Range::nelem() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
826 lim = r.numel ();
10735
d899b2ee6a37 fix saving/loading of constant ranges (bug #30289)
Jaroslav Hajek <highegg@gmail.com>
parents: 10711
diff changeset
827
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
828 os.write (reinterpret_cast<char *> (&bas), sizeof (T));
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
829 os.write (reinterpret_cast<char *> (&lim), sizeof (T));
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
830 os.write (reinterpret_cast<char *> (&inc), sizeof (T));
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
831 if (with_reverse)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
832 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
833 bool rev = r.reverse ();
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
834 os.write (reinterpret_cast<char *> (&rev), sizeof (bool));
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
835 }
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
836
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
837 return true;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
838 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
839
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
840 template <typename T>
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
841 bool
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
842 ov_range<T>::save_binary (std::ostream& os, bool save_as_floats)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
843 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
844 return xsave_binary (os, save_as_floats, m_range, false);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
845 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
846
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
847 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
848 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
849 ov_range<octave_uint8>::save_binary (std::ostream& os, bool save_as_floats)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
850 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
851 return xsave_binary (os, save_as_floats, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
852 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
853
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
854 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
855 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
856 ov_range<octave_uint16>::save_binary (std::ostream& os, bool save_as_floats)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
857 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
858 return xsave_binary (os, save_as_floats, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
859 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
860
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
861 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
862 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
863 ov_range<octave_uint32>::save_binary (std::ostream& os, bool save_as_floats)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
864 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
865 return xsave_binary (os, save_as_floats, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
866 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
867
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
868 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
869 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
870 ov_range<octave_uint64>::save_binary (std::ostream& os, bool save_as_floats)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
871 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
872 return xsave_binary (os, save_as_floats, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
873 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
874
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
875 template <typename T>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
876 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
877 xload_binary (std::istream& is, bool swap,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
878 octave::mach_info::float_format /* fmt */,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
879 octave::range<T>& r, const bool with_reverse)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
880 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
881 // FIXME: Not always double!
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
882
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
883 char tmp;
5760
8d7162924bd3 [project @ 2006-04-14 04:01:37 by jwe]
jwe
parents: 5759
diff changeset
884 if (! is.read (reinterpret_cast<char *> (&tmp), 1))
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
885 return false;
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
886 T bas, lim, inc;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
887 if (! is.read (reinterpret_cast<char *> (&bas), sizeof (T)))
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
888 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
889 if (swap)
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
890 swap_bytes<sizeof (T)> (&bas);
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
891 if (! is.read (reinterpret_cast<char *> (&lim), sizeof (T)))
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
892 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
893 if (swap)
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
894 swap_bytes<sizeof (T)> (&lim);
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
895 if (! is.read (reinterpret_cast<char *> (&inc), sizeof (T)))
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
896 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
897 if (swap)
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
898 swap_bytes<sizeof (T)> (&inc);
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
899 bool rev = false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
900 if (with_reverse)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
901 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
902 if (! is.read (reinterpret_cast<char *> (&rev), sizeof (bool)))
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
903 return false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
904 if (swap)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
905 swap_bytes<sizeof (bool)> (&rev);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
906 }
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
907 if (inc != T (0))
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
908 r = octave::range<T> (bas, inc, lim, rev);
10735
d899b2ee6a37 fix saving/loading of constant ranges (bug #30289)
Jaroslav Hajek <highegg@gmail.com>
parents: 10711
diff changeset
909 else
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
910 {
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
911 octave_idx_type numel = static_cast<octave_idx_type> (lim);
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
912 r = octave::range<T>::make_constant (bas, numel, rev);
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
913 }
10735
d899b2ee6a37 fix saving/loading of constant ranges (bug #30289)
Jaroslav Hajek <highegg@gmail.com>
parents: 10711
diff changeset
914
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
915 return true;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
916 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
917
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
918 template <typename T>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
919 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
920 ov_range<T>::load_binary (std::istream& is, bool swap,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
921 octave::mach_info::float_format fmt)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
922 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
923 return xload_binary (is, swap, fmt, m_range, false);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
924 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
925
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
926 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
927 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
928 ov_range<octave_uint8>::load_binary (std::istream& is, bool swap,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
929 octave::mach_info::float_format fmt)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
930 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
931 return xload_binary (is, swap, fmt, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
932 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
933
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
934 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
935 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
936 ov_range<octave_uint16>::load_binary (std::istream& is, bool swap,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
937 octave::mach_info::float_format fmt)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
938 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
939 return xload_binary (is, swap, fmt, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
940 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
941
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
942 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
943 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
944 ov_range<octave_uint32>::load_binary (std::istream& is, bool swap,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
945 octave::mach_info::float_format fmt)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
946 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
947 return xload_binary (is, swap, fmt, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
948 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
949
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
950 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
951 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
952 ov_range<octave_uint64>::load_binary (std::istream& is, bool swap,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
953 octave::mach_info::float_format fmt)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
954 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
955 return xload_binary (is, swap, fmt, m_range, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
956 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
957
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
958 /*
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
959 %!test
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
960 %! a = b = 1:4;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
961 %! sv_file = [tempname(), ".dat"];
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
962 %! unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
963 %! save (sv_file, "a", "-binary");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
964 %! clear a;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
965 %! load (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
966 %! assert (a, b);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
967 %! unwind_protect_cleanup
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
968 %! unlink (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
969 %! end_unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
970
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
971 %!test
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
972 %! a = b = uint8(5):-1:0;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
973 %! sv_file = [tempname(), ".dat"];
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
974 %! unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
975 %! save (sv_file, "a", "-binary");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
976 %! clear a;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
977 %! load (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
978 %! assert (a, b);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
979 %! unwind_protect_cleanup
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
980 %! unlink (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
981 %! end_unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
982 */
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
983
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
984 #if defined (HAVE_HDF5)
4944
44046bbaa52c [project @ 2004-08-31 05:30:46 by jwe]
jwe
parents: 4837
diff changeset
985
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
986 // The following subroutines creates an HDF5 representation of the way
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
987 // we will store Octave range types (triplets of floating-point numbers).
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
988 // NUM_TYPE is the HDF5 numeric type to use for storage (e.g.
21751
b571fc85953f maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents: 21739
diff changeset
989 // H5T_NATIVE_DOUBLE to save as 'double'). Note that any necessary
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
990 // conversions are handled automatically by HDF5.
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
991
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
992 template <typename T>
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
993 static hid_t
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
994 hdf5_make_range_type (hid_t num_type)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
995 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
996 hid_t type_id = H5Tcreate (H5T_COMPOUND, sizeof (T) * 3);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
997
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
998 H5Tinsert (type_id, "base", 0 * sizeof (T), num_type);
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
999 H5Tinsert (type_id, "limit", 1 * sizeof (T), num_type);
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1000 H5Tinsert (type_id, "increment", 2 * sizeof (T), num_type);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1001
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1002 return type_id;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1003 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1004
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1005 template <typename T>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1006 static hid_t
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1007 hdf5_make_range_rev_type (hid_t num_type)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1008 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1009 hid_t type_id = H5Tcreate (H5T_COMPOUND, sizeof (T) * 4);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1010
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1011 H5Tinsert (type_id, "base", 0 * sizeof (T), num_type);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1012 H5Tinsert (type_id, "limit", 1 * sizeof (T), num_type);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1013 H5Tinsert (type_id, "increment", 2 * sizeof (T), num_type);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1014 // FIXME: Storing "reverse" with the same width is inefficient.
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1015 H5Tinsert (type_id, "reverse", 3 * sizeof (T), num_type);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1016
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1017 return type_id;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1018 }
19863
09ed6f7538dd avoid needing to include hdf5 in public header files (bug #44370, #43180)
John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
parents: 19861
diff changeset
1019
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1020 template <typename T>
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1021 bool
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1022 xsave_hdf5 (octave_hdf5_id loc_id, const char *name,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1023 bool /* save_as_floats */, const octave::range<T>& r,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1024 const octave_hdf5_id h5_save_type, const bool with_reverse)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1025 {
19863
09ed6f7538dd avoid needing to include hdf5 in public header files (bug #44370, #43180)
John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
parents: 19861
diff changeset
1026 bool retval = false;
09ed6f7538dd avoid needing to include hdf5 in public header files (bug #44370, #43180)
John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
parents: 19861
diff changeset
1027
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1028 hsize_t dimens[3] = {0};
18100
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17870
diff changeset
1029 hid_t space_hid, type_hid, data_hid;
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17870
diff changeset
1030 space_hid = type_hid = data_hid = -1;
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1031
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23577
diff changeset
1032 space_hid = H5Screate_simple (0, dimens, nullptr);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1033 if (space_hid < 0) return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1034
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1035 type_hid = with_reverse
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1036 ? hdf5_make_range_rev_type<T> (h5_save_type)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1037 : hdf5_make_range_type<T> (h5_save_type);
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
1038 if (type_hid < 0)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1039 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1040 H5Sclose (space_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1041 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1042 }
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1043 # if defined (HAVE_HDF5_18)
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
1044 data_hid = H5Dcreate (loc_id, name, type_hid, space_hid,
21022
ebc439187d29 avoid old-style cast warnings from HDF5 macros used in C++ sources
John W. Eaton <jwe@octave.org>
parents: 20988
diff changeset
1045 octave_H5P_DEFAULT, octave_H5P_DEFAULT, octave_H5P_DEFAULT);
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1046 # else
21022
ebc439187d29 avoid old-style cast warnings from HDF5 macros used in C++ sources
John W. Eaton <jwe@octave.org>
parents: 20988
diff changeset
1047 data_hid = H5Dcreate (loc_id, name, type_hid, space_hid, octave_H5P_DEFAULT);
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1048 # endif
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
1049 if (data_hid < 0)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1050 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1051 H5Sclose (space_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1052 H5Tclose (type_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1053 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1054 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
1055
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1056 T range_vals[4];
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1057 range_vals[0] = r.base ();
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1058 if (r.increment () != T (0))
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1059 range_vals[1] = r.limit ();
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1060 else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1061 range_vals[1] = r.numel ();
28636
a3db48e66ef8 use Range::increment instead of Range::inc
John W. Eaton <jwe@octave.org>
parents: 28634
diff changeset
1062 range_vals[2] = r.increment ();
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1063 range_vals[3] = r.reverse ();
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1064
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22327
diff changeset
1065 if (H5Dwrite (data_hid, type_hid, octave_H5S_ALL, octave_H5S_ALL,
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22327
diff changeset
1066 octave_H5P_DEFAULT, range_vals)
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22327
diff changeset
1067 >= 0)
11176
2271261f088a Address precision issue in ranges saved to HDF5 files
David Bateman <dbateman@free.fr>
parents: 11129
diff changeset
1068 {
20228
00cf2847355d Deprecate Array::nelem() and Range::nelem() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1069 octave_idx_type nel = r.numel ();
11176
2271261f088a Address precision issue in ranges saved to HDF5 files
David Bateman <dbateman@free.fr>
parents: 11129
diff changeset
1070 retval = hdf5_add_scalar_attr (data_hid, H5T_NATIVE_IDX,
2271261f088a Address precision issue in ranges saved to HDF5 files
David Bateman <dbateman@free.fr>
parents: 11129
diff changeset
1071 "OCTAVE_RANGE_NELEM", &nel) >= 0;
2271261f088a Address precision issue in ranges saved to HDF5 files
David Bateman <dbateman@free.fr>
parents: 11129
diff changeset
1072 }
2271261f088a Address precision issue in ranges saved to HDF5 files
David Bateman <dbateman@free.fr>
parents: 11129
diff changeset
1073 else
2271261f088a Address precision issue in ranges saved to HDF5 files
David Bateman <dbateman@free.fr>
parents: 11129
diff changeset
1074 retval = false;
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1075
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1076 H5Dclose (data_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1077 H5Tclose (type_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1078 H5Sclose (space_hid);
4837
81f78a2ff8a6 [project @ 2004-03-12 19:13:01 by jwe]
jwe
parents: 4815
diff changeset
1079
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1080 return retval;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1081 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1082
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1083 #endif
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1084
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1085 template <typename T>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1086 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1087 ov_range<T>::save_hdf5 (octave_hdf5_id loc_id, const char *name,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1088 bool save_as_floats)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1089 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1090 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1091 return xsave_hdf5 (loc_id, name, save_as_floats, m_range, hdf5_save_type,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1092 false);
19863
09ed6f7538dd avoid needing to include hdf5 in public header files (bug #44370, #43180)
John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
parents: 19861
diff changeset
1093 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21647
diff changeset
1094 octave_unused_parameter (loc_id);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21647
diff changeset
1095 octave_unused_parameter (name);
30437
e3df47a19871 ov-range.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents: 30416
diff changeset
1096 octave_unused_parameter (save_as_floats);
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21647
diff changeset
1097
21102
dfcb9d74b253 Rename local gripe_XXX functions to err_XXX or warn_XXX.
Rik <rik@octave.org>
parents: 21100
diff changeset
1098 warn_save ("hdf5");
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1099
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1100 return false;
19863
09ed6f7538dd avoid needing to include hdf5 in public header files (bug #44370, #43180)
John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
parents: 19861
diff changeset
1101 #endif
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1102 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1103
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1104 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1105 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1106 ov_range<octave_uint8>::save_hdf5 (octave_hdf5_id loc_id, const char *name,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1107 bool save_as_floats)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1108 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1109 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1110 return xsave_hdf5 (loc_id, name, save_as_floats, m_range, hdf5_save_type,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1111 true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1112 #else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1113 octave_unused_parameter (loc_id);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1114 octave_unused_parameter (name);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1115 octave_unused_parameter (save_as_floats);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1116
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1117 warn_save ("hdf5");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1118
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1119 return false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1120 #endif
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1121 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1122
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1123 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1124 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1125 ov_range<octave_uint16>::save_hdf5 (octave_hdf5_id loc_id, const char *name,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1126 bool save_as_floats)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1127 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1128 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1129 return xsave_hdf5 (loc_id, name, save_as_floats, m_range, hdf5_save_type,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1130 true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1131 #else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1132 octave_unused_parameter (loc_id);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1133 octave_unused_parameter (name);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1134 octave_unused_parameter (save_as_floats);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1135
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1136 warn_save ("hdf5");
19863
09ed6f7538dd avoid needing to include hdf5 in public header files (bug #44370, #43180)
John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
parents: 19861
diff changeset
1137
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1138 return false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1139 #endif
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1140 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1141
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1142 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1143 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1144 ov_range<octave_uint32>::save_hdf5 (octave_hdf5_id loc_id, const char *name,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1145 bool save_as_floats)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1146 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1147 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1148 return xsave_hdf5 (loc_id, name, save_as_floats, m_range, hdf5_save_type,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1149 true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1150 #else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1151 octave_unused_parameter (loc_id);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1152 octave_unused_parameter (name);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1153 octave_unused_parameter (save_as_floats);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1154
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1155 warn_save ("hdf5");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1156
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1157 return false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1158 #endif
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1159 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1160
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1161 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1162 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1163 ov_range<octave_uint64>::save_hdf5 (octave_hdf5_id loc_id, const char *name,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1164 bool save_as_floats)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1165 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1166 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1167 return xsave_hdf5 (loc_id, name, save_as_floats, m_range, hdf5_save_type,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1168 true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1169 #else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1170 octave_unused_parameter (loc_id);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1171 octave_unused_parameter (name);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1172 octave_unused_parameter (save_as_floats);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1173
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1174 warn_save ("hdf5");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1175
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1176 return false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1177 #endif
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1178 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1179
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1180 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1181
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1182 template <typename T>
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
1183 bool
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1184 xload_hdf5 (octave_hdf5_id loc_id, const char *name, octave::range<T>& r,
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1185 const octave_hdf5_id h5_save_type, const bool with_reverse)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1186 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1187 bool retval = false;
4837
81f78a2ff8a6 [project @ 2004-03-12 19:13:01 by jwe]
jwe
parents: 4815
diff changeset
1188
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1189 # if defined (HAVE_HDF5_18)
21022
ebc439187d29 avoid old-style cast warnings from HDF5 macros used in C++ sources
John W. Eaton <jwe@octave.org>
parents: 20988
diff changeset
1190 hid_t data_hid = H5Dopen (loc_id, name, octave_H5P_DEFAULT);
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1191 # else
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1192 hid_t data_hid = H5Dopen (loc_id, name);
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1193 # endif
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1194 hid_t type_hid = H5Dget_type (data_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1195
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1196 hid_t range_type = with_reverse
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1197 ? hdf5_make_range_rev_type<T> (h5_save_type)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1198 : hdf5_make_range_type<T> (h5_save_type);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1199
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1200 if (! hdf5_types_compatible (type_hid, range_type))
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1201 {
4837
81f78a2ff8a6 [project @ 2004-03-12 19:13:01 by jwe]
jwe
parents: 4815
diff changeset
1202 H5Tclose (range_type);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1203 H5Dclose (data_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1204 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1205 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1206
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1207 hid_t space_hid = H5Dget_space (data_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1208 hsize_t rank = H5Sget_simple_extent_ndims (space_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1209
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1210 if (rank != 0)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1211 {
4837
81f78a2ff8a6 [project @ 2004-03-12 19:13:01 by jwe]
jwe
parents: 4815
diff changeset
1212 H5Tclose (range_type);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1213 H5Sclose (space_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1214 H5Dclose (data_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1215 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1216 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1217
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1218 T rangevals[4];
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22327
diff changeset
1219 if (H5Dread (data_hid, range_type, octave_H5S_ALL, octave_H5S_ALL,
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22327
diff changeset
1220 octave_H5P_DEFAULT, rangevals)
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22327
diff changeset
1221 >= 0)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1222 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1223 retval = true;
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
1224
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
1225 // Don't use OCTAVE_RANGE_NELEM attribute, just reconstruct the range.
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
1226
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1227 bool rev = with_reverse ? static_cast<bool> (rangevals[3]) : false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1228
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1229 if (rangevals[2] != T (0))
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1230 r = octave::range<T> (rangevals[0], rangevals[2], rangevals[1], rev);
10735
d899b2ee6a37 fix saving/loading of constant ranges (bug #30289)
Jaroslav Hajek <highegg@gmail.com>
parents: 10711
diff changeset
1231 else
11176
2271261f088a Address precision issue in ranges saved to HDF5 files
David Bateman <dbateman@free.fr>
parents: 11129
diff changeset
1232 {
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
1233 octave_idx_type numel = static_cast<octave_idx_type> (rangevals[1]);
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1234 r = octave::range<T>::make_constant (rangevals[0], numel, rev);
11176
2271261f088a Address precision issue in ranges saved to HDF5 files
David Bateman <dbateman@free.fr>
parents: 11129
diff changeset
1235 }
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1236 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1237
4837
81f78a2ff8a6 [project @ 2004-03-12 19:13:01 by jwe]
jwe
parents: 4815
diff changeset
1238 H5Tclose (range_type);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1239 H5Sclose (space_hid);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1240 H5Dclose (data_hid);
4837
81f78a2ff8a6 [project @ 2004-03-12 19:13:01 by jwe]
jwe
parents: 4815
diff changeset
1241
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1242 return retval;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1243 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1244
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1245 #endif
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1246
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1247 template <typename T>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1248 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1249 ov_range<T>::load_hdf5 (octave_hdf5_id loc_id, const char *name)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1250 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1251 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1252 return xload_hdf5 (loc_id, name, m_range, hdf5_save_type, false);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1253 #else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1254 octave_unused_parameter (loc_id);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1255 octave_unused_parameter (name);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1256
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1257 warn_load ("hdf5");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1258
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1259 return false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1260 #endif
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1261 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1262
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1263 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1264 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1265 ov_range<octave_uint8>::load_hdf5 (octave_hdf5_id loc_id, const char *name)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1266 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1267 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1268 return xload_hdf5 (loc_id, name, m_range, hdf5_save_type, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1269 #else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1270 octave_unused_parameter (loc_id);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1271 octave_unused_parameter (name);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1272
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1273 warn_load ("hdf5");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1274
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1275 return false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1276 #endif
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1277 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1278
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1279 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1280 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1281 ov_range<octave_uint16>::load_hdf5 (octave_hdf5_id loc_id, const char *name)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1282 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1283 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1284 return xload_hdf5 (loc_id, name, m_range, hdf5_save_type, true);
19863
09ed6f7538dd avoid needing to include hdf5 in public header files (bug #44370, #43180)
John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
parents: 19861
diff changeset
1285 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21647
diff changeset
1286 octave_unused_parameter (loc_id);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21647
diff changeset
1287 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21647
diff changeset
1288
21102
dfcb9d74b253 Rename local gripe_XXX functions to err_XXX or warn_XXX.
Rik <rik@octave.org>
parents: 21100
diff changeset
1289 warn_load ("hdf5");
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1290
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1291 return false;
19863
09ed6f7538dd avoid needing to include hdf5 in public header files (bug #44370, #43180)
John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
parents: 19861
diff changeset
1292 #endif
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1293 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1294
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1295 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1296 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1297 ov_range<octave_uint32>::load_hdf5 (octave_hdf5_id loc_id, const char *name)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1298 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1299 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1300 return xload_hdf5 (loc_id, name, m_range, hdf5_save_type, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1301 #else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1302 octave_unused_parameter (loc_id);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1303 octave_unused_parameter (name);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1304
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1305 warn_load ("hdf5");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1306
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1307 return false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1308 #endif
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1309 }
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1310
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1311 template <>
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1312 bool
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1313 ov_range<octave_uint64>::load_hdf5 (octave_hdf5_id loc_id, const char *name)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1314 {
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1315 #if defined (HAVE_HDF5)
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1316 return xload_hdf5 (loc_id, name, m_range, hdf5_save_type, true);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1317 #else
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1318 octave_unused_parameter (loc_id);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1319 octave_unused_parameter (name);
19863
09ed6f7538dd avoid needing to include hdf5 in public header files (bug #44370, #43180)
John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
parents: 19861
diff changeset
1320
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1321 warn_load ("hdf5");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1322
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1323 return false;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1324 #endif
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4612
diff changeset
1325 }
4944
44046bbaa52c [project @ 2004-08-31 05:30:46 by jwe]
jwe
parents: 4837
diff changeset
1326
30416
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1327 /*
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1328 %!testif HAVE_HDF5
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1329 %! a = b = 1:4;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1330 %! sv_file = [tempname(), ".h5"];
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1331 %! unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1332 %! save (sv_file, "a", "-hdf5");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1333 %! clear a;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1334 %! load (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1335 %! assert (a, b);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1336 %! unwind_protect_cleanup
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1337 %! unlink (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1338 %! end_unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1339
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1340 %!testif HAVE_HDF5
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1341 %! a = b = uint8(5):-1:0;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1342 %! sv_file = [tempname(), ".h5"];
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1343 %! unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1344 %! save (sv_file, "a", "-hdf5");
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1345 %! clear a;
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1346 %! load (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1347 %! assert (a, b);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1348 %! unwind_protect_cleanup
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1349 %! unlink (sv_file);
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1350 %! end_unwind_protect
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1351 */
4736bc8e9804 Allow descending ranges of all integer types (bug #61132).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30390
diff changeset
1352
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1353 template <typename T>
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5885
diff changeset
1354 mxArray *
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1355 ov_range<T>::as_mxArray (bool interleaved) const
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5885
diff changeset
1356 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1357 mxClassID mx_class = mx_type_traits<T>::mx_class;
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5885
diff changeset
1358
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1359 mxArray *retval = new mxArray (interleaved, mx_class, dims (), mxREAL);
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1360
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1361 typedef typename mx_type_traits<T>::mx_type mx_type;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1362 mx_type *pd = static_cast<mx_type *> (retval->get_data ());
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5885
diff changeset
1363
6686
2aad75fcc93a [project @ 2007-06-03 20:58:28 by dbateman]
dbateman
parents: 5958
diff changeset
1364 mwSize nel = numel ();
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5885
diff changeset
1365
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1366 Array<T> matrix = raw_array_value ();
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5885
diff changeset
1367
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1368 const T *pdata = matrix.data ();
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5885
diff changeset
1369
6686
2aad75fcc93a [project @ 2007-06-03 20:58:28 by dbateman]
dbateman
parents: 5958
diff changeset
1370 for (mwSize i = 0; i < nel; i++)
28126
4c21f99b4ad5 handle interleaved complex data and new typed data access functions for mex
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
1371 pd[i] = pdata[i];
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5885
diff changeset
1372
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5885
diff changeset
1373 return retval;
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5885
diff changeset
1374 }
10613
e103fb2182ce use internal variable instead of warning state to control whether to allow non-integer ranges as indices
John W. Eaton <jwe@octave.org>
parents: 10609
diff changeset
1375
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1376 template <typename T>
18650
491b0adfec95 compatibility fixes for printf integer format specifiers
John W. Eaton <jwe@octave.org>
parents: 18416
diff changeset
1377 octave_value
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1378 ov_range<T>::fast_elem_extract (octave_idx_type n) const
18650
491b0adfec95 compatibility fixes for printf integer format specifiers
John W. Eaton <jwe@octave.org>
parents: 18416
diff changeset
1379 {
28638
98192ec1621f replace Range with range<double>
John W. Eaton <jwe@octave.org>
parents: 28636
diff changeset
1380 return (n < numel () ? octave_value (m_range.elem (n)) : octave_value ());
18650
491b0adfec95 compatibility fixes for printf integer format specifiers
John W. Eaton <jwe@octave.org>
parents: 18416
diff changeset
1381 }
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1382
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1383 // Specializations.
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1384
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1385 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1386 octave::range<float>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1387 ov_range<float>::float_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1388 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1389 return m_range;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1390 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1391
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1392 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1393 octave::range<double>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1394 ov_range<double>::range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1395 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1396 return m_range;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1397 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1398
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1399 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1400 octave::range<octave_int8>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1401 ov_range<octave_int8>::int8_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1402 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1403 return m_range;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1404 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1405
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1406 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1407 octave::range<octave_int16>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1408 ov_range<octave_int16>::int16_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1409 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1410 return m_range;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1411 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1412
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1413 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1414 octave::range<octave_int32>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1415 ov_range<octave_int32>::int32_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1416 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1417 return m_range;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1418 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1419
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1420 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1421 octave::range<octave_int64>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1422 ov_range<octave_int64>::int64_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1423 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1424 return m_range;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1425 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1426
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1427 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1428 octave::range<octave_uint8>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1429 ov_range<octave_uint8>::uint8_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1430 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1431 return m_range;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1432 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1433
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1434 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1435 octave::range<octave_uint16>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1436 ov_range<octave_uint16>::uint16_range_value (void) const
18650
491b0adfec95 compatibility fixes for printf integer format specifiers
John W. Eaton <jwe@octave.org>
parents: 18416
diff changeset
1437 {
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1438 return m_range;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1439 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1440
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1441 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1442 octave::range<octave_uint32>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1443 ov_range<octave_uint32>::uint32_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1444 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1445 return m_range;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1446 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1447
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1448 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1449 octave::range<octave_uint64>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1450 ov_range<octave_uint64>::uint64_range_value (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1451 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1452 return m_range;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1453 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1454
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1455 template <>
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29394
diff changeset
1456 octave::idx_vector
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1457 ov_range<double>::index_vector (bool require_integers) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1458 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1459 if (m_idx_cache)
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1460 return *m_idx_cache;
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1461
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1462 if (require_integers || m_range.all_elements_are_ints ())
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29394
diff changeset
1463 return set_idx_cache (octave::idx_vector (m_range));
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1464
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1465 warning_with_id ("Octave:noninteger-range-as-index",
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1466 "non-integer range used as index");
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1467
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1468 return octave_value (matrix_value ()).round ().index_vector ();
18650
491b0adfec95 compatibility fixes for printf integer format specifiers
John W. Eaton <jwe@octave.org>
parents: 18416
diff changeset
1469 }
28646
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1470
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1471 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1472 octave_idx_type
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1473 ov_range<double>::nnz (void) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1474 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1475 return m_range.nnz ();
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1476 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1477
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1478 // The following specialization is also historical baggage. For double
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1479 // ranges, we can produce special double-valued diagnoal matrix objects
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1480 // but Octave currently provides only double and Complex diagonal matrix
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1481 // objects.
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1482
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1483 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1484 octave_value
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1485 ov_range<double>::diag (octave_idx_type k) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1486 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1487 // FIXME: this is a potential waste of memory.
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1488
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1489 return
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1490 (k == 0
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1491 ? octave_value (DiagMatrix (DiagArray2<double> (matrix_value ())))
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1492 : octave_value (m_range.diag (k)));
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1493 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1494
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1495 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1496 octave_value
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1497 ov_range<double>::diag (octave_idx_type nr, octave_idx_type nc) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1498 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1499 Matrix mat = matrix_value ();
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1500
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1501 return mat.diag (nr, nc);
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1502 }
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1503
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1504 template <>
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1505 void
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1506 ov_range<double>::print_raw (std::ostream& os, bool pr_as_read_syntax) const
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1507 {
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1508 octave_print_internal (os, m_range, pr_as_read_syntax,
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1509 current_print_indent_level ());
e26201931ea3 new template class for octave_range objects
John W. Eaton <jwe@octave.org>
parents: 28638
diff changeset
1510 }