Mercurial > octave-nkf
comparison src/pt-arg-list.cc @ 4671:7a80bb43ea63
[project @ 2003-11-28 02:50:12 by jwe]
author | jwe |
---|---|
date | Fri, 28 Nov 2003 02:50:12 +0000 |
parents | ff7187bd3075 |
children | ff29117ce225 |
comparison
equal
deleted
inserted
replaced
4670:4ad69c3588a9 | 4671:7a80bb43ea63 |
---|---|
121 { | 121 { |
122 octave_value retval; | 122 octave_value retval; |
123 | 123 |
124 if (indexed_object) | 124 if (indexed_object) |
125 { | 125 { |
126 dim_vector dv = indexed_object->dims (); | |
127 | |
126 switch (index_position) | 128 switch (index_position) |
127 { | 129 { |
128 case -1: | 130 case -1: |
129 // XXX FIXME XXX -- we really want "numel" here. | |
130 { | 131 { |
131 int nr = indexed_object->rows (); | 132 int numel = indexed_object->numel (); |
132 int nc = indexed_object->columns (); | 133 |
133 | 134 if (numel < 0) |
134 if (nr < 0 || nc < 0) | 135 { |
135 ::error ("invalid use of end: (nr=%d, nc=%d)", nr, nc); | 136 std::string dv_str = dv.str (); |
137 ::error ("invalid use of end: (index 1, dims %s)", | |
138 dv_str.c_str ()); | |
139 } | |
136 else | 140 else |
137 retval = nr * nc; | 141 retval = numel; |
138 } | 142 } |
139 break; | 143 break; |
140 | 144 |
141 case 0: | 145 default: |
142 { | 146 { |
143 int nr = indexed_object->rows (); | 147 |
144 | 148 if (index_position < dv.length ()) |
145 if (nr < 0) | 149 retval = dv(index_position); |
146 ::error ("invalid use of end: (nr=%d)", nr); | |
147 else | 150 else |
148 retval = nr; | 151 { |
152 std::string dv_str = dv.str (); | |
153 ::error ("invalid use of end: (index %d, dims %s)", | |
154 index_position+1, dv_str.c_str ()); | |
155 } | |
149 } | 156 } |
150 break; | |
151 | |
152 case 1: | |
153 { | |
154 int nc = indexed_object->columns (); | |
155 | |
156 if (nc < 0) | |
157 ::error ("invalid use of end: (nc=%d)", nc); | |
158 else | |
159 retval = nc; | |
160 } | |
161 break; | |
162 | |
163 default: | |
164 ::error ("__end__: internal error"); | |
165 break; | 157 break; |
166 } | 158 } |
167 } | 159 } |
168 else | 160 else |
169 ::error ("invalid use of end"); | 161 ::error ("invalid use of end"); |