# HG changeset patch # User jwe # Date 955479725 0 # Node ID a908150a3a323eac7866c24834e18d84c13f9809 # Parent 96679fb690a4c5bc49273b7d3f193f8f662b1a17 [project @ 2000-04-11 19:02:03 by jwe] diff -r 96679fb690a4 -r a908150a3a32 liboctave/Array.cc --- a/liboctave/Array.cc Tue Apr 04 06:16:23 2000 +0000 +++ b/liboctave/Array.cc Tue Apr 11 19:02:05 2000 +0000 @@ -85,7 +85,6 @@ } #ifdef HEAVYWEIGHT_INDEXING - max_indices = 1; idx_count = 0; idx = 0; #endif diff -r 96679fb690a4 -r a908150a3a32 liboctave/ChangeLog --- a/liboctave/ChangeLog Tue Apr 04 06:16:23 2000 +0000 +++ b/liboctave/ChangeLog Tue Apr 11 19:02:05 2000 +0000 @@ -1,3 +1,7 @@ +2000-04-06 John W. Eaton + + * Array.cc (Array::operator =): Don't set max_indices to 1 here. + 2000-03-23 John W. Eaton * lo-sysdep.h: octave_chdir returns int, not bool. diff -r 96679fb690a4 -r a908150a3a32 src/ChangeLog --- a/src/ChangeLog Tue Apr 04 06:16:23 2000 +0000 +++ b/src/ChangeLog Tue Apr 11 19:02:05 2000 +0000 @@ -1,3 +1,11 @@ +2000-04-11 Joao Cardoso + + * sysdep.cc (kbhit): New arg, wait. + (raw_mode): Ditto. + (Fkbhit): If given an arg, call kbhit with wait = false. + + * DLD-FUNCTIONS/minmax.cc (Fmax, Fmin): Fix doc string. + 2000-04-04 John W. Eaton * dynamic-ld.cc (octave_dynamic_loader::do_load): Undo previous change. diff -r 96679fb690a4 -r a908150a3a32 src/DLD-FUNCTIONS/minmax.cc --- a/src/DLD-FUNCTIONS/minmax.cc Tue Apr 04 06:16:23 2000 +0000 +++ b/src/DLD-FUNCTIONS/minmax.cc Tue Apr 11 19:02:05 2000 +0000 @@ -287,7 +287,16 @@ returns the smallest element of @var{x}.\n\ \n\ For complex arguments, the magnitude of the elements are used for\n\ -comparison.") +comparison.\n\ +\n\ +If called with two output arguments, also returns the index of the\n\ +minimum value(s). Thus,\n\ +@example\n +[x, ix] = min ([1, 3, 0, 2, 5])\n\ +@end example\n\ +\n\ +@noindent\n\ +returns @var{x} = 0 and @var{ix} = 3.") { octave_value_list retval; @@ -514,7 +523,16 @@ returns the largest element of @var{x}.\n\ \n\ For complex arguments, the magnitude of the elements are used for\n\ -comparison.") +comparison. +\n\ +If called with two output arguments, also returns the index of the\n\ +maximum value(s). Thus,\n\ +@example\n +[x, ix] = max([1, 3, 5, 2, 5])\n\ +@end example\n\ +\n\ +@noindent\n\ +returns @var{x} = 5 and @var{ix} = 3.") { octave_value_list retval; diff -r 96679fb690a4 -r a908150a3a32 src/sysdep.cc --- a/src/sysdep.cc Tue Apr 04 06:16:23 2000 +0000 +++ b/src/sysdep.cc Tue Apr 11 19:02:05 2000 +0000 @@ -169,9 +169,9 @@ // It doesn't matter whether an input \n is mapped to \r, or vice versa. void -raw_mode (int on) +raw_mode (bool on, bool wait) { - static int curr_on = 0; + static bool curr_on = false; int tty_fd = STDIN_FILENO; if (! isatty (tty_fd)) @@ -215,7 +215,10 @@ #if defined (ONLRET) s.c_oflag &= ~(ONLRET); #endif - s.c_cc[VMIN] = 1; + if (wait) + s.c_cc[VMIN] = 1; + else + s.c_cc[VMIN] = 0; s.c_cc[VTIME] = 0; } else @@ -257,7 +260,10 @@ #if defined (ONLRET) s.c_oflag &= ~(ONLRET); #endif - s.c_cc[VMIN] = 1; + if (wait) + s.c_cc[VMIN] = 1; + else + s.c_cc[VMIN] = 0; s.c_cc[VTIME] = 0; } else @@ -309,12 +315,14 @@ // Read one character from the terminal. int -kbhit (void) +kbhit (bool wait) { int c; - raw_mode (1); + raw_mode (1, wait); c = std::cin.get (); - raw_mode (0); + if (std::cin.fail()) + std::cin.clear (); + raw_mode (0, 1); return c; } @@ -396,10 +404,11 @@ // XXX FIXME XXX -- perhaps kbhit should also be able to print a prompt? -DEFUN (kbhit, , , +DEFUN (kbhit, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} kbhit ()\n\ -Read a single keystroke from the keyboard. For example,\n\ +Read a single keystroke from the keyboard. If called with one\n\ +argument, don't wait for a keypress. For example,\n\ \n\ @example\n\ x = kbhit ();\n\ @@ -408,15 +417,34 @@ @noindent\n\ will set @var{x} to the next character typed at the keyboard as soon as\n\ it is typed.\n\ +\n\ +@example\n\ +x = kbhit (1);\n\ +@end example\n\ +\n\ +@noindent\n\ +identical to the above example, but don't wait for a keypress,\n\ +returning the empty string if no key is available.\n\ @end deftypefn") { octave_value_list retval; // XXX FIXME XXX -- add timeout and default value args? + int nargin = args.length (); + if (interactive) { - int c = kbhit (); + int c; + + if (nargin == 1) + c = kbhit (false); + else + c = kbhit (true); + + if (c == -1) + c = 0; + char *s = new char [2]; s[0] = c; s[1] = '\0'; diff -r 96679fb690a4 -r a908150a3a32 src/sysdep.h --- a/src/sysdep.h Tue Apr 04 06:16:23 2000 +0000 +++ b/src/sysdep.h Tue Apr 11 19:02:05 2000 +0000 @@ -30,8 +30,9 @@ extern void sysdep_init (void); -extern void raw_mode (int); -extern int kbhit (void); +extern void raw_mode (bool, bool wait = true); + +extern int kbhit (bool wait = true); #endif