comparison src/ov-cell.cc @ 7285:c8d362c69013

[project @ 2007-12-11 01:54:19 by jwe]
author jwe
date Tue, 11 Dec 2007 01:54:19 +0000
parents 1f16da18d85d
children 8c32f95c2639 1a7ef7a48be1
comparison
equal deleted inserted replaced
7284:a239de118fa6 7285:c8d362c69013
340 string_vector 340 string_vector
341 octave_cell::all_strings (bool pad) const 341 octave_cell::all_strings (bool pad) const
342 { 342 {
343 string_vector retval; 343 string_vector retval;
344 344
345 octave_idx_type nr = rows (); 345 octave_idx_type nel = numel ();
346 octave_idx_type nc = columns ();
347 346
348 int n_elts = 0; 347 int n_elts = 0;
349 348
350 octave_idx_type max_len = 0; 349 octave_idx_type max_len = 0;
351 350
352 for (octave_idx_type j = 0; j < nc; j++) 351 for (octave_idx_type i = 0; i < nel; i++)
353 { 352 {
354 for (octave_idx_type i = 0; i < nr; i++) 353 string_vector s = matrix(i).all_strings ();
355 { 354
356 string_vector s = matrix(i,j).all_strings (); 355 if (error_state)
357 356 return retval;
358 if (error_state) 357
359 return retval; 358 octave_idx_type s_len = s.length ();
360 359
361 n_elts += s.length (); 360 n_elts += s_len ? s_len : 1;
362 361
363 octave_idx_type s_max_len = s.max_length (); 362 octave_idx_type s_max_len = s.max_length ();
364 363
365 if (s_max_len > max_len) 364 if (s_max_len > max_len)
366 max_len = s_max_len; 365 max_len = s_max_len;
367 }
368 } 366 }
369 367
370 retval.resize (n_elts); 368 retval.resize (n_elts);
371 369
372 octave_idx_type k = 0; 370 octave_idx_type k = 0;
373 371
374 for (octave_idx_type j = 0; j < nc; j++) 372 for (octave_idx_type i = 0; i < nel; i++)
375 { 373 {
376 for (octave_idx_type i = 0; i < nr; i++) 374 string_vector s = matrix(i).all_strings ();
377 { 375
378 string_vector s = matrix(i,j).all_strings (); 376 octave_idx_type s_len = s.length ();
379 377
380 int n = s.length (); 378 if (s_len)
381 379 {
382 for (octave_idx_type ii = 0; ii < n; ii++) 380 for (octave_idx_type j = 0; j < s_len; j++)
383 { 381 {
384 std::string t = s[ii]; 382 std::string t = s[j];
385 int t_len = t.length (); 383 int t_len = t.length ();
386 384
387 if (pad && max_len > t_len) 385 if (pad && max_len > t_len)
388 t += std::string (max_len - t_len, ' '); 386 t += std::string (max_len - t_len, ' ');
389 387
390 retval[k++] = t; 388 retval[k++] = t;
391 } 389 }
392 } 390 }
391 else if (pad)
392 retval[k++] = std::string (max_len, ' ');
393 else
394 retval[k++] = std::string ();
393 } 395 }
394 396
395 return retval; 397 return retval;
396 } 398 }
397 399