Mercurial > octave
annotate libinterp/octave-value/ovl.cc @ 27919:1891570abac8
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2020.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 06 Jan 2020 22:29:51 -0500 |
parents | b442ec6dda5c |
children | bd51beb6205e |
rev | line source |
---|---|
517 | 1 /* |
2 | |
27919
1891570abac8
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
27918
diff
changeset
|
3 Copyright (C) 1994-2020 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27353
diff
changeset
|
4 |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27353
diff
changeset
|
5 See the file COPYRIGHT.md in the top-level directory of this distribution |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27353
diff
changeset
|
6 or <https://octave.org/COPYRIGHT.html/>. |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27353
diff
changeset
|
7 |
517 | 8 |
9 This file is part of Octave. | |
10 | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23576
diff
changeset
|
11 Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
12 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23576
diff
changeset
|
13 the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
14 (at your option) any later version. |
517 | 15 |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
16 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
17 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
19 GNU General Public License for more details. |
517 | 20 |
21 You should have received a copy of the GNU General Public License | |
7016 | 22 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23576
diff
changeset
|
23 <https://www.gnu.org/licenses/>. |
517 | 24 |
25 */ | |
26 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
27 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21200
diff
changeset
|
28 # include "config.h" |
517 | 29 #endif |
30 | |
1968 | 31 #include "error.h" |
20940
48b2ad5ee801
maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents:
20831
diff
changeset
|
32 #include "ovl.h" |
8546
3d8a914c580e
improve parser indexed assigment code
Jaroslav Hajek <highegg@gmail.com>
parents:
8523
diff
changeset
|
33 |
13917
826f008c829b
* oct-obj.h, oct-obj.cc: Use macros to declare and define octave_allocator.
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
34 // We are likely to have a lot of octave_value_list objects to allocate, |
826f008c829b
* oct-obj.h, oct-obj.cc: Use macros to declare and define octave_allocator.
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
35 // so make the grow_size large. |
826f008c829b
* oct-obj.h, oct-obj.cc: Use macros to declare and define octave_allocator.
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
36 |
27353
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
37 octave_value_list::octave_value_list (const std::list<octave_value>& lst) |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
38 { |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
39 size_t nel = lst.size (); |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
40 |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
41 if (nel > 0) |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
42 { |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
43 m_data.resize (nel); |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
44 octave_idx_type k = 0; |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
45 for (const auto& ov : lst) |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
46 m_data[k++] = ov; |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
47 } |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
48 } |
8db55255c9d1
improve convert_to_const_vector
John W. Eaton <jwe@octave.org>
parents:
27341
diff
changeset
|
49 |
8580
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
50 octave_value_list::octave_value_list (const std::list<octave_value_list>& lst) |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
51 { |
18100
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
52 octave_idx_type n = 0; |
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
53 octave_idx_type nel = 0; |
8580
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
54 |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
55 // Determine number. |
22871
50495eeb5df1
maint: Use C++ range feature to simplify some for loops in libinterp/octave-value.
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
56 for (const auto& ovl : lst) |
8580
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
57 { |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
58 n++; |
22871
50495eeb5df1
maint: Use C++ range feature to simplify some for loops in libinterp/octave-value.
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
59 nel += ovl.length (); |
8580
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
60 } |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
61 |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
62 // Optimize single-element case |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
63 if (n == 1) |
27341
6eba4cf92af0
use m_ prefix for data members in octave_value_list class
John W. Eaton <jwe@octave.org>
parents:
27340
diff
changeset
|
64 m_data = lst.front ().m_data; |
8580
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
65 else if (nel > 0) |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
66 { |
27341
6eba4cf92af0
use m_ prefix for data members in octave_value_list class
John W. Eaton <jwe@octave.org>
parents:
27340
diff
changeset
|
67 m_data.resize (nel); |
8580
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
68 octave_idx_type k = 0; |
22871
50495eeb5df1
maint: Use C++ range feature to simplify some for loops in libinterp/octave-value.
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
69 for (const auto& ovl : lst) |
8580
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
70 { |
27340
6da4c6c0dc65
use std::vector<octave_value> for octave_value_list (bug #56752)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
71 for (octave_idx_type i = 0; i < ovl.length (); i++) |
27341
6eba4cf92af0
use m_ prefix for data members in octave_value_list class
John W. Eaton <jwe@octave.org>
parents:
27340
diff
changeset
|
72 m_data[k++] = ovl(i); |
8580
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
73 } |
27340
6da4c6c0dc65
use std::vector<octave_value> for octave_value_list (bug #56752)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
74 |
8580
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
75 assert (k == nel); |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
76 } |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
77 |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
78 } |
188d38a553c7
further indexing optimization touches
Jaroslav Hajek <highegg@gmail.com>
parents:
8579
diff
changeset
|
79 |
2872 | 80 octave_value_list& |
81 octave_value_list::prepend (const octave_value& val) | |
82 { | |
5275 | 83 octave_idx_type n = length (); |
2872 | 84 |
85 resize (n + 1); | |
86 | |
87 while (n > 0) | |
88 { | |
89 elem (n) = elem (n - 1); | |
90 n--; | |
91 } | |
92 | |
93 elem (0) = val; | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11574
diff
changeset
|
94 |
2872 | 95 return *this; |
96 } | |
97 | |
98 octave_value_list& | |
99 octave_value_list::append (const octave_value& val) | |
100 { | |
5275 | 101 octave_idx_type n = length (); |
2872 | 102 |
103 resize (n + 1); | |
104 | |
105 elem (n) = val; | |
106 | |
107 return *this; | |
108 } | |
109 | |
110 octave_value_list& | |
111 octave_value_list::append (const octave_value_list& lst) | |
112 { | |
5275 | 113 octave_idx_type len = length (); |
114 octave_idx_type lst_len = lst.length (); | |
2872 | 115 |
116 resize (len + lst_len); | |
117 | |
5275 | 118 for (octave_idx_type i = 0; i < lst_len; i++) |
2872 | 119 elem (len + i) = lst (i); |
120 | |
121 return *this; | |
122 } | |
123 | |
124 octave_value_list& | |
125 octave_value_list::reverse (void) | |
126 { | |
5275 | 127 octave_idx_type n = length (); |
2872 | 128 |
5275 | 129 for (octave_idx_type i = 0; i < n / 2; i++) |
2872 | 130 { |
131 octave_value tmp = elem (i); | |
132 elem (i) = elem (n - i - 1); | |
133 elem (n - i - 1) = tmp; | |
134 } | |
135 | |
136 return *this; | |
137 } | |
138 | |
3195 | 139 octave_value_list |
5275 | 140 octave_value_list::splice (octave_idx_type offset, octave_idx_type rep_length, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
141 const octave_value_list& lst) const |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11574
diff
changeset
|
142 { |
3195 | 143 octave_value_list retval; |
144 | |
5275 | 145 octave_idx_type len = length (); |
3195 | 146 |
147 if (offset < 0 || offset >= len) | |
148 { | |
3219 | 149 if (! (rep_length == 0 && offset == len)) |
20831
35241c4b696c
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20711
diff
changeset
|
150 error ("octave_value_list::splice: invalid OFFSET"); |
3195 | 151 } |
152 | |
153 if (rep_length < 0 || rep_length + offset > len) | |
20831
35241c4b696c
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20711
diff
changeset
|
154 error ("octave_value_list::splice: invalid LENGTH"); |
3195 | 155 |
5275 | 156 octave_idx_type lst_len = lst.length (); |
3195 | 157 |
5275 | 158 octave_idx_type new_len = len - rep_length + lst_len; |
3195 | 159 |
160 retval.resize (new_len); | |
161 | |
5275 | 162 octave_idx_type k = 0; |
3195 | 163 |
5275 | 164 for (octave_idx_type i = 0; i < offset; i++) |
3195 | 165 retval(k++) = elem (i); |
166 | |
5275 | 167 for (octave_idx_type i = 0; i < lst_len; i++) |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
168 retval(k++) = lst (i); |
3195 | 169 |
5275 | 170 for (octave_idx_type i = offset + rep_length; i < len; i++) |
3195 | 171 retval(k++) = elem (i); |
172 | |
173 return retval; | |
174 } | |
175 | |
2872 | 176 bool |
177 octave_value_list::all_strings_p (void) const | |
1968 | 178 { |
5275 | 179 octave_idx_type n = length (); |
517 | 180 |
5275 | 181 for (octave_idx_type i = 0; i < n; i++) |
1968 | 182 if (! elem(i).is_string ()) |
5846 | 183 return false; |
184 | |
185 return true; | |
186 } | |
1746 | 187 |
5846 | 188 bool |
8455
fd11a08a9b31
disallow invalid {}-indexed assigments
Jaroslav Hajek <highegg@gmail.com>
parents:
8437
diff
changeset
|
189 octave_value_list::all_scalars (void) const |
fd11a08a9b31
disallow invalid {}-indexed assigments
Jaroslav Hajek <highegg@gmail.com>
parents:
8437
diff
changeset
|
190 { |
11568
de5fba8337c5
octave_value_list::all_scalars: test for scalars, not strings
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
191 octave_idx_type n = length (); |
8455
fd11a08a9b31
disallow invalid {}-indexed assigments
Jaroslav Hajek <highegg@gmail.com>
parents:
8437
diff
changeset
|
192 |
11568
de5fba8337c5
octave_value_list::all_scalars: test for scalars, not strings
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
193 for (octave_idx_type i = 0; i < n; i++) |
de5fba8337c5
octave_value_list::all_scalars: test for scalars, not strings
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
194 { |
de5fba8337c5
octave_value_list::all_scalars: test for scalars, not strings
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
195 dim_vector dv = elem(i).dims (); |
de5fba8337c5
octave_value_list::all_scalars: test for scalars, not strings
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
196 if (! dv.all_ones ()) |
de5fba8337c5
octave_value_list::all_scalars: test for scalars, not strings
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
197 return false; |
de5fba8337c5
octave_value_list::all_scalars: test for scalars, not strings
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
198 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11574
diff
changeset
|
199 |
11568
de5fba8337c5
octave_value_list::all_scalars: test for scalars, not strings
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
200 return true; |
8455
fd11a08a9b31
disallow invalid {}-indexed assigments
Jaroslav Hajek <highegg@gmail.com>
parents:
8437
diff
changeset
|
201 } |
fd11a08a9b31
disallow invalid {}-indexed assigments
Jaroslav Hajek <highegg@gmail.com>
parents:
8437
diff
changeset
|
202 |
fd11a08a9b31
disallow invalid {}-indexed assigments
Jaroslav Hajek <highegg@gmail.com>
parents:
8437
diff
changeset
|
203 bool |
10086
76df75b10c80
allow more cells in strfind/strrep + supply a general mechanism
Jaroslav Hajek <highegg@gmail.com>
parents:
8920
diff
changeset
|
204 octave_value_list::any_cell (void) const |
76df75b10c80
allow more cells in strfind/strrep + supply a general mechanism
Jaroslav Hajek <highegg@gmail.com>
parents:
8920
diff
changeset
|
205 { |
76df75b10c80
allow more cells in strfind/strrep + supply a general mechanism
Jaroslav Hajek <highegg@gmail.com>
parents:
8920
diff
changeset
|
206 octave_idx_type n = length (); |
76df75b10c80
allow more cells in strfind/strrep + supply a general mechanism
Jaroslav Hajek <highegg@gmail.com>
parents:
8920
diff
changeset
|
207 |
76df75b10c80
allow more cells in strfind/strrep + supply a general mechanism
Jaroslav Hajek <highegg@gmail.com>
parents:
8920
diff
changeset
|
208 for (octave_idx_type i = 0; i < n; i++) |
23576
00e518162fda
maint: Deprecate is_cell and replace with iscell.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
209 if (elem (i).iscell ()) |
10099
29959c705df2
avoid assignment in condition of if statement
John W. Eaton <jwe@octave.org>
parents:
10086
diff
changeset
|
210 return true; |
29959c705df2
avoid assignment in condition of if statement
John W. Eaton <jwe@octave.org>
parents:
10086
diff
changeset
|
211 |
29959c705df2
avoid assignment in condition of if statement
John W. Eaton <jwe@octave.org>
parents:
10086
diff
changeset
|
212 return false; |
10086
76df75b10c80
allow more cells in strfind/strrep + supply a general mechanism
Jaroslav Hajek <highegg@gmail.com>
parents:
8920
diff
changeset
|
213 } |
76df75b10c80
allow more cells in strfind/strrep + supply a general mechanism
Jaroslav Hajek <highegg@gmail.com>
parents:
8920
diff
changeset
|
214 |
76df75b10c80
allow more cells in strfind/strrep + supply a general mechanism
Jaroslav Hajek <highegg@gmail.com>
parents:
8920
diff
changeset
|
215 bool |
5846 | 216 octave_value_list::has_magic_colon (void) const |
217 { | |
218 octave_idx_type n = length (); | |
219 | |
220 for (octave_idx_type i = 0; i < n; i++) | |
221 if (elem(i).is_magic_colon ()) | |
222 return true; | |
223 | |
224 return false; | |
517 | 225 } |
226 | |
1968 | 227 string_vector |
3523 | 228 octave_value_list::make_argv (const std::string& fcn_name) const |
517 | 229 { |
1968 | 230 string_vector argv; |
231 | |
20996 | 232 if (! all_strings_p ()) |
233 error ("%s: all arguments must be strings", fcn_name.c_str ()); | |
234 | |
235 octave_idx_type len = length (); | |
236 | |
237 octave_idx_type total_nr = 0; | |
238 | |
239 for (octave_idx_type i = 0; i < len; i++) | |
1968 | 240 { |
20996 | 241 // An empty std::string ("") has zero columns and zero rows |
242 // (a change that was made for Matlab contemptibility. | |
3180 | 243 |
20996 | 244 octave_idx_type n = elem (i).rows (); |
245 | |
246 total_nr += n ? n : 1; | |
247 } | |
3180 | 248 |
20996 | 249 octave_idx_type k = 0; |
250 if (! fcn_name.empty ()) | |
251 { | |
252 argv.resize (total_nr+1); | |
253 argv[0] = fcn_name; | |
254 k = 1; | |
255 } | |
256 else | |
257 argv.resize (total_nr); | |
3264 | 258 |
20996 | 259 for (octave_idx_type i = 0; i < len; i++) |
260 { | |
261 octave_idx_type nr = elem (i).rows (); | |
3264 | 262 |
20996 | 263 if (nr < 2) |
264 argv[k++] = elem (i).string_value (); | |
265 else | |
8034
f61bd8e0d682
fix default_save_options parsing and allow mixing options with other arguments.
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
266 { |
20996 | 267 string_vector tmp = elem (i).string_vector_value (); |
3180 | 268 |
20996 | 269 for (octave_idx_type j = 0; j < nr; j++) |
270 argv[k++] = tmp[j]; | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
271 } |
1968 | 272 } |
517 | 273 |
1968 | 274 return argv; |
517 | 275 } |
276 | |
8150
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
8034
diff
changeset
|
277 void |
8523
ad3afaaa19c1
implement non-copying contiguous range indexing
Jaroslav Hajek <highegg@gmail.com>
parents:
8455
diff
changeset
|
278 octave_value_list::make_storable_values (void) |
8150
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
8034
diff
changeset
|
279 { |
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
8034
diff
changeset
|
280 octave_idx_type len = length (); |
27341
6eba4cf92af0
use m_ prefix for data members in octave_value_list class
John W. Eaton <jwe@octave.org>
parents:
27340
diff
changeset
|
281 const std::vector<octave_value>& cdata = m_data; |
8579
7e0f36dfefbe
implement octave_value_list using Array
Jaroslav Hajek <highegg@gmail.com>
parents:
8546
diff
changeset
|
282 |
8150
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
8034
diff
changeset
|
283 for (octave_idx_type i = 0; i < len; i++) |
8579
7e0f36dfefbe
implement octave_value_list using Array
Jaroslav Hajek <highegg@gmail.com>
parents:
8546
diff
changeset
|
284 { |
7e0f36dfefbe
implement octave_value_list using Array
Jaroslav Hajek <highegg@gmail.com>
parents:
8546
diff
changeset
|
285 // This is optimized so that we don't force a copy unless necessary. |
27340
6da4c6c0dc65
use std::vector<octave_value> for octave_value_list (bug #56752)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
286 octave_value tmp = cdata[i].storable_value (); |
6da4c6c0dc65
use std::vector<octave_value> for octave_value_list (bug #56752)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
287 if (! tmp.is_copy_of (cdata[i])) |
27341
6eba4cf92af0
use m_ prefix for data members in octave_value_list class
John W. Eaton <jwe@octave.org>
parents:
27340
diff
changeset
|
288 m_data[i] = tmp; |
8579
7e0f36dfefbe
implement octave_value_list using Array
Jaroslav Hajek <highegg@gmail.com>
parents:
8546
diff
changeset
|
289 } |
8150
283989f2da9b
make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
8034
diff
changeset
|
290 } |