comparison liboctave/Array.cc @ 4708:e5639a6586c4

[project @ 2004-01-22 17:59:28 by jwe]
author jwe
date Thu, 22 Jan 2004 17:59:28 +0000
parents 8d4bb887f381
children cf141edca935
comparison
equal deleted inserted replaced
4707:8d4bb887f381 4708:e5639a6586c4
846 846
847 rep = new typename Array<T>::ArrayRep (len); 847 rep = new typename Array<T>::ArrayRep (len);
848 848
849 dim_vector dv_old = dimensions; 849 dim_vector dv_old = dimensions;
850 850
851 if (n > dv_old.length ())
852 {
853 dv_old.resize (n);
854
855 for (int i = dv_old.length (); i < n; i++)
856 dv_old.elem (i) = 1;
857 }
858
851 dimensions = dv; 859 dimensions = dv;
852 860
853 Array<int> ra_idx (dimensions.length (), 0); 861 Array<int> ra_idx (dimensions.length (), 0);
854 862
855 // XXX FIXME XXX -- it is much simpler to fill the whole array 863 // XXX FIXME XXX -- it is much simpler to fill the whole array
2237 2245
2238 if (rhs.length () > 2) 2246 if (rhs.length () > 2)
2239 { 2247 {
2240 dim_vector dv_tmp = rhs.squeeze().dims (); 2248 dim_vector dv_tmp = rhs.squeeze().dims ();
2241 2249
2242 if (dv_tmp.length () > 2) 2250 switch (dv_tmp.length ())
2243 { 2251 {
2244 (*current_liboctave_error_handler) 2252 case 1:
2245 ("Dimension mismatch"); 2253 if (rhs_nr == 1)
2246 2254 rhs_nc = dv_tmp.elem (0);
2247 return 0; 2255 break;
2248 } 2256
2249 2257 case 2:
2250 if (dv_tmp.length () == 1)
2251 if (rhs_nr == 1)
2252 rhs_nc = dv_tmp.elem (0);
2253
2254 else if (dv_tmp.length () == 2)
2255 {
2256 rhs_nr = dv_tmp.elem (0); 2258 rhs_nr = dv_tmp.elem (0);
2257 rhs_nc = dv_tmp.elem (1); 2259 rhs_nc = dv_tmp.elem (1);
2260 break;
2261
2262 default:
2263 (*current_liboctave_error_handler)
2264 ("Array<T>::assign2: Dimension mismatch");
2265 return 0;
2258 } 2266 }
2259 } 2267 }
2260 2268
2261 idx_vector *tmp = lhs.get_idx (); 2269 idx_vector *tmp = lhs.get_idx ();
2262 2270