Mercurial > hg > octave-lyh
diff src/strfns.cc @ 8353:349a555729a9
keep empty strings in char
author | Thorsten Meyer <thorsten.meyier@gmx.de> |
---|---|
date | Sat, 15 Nov 2008 00:58:17 +0100 |
parents | 26d8a92644de |
children | 8dff9cba15fe |
line wrap: on
line diff
--- a/src/strfns.cc +++ b/src/strfns.cc @@ -90,7 +90,10 @@ return retval; } - n_elts += s.length (); + if (s.length () > 0) + n_elts += s.length (); + else + n_elts += 1; int s_max_len = s.max_length (); @@ -108,16 +111,23 @@ int n = s.length (); - for (int j = 0; j < n; j++) - { - std::string t = s[j]; - int t_len = t.length (); + if (n > 0) + { + for (int j = 0; j < n; j++) + { + std::string t = s[j]; + int t_len = t.length (); - if (max_len > t_len) - t += std::string (max_len - t_len, ' '); + if (max_len > t_len) + t += std::string (max_len - t_len, ' '); - result[k++] = t; - } + result[k++] = t; + } + } + else + { + result[k++] = std::string (max_len, ' '); + } } retval = octave_value (result, '\''); @@ -128,6 +138,20 @@ return retval; } +/* +%!error <Invalid call to char> char() +%!assert (char (100) == "d"); +%!assert (all(char (100,100) == ["d";"d"])); +%!assert (all(char ({100,100}) == ["d";"d"])); +%!assert (all(char ([100,100]) == ["dd"])); +%!assert (all(char ({100,{100}}) == ["d";"d"])); +%!assert (all(char (100, [], 100) == ["d";" ";"d"])) +%!assert (all(char ({100, [], 100}) == ["d";" ";"d"])) +%!assert (all(char ({100,{100, {""}}}) == ["d";"d";" "])) +%!assert (all(char (["a";"be"], {"c", 100}) == ["a";"be";"c";"d"])) +*/ + + DEFUN (ischar, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} ischar (@var{a})\n\