comparison libinterp/corefcn/data.cc @ 20617:ba2b07c13913

use new string_value method to handle value extraction errors * __dispatch__.cc, balance.cc, colloc.cc, conv2.cc, data.cc, debug.cc, graphics.cc, input.cc, matrix_type.cc, oct-hist.cc, schur.cc, spparms.cc, symtab.cc, sysdep.cc, toplev.cc, utils.cc: Use new string_value method.
author John W. Eaton <jwe@octave.org>
date Fri, 09 Oct 2015 10:06:39 -0400
parents 780431fc4137
children 5fc798a9b32c
comparison
equal deleted inserted replaced
20616:fd0efcdb3718 20617:ba2b07c13913
6639 { 6639 {
6640 print_usage (); 6640 print_usage ();
6641 return retval; 6641 return retval;
6642 } 6642 }
6643 6643
6644 if (! args(2).is_string ()) 6644 std::string mode = args(2).string_value ("sort: MODE must be a string");
6645 { 6645
6646 error ("sort: MODE must be a string");
6647 return retval;
6648 }
6649 std::string mode = args(2).string_value ();
6650 if (mode == "ascend") 6646 if (mode == "ascend")
6651 smode = ASCENDING; 6647 smode = ASCENDING;
6652 else if (mode == "descend") 6648 else if (mode == "descend")
6653 smode = DESCENDING; 6649 smode = DESCENDING;
6654 else 6650 else
6922 // FIXME: we initialize to UNSORTED here to avoid a GCC warning 6918 // FIXME: we initialize to UNSORTED here to avoid a GCC warning
6923 // about possibly using sortmode uninitialized. 6919 // about possibly using sortmode uninitialized.
6924 // FIXME: shouldn't these modes be scoped inside a class? 6920 // FIXME: shouldn't these modes be scoped inside a class?
6925 sortmode smode = UNSORTED; 6921 sortmode smode = UNSORTED;
6926 6922
6927 if (arg.is_string ()) 6923 std::string mode = arg.string_value ("issorted: expecting %s argument to be a string", argn);
6928 { 6924
6929 std::string mode = arg.string_value (); 6925 if (mode == "ascending")
6930 if (mode == "ascending") 6926 smode = ASCENDING;
6931 smode = ASCENDING; 6927 else if (mode == "descending")
6932 else if (mode == "descending") 6928 smode = DESCENDING;
6933 smode = DESCENDING; 6929 else if (mode == "either")
6934 else if (mode == "either") 6930 smode = UNSORTED;
6935 smode = UNSORTED;
6936 else
6937 error ("issorted: MODE must be \"ascending\", \"descending\", or \"either\"");
6938 }
6939 else 6931 else
6940 error ("issorted: expecting %s argument to be a string", argn); 6932 error ("issorted: MODE must be \"ascending\", \"descending\", or \"either\"");
6941 6933
6942 return smode; 6934 return smode;
6943 } 6935 }
6944 6936
6945 DEFUN (issorted, args, , 6937 DEFUN (issorted, args, ,
6981 octave_value mode_arg; 6973 octave_value mode_arg;
6982 6974
6983 if (nargin == 3) 6975 if (nargin == 3)
6984 smode = get_sort_mode_option (args(2), "third"); 6976 smode = get_sort_mode_option (args(2), "third");
6985 6977
6986 if (args(1).is_string ()) 6978 std::string tmp = args(1).string_value ("issorted: second argument must be a string");
6987 { 6979 if (tmp == "rows")
6988 std::string tmp = args(1).string_value (); 6980 by_rows = true;
6989 if (tmp == "rows")
6990 by_rows = true;
6991 else
6992 smode = get_sort_mode_option (args(1), "second");
6993 }
6994 else 6981 else
6995 error ("issorted: second argument must be a string"); 6982 smode = get_sort_mode_option (args(1), "second");
6996 } 6983 }
6997 6984
6998 octave_value arg = args(0); 6985 octave_value arg = args(0);
6999 6986
7000 if (by_rows) 6987 if (by_rows)