Mercurial > octave-nkf
comparison libinterp/octave-value/ov-fcn-handle.cc @ 20615:729a85dafba8
use new string_value method to handle value extraction errors
* ov-class.cc, ov-classdef.cc, ov-fcn-handle.cc, ov-fcn-inline.cc,
ov.cc, pt-idx.cc: Use new string_value method.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 08 Oct 2015 17:55:57 -0400 |
parents | f90c8372b7ba |
children | f9c991dc5c1a |
comparison
equal
deleted
inserted
replaced
20614:10ec79b47808 | 20615:729a85dafba8 |
---|---|
1857 octave_value retval; | 1857 octave_value retval; |
1858 int nargin = args.length (); | 1858 int nargin = args.length (); |
1859 | 1859 |
1860 if (nargin == 1 || nargin == 2) | 1860 if (nargin == 1 || nargin == 2) |
1861 { | 1861 { |
1862 if (args(0).is_string ()) | 1862 std::string nm = args(0).string_value ("str2func: FCN_NAME must be a string"); |
1863 { | 1863 |
1864 std::string nm = args(0).string_value (); | 1864 if (nm[0] == '@') |
1865 if (nm[0] == '@') | 1865 { |
1866 { | 1866 int parse_status; |
1867 int parse_status; | 1867 octave_value anon_fcn_handle = |
1868 octave_value anon_fcn_handle = | 1868 eval_string (nm, true, parse_status); |
1869 eval_string (nm, true, parse_status); | 1869 |
1870 | 1870 if (parse_status == 0) |
1871 if (parse_status == 0) | 1871 retval = anon_fcn_handle; |
1872 retval = anon_fcn_handle; | |
1873 } | |
1874 else | |
1875 retval = make_fcn_handle (nm, nargin != 2); | |
1876 } | 1872 } |
1877 else | 1873 else |
1878 error ("str2func: FCN_NAME must be a string"); | 1874 retval = make_fcn_handle (nm, nargin != 2); |
1879 } | 1875 } |
1880 else | 1876 else |
1881 print_usage (); | 1877 print_usage (); |
1882 | 1878 |
1883 return retval; | 1879 return retval; |