annotate src/ov-list.cc @ 3196:3ac3e8edc258

[project @ 1998-10-28 23:04:39 by jwe]
author jwe
date Wed, 28 Oct 1998 23:11:11 +0000
parents 38de16594cb4
children 44d82b369c78
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
1 /*
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
2
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
3 Copyright (C) 1996, 1997 John W. Eaton
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
4
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
6
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
10 later version.
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
11
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
15 for more details.
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
16
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
20
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
21 */
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
22
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
23 #if defined (__GNUG__)
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
24 #pragma implementation
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
25 #endif
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
26
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
27 #ifdef HAVE_CONFIG_H
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
28 #include <config.h>
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
29 #endif
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
30
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
31 #include <iostream.h>
2916
4e7bea116f24 [project @ 1997-04-30 20:56:31 by jwe]
jwe
parents: 2905
diff changeset
32 #include <strstream.h>
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
33
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
34 #include "lo-utils.h"
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
35
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
36 #include "defun.h"
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
37 #include "error.h"
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
38 #include "ov-list.h"
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
39 #include "unwind-prot.h"
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
40
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
41 octave_allocator
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
42 octave_list::allocator (sizeof (octave_list));
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
43
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
44 int
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
45 octave_list::t_id (-1);
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
46
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
47 const string
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
48 octave_list::t_name ("list");
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
49
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
50 octave_value
2974
ebbc34ff7f66 [project @ 1997-05-15 19:36:16 by jwe]
jwe
parents: 2962
diff changeset
51 octave_list::do_index_op (const octave_value_list& idx)
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
52 {
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
53 octave_value retval;
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
54
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
55 if (idx.length () == 1)
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
56 {
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
57 double d = idx(0).double_value ();
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
58
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
59 if (! error_state)
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
60 {
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
61 if (D_NINT (d) == d)
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
62 {
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
63 int n = lst.length ();
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
64
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
65 int i = static_cast<int> (d);
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
66
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
67 if (i > 0 && i <= n)
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
68 retval = lst(i-1);
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
69 else
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
70 error ("list index = %d out of range", i);
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
71 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
72 else
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
73 error ("list index must be an integer");
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
74 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
75 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
76 else
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
77 error ("lists may only be indexed by a single scalar");
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
78
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
79 return retval;
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
80 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
81
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
82 void
3196
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
83 octave_list::assign (const octave_value_list& idx, const octave_value& rhs)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
84 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
85 if (idx.length () == 1)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
86 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
87 double d = idx(0).double_value ();
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
88
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
89 if (! error_state)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
90 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
91 if (D_NINT (d) == d)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
92 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
93 int n = lst.length ();
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
94
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
95 int i = static_cast<int> (d);
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
96
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
97 if (i > 0 && (Vresize_on_range_error || i <= n))
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
98 lst(i) = rhs;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
99 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
100 error ("list index = %d out of range", i);
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
101 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
102 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
103 error ("list index must be an integer");
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
104 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
105 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
106 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
107 error ("lists may only be indexed by a single scalar");
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
108 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
109
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
110 void
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
111 octave_list::print (ostream& os, bool) const
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
112 {
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
113 print_raw (os);
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
114 }
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
115
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
116 void
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
117 octave_list::print_raw (ostream& os, bool) const
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
118 {
2985
aa9d0c0e0458 [project @ 1997-05-16 06:54:18 by jwe]
jwe
parents: 2974
diff changeset
119 unwind_protect::begin_frame ("octave_list_print");
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
120
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
121 int n = lst.length ();
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
122
3196
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
123 if (n > 0)
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
124 {
3196
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
125 indent (os);
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
126 os << "(";
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
127 newline (os);
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
128
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
129 increment_indent_level ();
2916
4e7bea116f24 [project @ 1997-04-30 20:56:31 by jwe]
jwe
parents: 2905
diff changeset
130
3196
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
131 for (int i = 0; i < n; i++)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
132 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
133 ostrstream buf;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
134 buf << "[" << i+1 << "]" << ends;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
135 const char *nm = buf.str ();
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
136
3196
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
137 octave_value val = lst(i);
2916
4e7bea116f24 [project @ 1997-04-30 20:56:31 by jwe]
jwe
parents: 2905
diff changeset
138
3196
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
139 val.print_with_name (os, nm);
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
140
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
141 delete [] nm;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
142 }
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
143
3196
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
144 decrement_indent_level ();
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
145
3196
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
146 indent (os);
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
147 os << ")";
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
148 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
149 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
150 os << "()";
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
151
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
152 newline (os);
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
153
2985
aa9d0c0e0458 [project @ 1997-05-16 06:54:18 by jwe]
jwe
parents: 2974
diff changeset
154 unwind_protect::run_frame ("octave_list_print");
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
155 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
156
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
157 bool
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
158 octave_list::print_name_tag (ostream& os, const string& name) const
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
159 {
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
160 indent (os);
3196
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
161 if (lst.length () == 0)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
162 os << name << " = ";
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
163 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
164 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
165 os << name << " =";
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
166 newline (os);
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
167 }
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
168 return false;
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
169 }
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2882
diff changeset
170
2993
91589ab98e37 [project @ 1997-05-21 21:44:54 by jwe]
jwe
parents: 2985
diff changeset
171 DEFUN (list, args, ,
91589ab98e37 [project @ 1997-05-21 21:44:54 by jwe]
jwe
parents: 2985
diff changeset
172 "list (ARGS)\n\
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
173 \n\
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
174 Create a new list from ARGS.")
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
175 {
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
176 return octave_value (args);
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
177 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
178
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
179 DEFUN (append, args, ,
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
180 "append (LIST, ARGS)\n\
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
181 \n\
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
182 Return a new list created by appending ARGS to LIST")
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
183 {
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
184 octave_value retval;
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
185
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
186 int nargin = args.length ();
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
187
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
188 if (nargin > 1)
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
189 {
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
190 octave_value_list tmp = args(0).list_value ();
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
191
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
192 if (! error_state)
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
193 {
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
194 for (int i = 1; i < nargin; i++)
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
195 tmp.append (args(i));
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
196
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
197 retval = tmp;
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
198 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
199 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
200 else
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
201 print_usage ("append");
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
202
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
203 return retval;
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
204 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
205
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
206 DEFUN (reverse, args, ,
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
207 "reverse (LIST)\n\
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
208 \n\
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
209 Return a new list created by reversing the elements of LIST")
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
210 {
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
211 octave_value retval;
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
212
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
213 int nargin = args.length ();
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
214
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
215 if (nargin == 1)
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
216 {
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
217 octave_value_list tmp = args(0).list_value ();
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
218
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
219 if (! error_state)
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
220 retval = tmp.reverse ();
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
221 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
222 else
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
223 print_usage ("reverse");
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
224
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
225 return retval;
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
226 }
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
227
3196
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
228 DEFUN (splice, args, ,
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
229 "splice (LIST_1, OFFSET, LENGTH, LIST_2)\n\
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
230 splice (LIST_1, OFFSET, LENGTH, LIST_2)\n\
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
231 splice (LIST_1, OFFSET, LENGTH)\n\
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
232 splice (LIST_1, OFFSET)\n\
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
233 \n\
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
234 Replace LENGTH elements of LIST_1 beginning at OFFSET with the
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
235 contents of LIST_2 (if any). If LENGTH is omitted, ")
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
236 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
237 octave_value retval;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
238
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
239 int nargin = args.length ();
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
240
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
241 if (nargin > 1 && nargin < 5)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
242 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
243 octave_value_list list_1 = args(0).list_value ();
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
244
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
245 if (! error_state)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
246 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
247 double d_offset = args(1).double_value ();
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
248
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
249 if (! error_state)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
250 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
251 if (D_NINT (d_offset) == d_offset)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
252 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
253 int offset = static_cast<int> (d_offset) - 1;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
254
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
255 int length = 0;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
256
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
257 if (nargin < 3)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
258 length = list_1.length () - offset;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
259 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
260 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
261 double d_length = args(2).double_value ();
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
262
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
263 if (error_state)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
264 return retval;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
265 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
266 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
267 if (D_NINT (d_length) == d_length)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
268 length = static_cast<int> (d_length);
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
269 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
270 error ("splice: LENGTH must be an integer");
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
271 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
272 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
273
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
274 octave_value_list list_2;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
275
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
276 if (nargin == 4)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
277 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
278 list_2 = args(3).list_value ();
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
279
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
280 if (error_state)
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
281 {
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
282 error ("splice: fourth argument must be a list");
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
283 return retval;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
284 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
285 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
286
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
287 retval = list_1.splice (offset, length, list_2);
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
288 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
289 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
290 error ("splice: OFFSET must be an integer");
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
291 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
292 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
293 error ("splice: OFFSET must be an integer");
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
294 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
295 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
296 error ("splice: first argument must be a list");
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
297 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
298 else
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
299 print_usage ("splice");
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
300
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
301 return retval;
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
302 }
3ac3e8edc258 [project @ 1998-10-28 23:04:39 by jwe]
jwe
parents: 3014
diff changeset
303
2882
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
304 /*
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
305 ;;; Local Variables: ***
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
306 ;;; mode: C++ ***
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
307 ;;; End: ***
05926e1b367d [project @ 1997-04-24 09:48:59 by jwe]
jwe
parents:
diff changeset
308 */