00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <octave/oct.h>
00025 #include <octave/parse.h>
00026
00027 DEFUN_DLD (funcdemo, args, nargout, "Function Demo")
00028 {
00029 int nargin = args.length();
00030 octave_value_list retval;
00031
00032 if (nargin < 2)
00033 print_usage ();
00034 else
00035 {
00036 octave_value_list newargs;
00037 for (octave_idx_type i = nargin - 1; i > 0; i--)
00038 newargs (i - 1) = args(i);
00039 if (args(0).is_function_handle ()
00040 || args(0).is_inline_function ())
00041 {
00042 octave_function *fcn = args(0).function_value ();
00043 if (! error_state)
00044 retval = feval (fcn, newargs, nargout);
00045 }
00046 else if (args(0).is_string ())
00047 {
00048 std::string fcn = args (0).string_value ();
00049 if (! error_state)
00050 retval = feval (fcn, newargs, nargout);
00051 }
00052 else
00053 error ("funcdemo: expected string,",
00054 " inline or function handle");
00055 }
00056 return retval;
00057 }