# HG changeset patch # User John W. Eaton # Date 1242403751 14400 # Node ID ba7f45642ffe3f65a286ae8e414948899c66c2a7 # Parent 1f47a9404d9304bd98e71c7eb9674c4f2da93cf0 error.cc (Ferror): handle error struct argument diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,7 @@ 2009-05-15 John W. Eaton + * error.cc (Ferror): Handle error struct argument. + * ls-mat5.cc (save_mat5_binary_element): Avoid multiple calls to contents method. From David Bateman . (save_mat5_element_length): Use const Cell to avoid making copies diff --git a/src/error.cc b/src/error.cc --- a/src/error.cc +++ b/src/error.cc @@ -1004,6 +1004,35 @@ else return retval; } + else if (nargin == 1 && args(0).is_map ()) + { + octave_value_list tmp; + + Octave_map m = args(0).map_value (); + + if (m.numel () == 1) + { + if (m.contains ("message")) + { + Cell c = m.contents ("message"); + + if (! c.is_empty () && c(0).is_string ()) + nargs(0) = c(0).string_value (); + } + + if (m.contains ("identifier")) + { + Cell c = m.contents ("identifier"); + + if (! c.is_empty () && c(0).is_string ()) + id = c(0).string_value (); + } + + // FIXME -- also need to handle "stack" field in error + // structure, but that will require some more significant + // surgery on handle_message, error_with_id, etc. + } + } handle_message (error_with_id, id.c_str (), "unspecified error", nargs);