1999-10-26 John W. Eaton * DLD-FUNCTIONS/lsode.cc (Flsode): Be sure to call unwind_protect::run_frame before returning. * DLD-FUNCTIONS/quad.cc (Fquad): Likewise. * DLD-FUNCTIONS/fsolve.cc (Ffsolve): Likewise. * DLD-FUNCTIONS/dassl.cc (Fdassl): Likewise. * load-save.cc (read_mat_ascii_data): When reading from tmp_stream, check its state, not the state of is. * defun-dld.h (INSTALL_DLD_FCN, INSTALL_DLD_FCNS): New macros. * DLD-FUNCTIONS/dassl.cc: Use them. * DLD-FUNCTIONS/lsode.cc: Ditto. * DLD-FUNCTIONS/fsolve.cc: Ditto. * DLD-FUNCTIONS/quad.cc: Ditto. * DLD-FUNCTIONS/time.cc: Ditto. * DLD-FUNCTIONS/besselj.cc: Ditto. * DLD-FUNCTIONS/getgrent.cc: Ditto. * DLD-FUNCTIONS/getpwent.cc: Ditto. * DLD-FUNCTIONS/inv.cc: Ditto. * DLD-FUNCTIONS/log.cc: Ditto. * DLD-FUNCTIONS/minmax.cc: Ditto. * DLD-FUNCTIONS/rand.cc: Ditto. * data.cc (Flinspace): Let linspace functions handle errors. * mkgendoc (print_doc_string): Handle quoted names. * file-io.cc (symbols_of_file_io): Use DEFCONSTX for SEEK_SET, SEEK_CUR, and SEEK_END. * defun.h (DEFCONST): Just pass name, defn, and doc to DEFCONST_INTERNAL. (DEFCONSTX): Likewise, pass name, defn, and doc to DEFCONSTX_INTERNAL. * defun-int.h [MKBUILTINS] (DEFCONST_INTERNAL): Likewise, pass name, defn, and doc to XDEFCONST_INTERNAL. [MKBUILTINS] (DEFCONSTX_INTERNAL): New macro. (INSTALL_CONST): New macro. [! MKBUILTINS] (DEFCONST_INTERNAL): Use it to handle details here. [! MKBUILTINS] (DEFCONSTX_INTERNAL): Ditto. * mkgendoc: Fix definition of XDEFCONST_INTERNAL to match. * mkbuiltins: Ditto. * mkdefs: Match spaces before BEGIN_INSTALL_BUILTIN. * Makefile.in (DEFUN_PATTERN): Also match DEFUN_MAPPER. 1999-10-26 Ben Sapp * data.cc (VI, VInf, VJ, VNaN, Ve, Veps, Vfalse, Vi, Vinf, Vj, Vnan, Vpi, Vrealmax, Vrealmin): Texinfoize doc strings. * mappers.cc (Fabs, Facos, Facosh, Fangle, Farg, Fasin, Fasinh, Fatan, Fatanh, Fceil, Fconj, Fcos, Fcosh, Ferf, Ferfc, Fexp, Ffinite, Ffix, Ffloor, Fgamma, Fimag, Flgamma, Flog, Flog10, Freal, Fround, Fsign, Fsin, Fsinh, Fsqrt, Ftan, Ftanh): Ditto. 1999-10-23 Ben Sapp * data.cc (Fis_matrix): Texinfoize doc string. * ov.cc (Vpropagate_empty_matrices): Ditto. * pr-output.cc (Vfixed_point_format, Voutput_max_field_width, Voutput_precision, Vprint_empty_dimensions, Vsplit_long_rows): Ditto. * pt-mat.cc:cd (Vempty_list_elements_ok): Ditto. 1999-10-22 John W. Eaton * ov-usr-fcn.cc (octave_user_function::do_index_op): If Vmax_recursion_depth is exceeded, call unwind_protect::run_frame before returning. 1999-10-21 John W. Eaton * cutils.c (do_octave_usleep): Handle useconds > 1e6. * variables.h (is_valid_function): Provide default values for the string argument. * symtab.cc (variable_reference): Maybe print warning (or error) about variables that hide functions of the same name. (symbol_record::define (const octave_value&, unsigned int)): Ditto. (Vvariables_can_hide_functions): New static variable. (variables_can_hide_functions, symbols_of_symtab): New functions. * cutils.c: New file. * Makefile.in (SOURCES): Add it to the list. * utils.h: Declare octave_usleep here. * dirfns.cc (Fls): Simply all octave_usleep. * oct-procbuf.cc (octave_procbuf::open): Ditto. * sysdep.cc (Fusleep): Ditto. * toplev.cc (run_command_and_return_output): Ditto. 1999-10-20 John W. Eaton * data.cc (make_diag (const octave_value&, const octave_value&)): Delete special cases for scalars and simply attempt conversion of first arg to a matrix value. If that fails, we will still see an error message. * Makefile.in (DISTFILES): Add mkgendoc to the list. 1999-10-19 John W. Eaton * Makefile.in (stmp-pic): New target. ($(PICOBJS)): Depend on stmp-pic, not pic. * ov.h (get_rep): New function. * help.cc (display_help_text): Pass definitions for VERSION, OCTAVE_HOME, and TARGETHOSTTYPE to makeinfo. * DLD-FUNCTIONS/getgrent.cc: Texinfoize all doc strings. * DLD-FUNCTIONS/getpwent.cc: Ditto. * DLD-FUNCTIONS/getrusage.cc: Ditto. * DLD-FUNCTIONS/time.cc: Ditto. * defaults.cc (EXEC_PATH, OCTAVE_VERSION): Texinfoize doc strings. * dirfns.cc (Fcd, Fls, Fpwd, Freaddir, Fmkdir, Frmdir, Frename, Fglob, Ffnmatch): Ditto. * file-io.cc (Fpopen, Fpclose, Fumask): Ditto. * sysdep.cc (Fgetenv, Fputenv, Fpause, Fsleep, Fusleep, Fisieee, Ftilde_expand): Ditto. * toplev.cc (Fcomputer, Fsystem, Foctave_config_info): Ditto. * utils.cc (Ffile_in_path): Ditto. * syscalls.cc (Fdup2, Fexec, Ffcntl, Ffork, Fgetpgrp, Fgetpid, Fgetppid, Fgetegid, Fgetgid, Fgeteuid, Fgetuid, Fmkfifo, Fpipe, Fstat, Funlink, Fwaitpid, F): Ditto. (Flstat): Refer to stat for doc. * help.cc (looks_like_texinfo): New function. (display_help_text): Use it to see if the doc string looks like Texinfo source. If so, use makeinfo to format the text before displaying it. * mkgendoc: New script. * Makefile.in: Use it to create gendoc.cc, which is compiled and run to create DOCSTRINGS file from sources. 1999-10-18 John W. Eaton * help.cc (help_from_info): Print `unable to find info' message if try_info returns 127; otherwise, print `not indexed' message. Don't sleep after printing `not indexed' message. 1999-10-14 John W. Eaton * parse.y (fold (tree_unary_expression *)): New function. (make_prefix_op, make_postfix_op): Use it. 1999-10-13 John W. Eaton * Makefile.in (oct-gperf.h): Ask for ANSI-C output from gperf (requires gperf-2.7 or later). * sighandlers.cc (sigwinch_handler): New function. (install_signal_handlers): Install it. Thu Sep 23 19:49:36 1999 John W. Eaton * toplev.cc (Fsystem): For async case, use execl instead of system, avoiding the need to exit after executing the subprocess. Thu Sep 9 17:09:23 1999 John W. Eaton * oct-stream.cc (get_size): Allow zero values. (get_size): New arg, one_elt_size_spec. (do_scanf_conv): New arg, `conv_count'. Change instantiation requests and all callers. (octave_base_stream::do_scanf): Improve scanning of strings. (octave_base_stream::do_oscanf): Remove size limit on %s conversions. * oct-stream.cc (scanf_format_list::all_character_conversions): Don't count %p as a character conversion. Tue Sep 7 08:31:04 1999 John W. Eaton * pr-output.cc (set_real_matrix_format, set_complex_matrix_format): Move check for fixed_point_format ahead of check for int_or_inf_or_nan. Thu Sep 2 11:54:51 1999 John W. Eaton * oct-obj.cc (make_argv): Correctly handle empty strings as args. Fri Aug 20 08:17:52 1999 John W. Eaton * DLD-FUNCTIONS/quad.cc (quad): Delete unused label. * unwind-prot.cc (saved_variable::~saved_variable): Don't try to delete gen_ptr_value here. Mon Aug 16 21:34:33 1999 John W. Eaton * lex.l (next_token_is_sep_op): New function. (handle_close_brace, maybe_unput_comma): Use it. (have_continuation): Also handle CRLF here. Wed Aug 11 16:06:57 1999 John W. Eaton * file-io.cc (Ffopen): Make fopen ("filename") work and imply that MODE = "r". Wed Jul 21 15:38:52 1999 John W. Eaton * help.cc (display_names_from_help_list): Sort names before listing them. (print_symbol_type, Ftype): Also handle built-in constants. (LIST_SYMBOLS): Correct call to symbol_table::name_list. (simple_help): List constants here too. List constants and variables before functions, not after. Sort names before listing them. * variables.cc (do_who): Display built-in constants in a separate section. * error.cc (bind_global_error_variable, clear_global_error_variable): Call bind_builtin_constant, not bind_builtin_variable to set __error_text__. * octave.cc (intern_argv): Likewise, for argv and __argv__. * defun.cc (install_builtin_constant): Move function guts to bind_builtin_constant in variables.cc. * variables.cc (bind_builtin_constant): New function. * symtab.cc (symbol_record::define, symbol_record::variable_reference): Handle constants the same as functions. (symbol_record::link_to_builtin_variable): New function. (symbol_record::define_builtin_const): New function. (symbol_record::define_as_fcn): Delete unused function. (symbol_record::read_only_error): Handle constants the same as variables. * symtab.h (symbol_record::BUILTIN_CONSTANT): New enum value. (symbol_record::symbol_type): Increase width to 7 bits. (symbol_record::symbol_def::is_constant): New function. (symbol_record::symbol_def::is_builtin_constant): New function. (symbol_record::is_constant): New function. (symbol_record::is_builtin_constant): New function. (SYMTAB_ALL_TYPES): Add symbol_record::BUILTIN_CONSTANT. * variables.cc (link_to_builtin_variable): Delete unused function. (link_to_builtin_or_function): Handle built-in constants here too. * defun.cc (install_builtin_variable): Delete inst_as_fcn arg. (install_builtin_constant): New function. (install_builtin_variable_as_function): Delete unused function. * defun.h (DEFVAR_INTERNAL): Delete inst_as_fcn arg. (DEFCONST_INTERNAL): New macro. * defun.h (DEFVAR): Delete inst_as_fcn arg. (DEFCONST, DEFCONSTX): Define using DEFCONST_INTERNAL instead of DEFVAR_INTERNAL. * data.cc, defaults.cc, error.cc, help.cc, input.cc, lex.l, load-save.cc, oct-hist.cc, oct-procbuf.cc, ov-fcn.h, ov-usr-fcn.cc, ov.cc, pager.cc, parse.y, pr-output.cc, pt-assign.cc, pt-decl.cc, pt-mat.cc, pt-plot.cc, pt-stmt.cc, toplev.cc, variables.cc: Change all invocations of DEFVAR to match new definition. * data.cc (symbols_of_data): Add DEFCONSTs for true and false. Thu Jul 15 10:59:42 1999 John W. Eaton * data.cc (Fis_bool, Fis_complex, Fisempty, Fisnumeric, Fis_list, Fis_map, Fis_struct): Return bool object. (Fisreal): New function. * ov-str-mat.h (octave_char_matrix_str): Only return true if Vimplicit_str_to_num_ok is also true. * DLD-FUNCTIONS/time.cc (Ftime): Print usage message if any arguments are supplied. * variables.cc (symbol_out_of_date): Call octave_time for time stamps. * fn-cache.h (octave_fcn_file_name_cache::timestamp): Now octave_time object. * strftime.c: Move to liboctave directory. * Makefile.in (DIST_SRC): Delete from list. * ov-usr-fcn.h (octave_user_function::t_parsed, octave_user_function::t_checked): Now octave_time objects. (octave_user_function::time_parsed, (octave_user_function::time_checked): Return value is now octave_time object. (octave_user_function::mark_fcn_file_up_to_date)): Arg is now octave_time object. * ov-fcn.h (octave_function::mark_fcn_file_up_to_date)): Arg is now octave_time object. (octave_function::time_parsed, octave_function::time_checked): Return value is now octave_time object. * input.cc (Vlast_prompt_time): Now an octave_time object. (octave_gets): Call octave_time::stamp() to set Vlast_prompt_time. * DLD-FUNCTIONS/time.cc (mk_tm_map, extract_tm, Ftime, Fgmtime, Flocaltime, Fmktime, Fstrftime): Use new classes defined in liboctave/oct-time.cc instead of accessing C functions directly. Wed Jul 14 17:38:46 1999 John W. Eaton * systime.h: Move to liboctave directory. * Makefile.in (INCLUDES): Delete it from the list Tue Jul 13 14:34:57 1999 John W. Eaton * sighandlers.cc (sigchld_handler): Only wait for processes in octave_child_list. * toplev.cc (cmd_status): Delete unused static variable. (cmd_death_handler): Delete unused function. (run_command_and_return_output): Don't add cmd_death_handler to octave_child_list. Simply extract command exit status from calling close() on the procstream object. Mon Jul 12 22:38:50 1999 John W. Eaton * defun.h (DEFUN_MAPPER): Handle new args, d_b_map and c_b_map. * defun-int.h (DEFUN_MAPPER_INTERNAL): Likewise. * mappers.cc (install_mapper_functions): Supply new args to all uses of DEFUN_MAPPER. * ov-mapper.cc (octave_mapper::apply): Handle mapper functions that return bool objects. * ov-mapper.h (octave_mapper::d_b_mapper, octave_mapper::c_b_mapper): New typedefs. (octave_mapper::octave_mapper): Handle new mapper function types. * DLD-FUNCTIONS/minmax.cc: Do a better job of handling NaNs. Sun Jul 11 13:15:17 1999 John W. Eaton * pr-output.cc (do_plus_format (ostream&, double)): New function. (octave_print_internal (ostream&, double, bool)): Use it. (octave_print_internal (ostream&, const Matrix&, bool, int)): Ditto. * pr-output.cc (do_plus_format (ostream&, const Complex&)): New function. (octave_print_internal (ostream&, const Complex&, bool)): Use it. (octave_print_internal (ostream&, const ComplexMatrix&, bool, int)): Ditto. Sun Jun 20 23:04:00 1999 John W. Eaton * sysdep.cc: Include sys/ioctl.h if available. Sat Jun 19 12:07:16 1999 John W. Eaton * variables.cc (do_who): Make pattern and multiple non-option arguments work. Mon Jun 7 09:54:51 1999 John W. Eaton * lex.l (next_token_is_bin_op, next_token_is_postfix_unary_op, handle_number): Delete yytext arg. Change all callers. (next_token_is_postfix_unary_op): Check the first character obtained from yyinput before calling it again. (next_token_is_bin_op): Do a more thorough check. (handle_identifier): Also enter token in local symbol table if the following token is a dot and it looks like a binary operator. (whitespace_in_literal_matrix): Now static. * lex.l: Always use unput, not yyunput. Fri May 28 11:02:37 1999 John W. Eaton * DLD-FUNCTIONS/chol.cc (Fchol): If two output arguments, never produce error message. Thu May 27 18:28:35 1999 John W. Eaton * DLD-FUNCTIONS/chol.cc (Fchol): Also return info as second output. * DLD-FUNCTIONS/minmax.cc (max (const ComplexMatrix&, const ComplexMatrix&)): Correct test for real columns only. (min (const ComplexMatrix&, const ComplexMatrix&)): Likewise. Wed Apr 14 12:54:25 1999 John W. Eaton * DLD-FUNCTIONS/dassl.cc (Fdassl): Prevent recursive calls. * DLD-FUNCTIONS/fsolve.cc (Ffsolve): Likewise. * DLD-FUNCTIONS/lsode.cc (Flsode): Likewise. * DLD-FUNCTIONS/quad.cc (Fquad): Likewise. * file-io.cc (Fsscanf, Ffscanf): Doc fix. Sat Mar 27 11:07:51 1999 John W. Eaton * ov.h (octave_value::count): New function. * symtab.cc (symbol_record::dump_symbol_info): New function. * symtab.cc (symbol_record::symbol_def::dump_symbol_info): Ditto. * variables.cc (F__dump_symbol_info__): Ditto. * pt-misc.cc (tree_parameter_list::clear): New function. * ov-usr-fcn.h (octave_user_function::clear_args_passed): Ditto. * ov-usr-fcn.cc (clear_param_list): New function. (clear_args_passed): New function. (octave_user_function::do_index_op): Use them to decrement reference counts on local variables. Fri Mar 26 00:51:53 1999 John W. Eaton * Makefile.in (libraries): Use the libfoo.a(objects) method of creating static libs. * defaults.cc (symbols_of_defaults): Initialize LOADPATH to Vload_path, not ":". Thu Mar 18 12:09:23 1999 John W. Eaton * data.cc (Fisnumeric): Fix typo. Thu Mar 4 02:17:04 1999 James Macnicol * file-io.cc (Ffread, Ffwrite): Add uint16 and uint32 data types to doc string. Wed Mar 3 11:55:17 1999 John W. Eaton * lex.l (handle_string): Allow "" to pass through unchanged if working on a gset command. Tue Mar 2 01:36:29 1999 John W. Eaton * variables.cc (Fexist): If a variable isn't defined, only go on to look for a global by the same name if we are at the top level. Fri Jan 29 02:18:36 1999 John W. Eaton * version.h (OCTAVE_NAME_AND_VERSION): Say `GNU Octave', not just Octave. Thu Jan 28 21:29:16 1999 John W. Eaton * toplev.cc (Fcomputer): Use CANONICAL_HOST_TYPE, not TARGET_HOST_TYPE. (octave_config_info): Likewise. * version.h: Ditto. * sysdep.cc (Fpause): Flush output before getting user input. Wed Jan 27 14:18:29 1999 John W. Eaton * Makefile.in (DEFFUN_PATTERN, DEFVAR_PATTERN): Use egrep again. Make the patterns work with stupid egreps that don't like empty elements in alternation patterns. Fri Jan 22 04:41:48 1999 John W. Eaton * load-save.cc (save_ascii_data): Check for string type first, then range, then the rest. (save_binary_data): Ditto. * pager.cc (more_than_a_screenful): Accept length as second arg. Handle long lines properly, assuming the terminal wraps long lines. (octave_pager_buf::do_sync): Accept length of data as second arg. Use write instead of << to put characters on output stream. (octave_pager_buf::sync): Don't assume data ends at first NUL. (octave_diary_buf::sync): Ditto. Thu Jan 21 22:15:23 1999 John W. Eaton * load-save.cc (save_mat_binary_data): Check for string type first, then range, then the rest. Wed Jan 20 12:01:14 1999 John W. Eaton * oct-stream.cc (octave_base_stream::do_scanf): Handle short and long ints correctly. Fri Jan 15 13:04:58 1999 John W. Eaton * parse.y (end_error): Handle case of endswitch too. * Makefile.in: Use basic regular expressions and grep instead of egrep to find files that contain DEFVAR, DEFCONST, or DEFUN. Wed Dec 9 14:14:11 1998 John W. Eaton * Makefile.in (octave): Add $(RDYNAMIC_FLAG) to link command. Fri Dec 4 20:26:33 1998 John W. Eaton * DLD-FUNCTIONS/time.cc (Fstrftime): Make it work even when not using the GNU version of strftime, which allows passing NULL for the buffer to determine the required size of the buffer. Wed Dec 2 22:38:40 1998 John W. Eaton * utils.cc (file_in_loadpath): Expect argc == 2, not 3. Tue Nov 24 23:38:19 1998 Eric Norum * mkbuiltins: Also strip off leading `./' from file names. * mkops: Ditto. Tue Nov 24 23:24:26 1998 John W. Eaton * strftime.c: Surround everything with #ifdef HAVE_STRFTIME / #endif. * lex.h (YY_FATAL_ERROR): Call yy_falta_error after jump_to_top_level to avoid gcc warning. Fri Nov 20 13:34:47 1998 John W. Eaton * ov-bool.h, ov-bool.cc (class octave_bool): Derive from octave_base_scalar and get common functions via derivation. * ov-scalar.h, ov-scalar.cc (class octave_scalar): Ditto. * ov-complex.h, ov-complex.cc (class octave_complex): Ditto. * ov-base-scalar.h, ov-base-scalar.cc (class octave_base_scalar): New files for new class definition. Put common scalar data type stuff here. * Makefile.in (OV_INCLUDES, OV_SRC): Add them to the lists. Thu Nov 19 14:30:25 1998 John W. Eaton * dynamic-ld.cc (octave_dynamic_loader::mangle_name): Prepend underscore here. (octave_dynamic_loader::load_fcn_from_dot_oct_file): Not here. * ov-re-mat.h (octave_matrix_value): Delete experimental code for handling structure references for things like .rows, .cols, etc. Wed Nov 18 01:18:46 1998 John W. Eaton * Makefile.in (VAR_FILES): Be more careful about matching. (DEF_FILES): Likewise. * ov-base-mat.h, ov-base-mat.cc, ov-bool-mat.h, ov-bool-mat.cc, ov-ch-mat.h, ov-ch-mat.cc, ov-cx-mat.h, ov-cx-mat.cc, ov-re-mat.h, ov-re-mat.cc: Move default definition of all, any, is_matrix_type, is_numeric_type, valid_as_zero_index, and do_index_op to base class. Provide definitions that override the defaults where necessary. * mappers.cc: Don't include lo-specfun.h. Tue Nov 17 14:35:56 1998 John W. Eaton * besselj.cc (Fbesselh, Fairy); New functions. (Fbesselj, Fbessely, Fbesselk, Fbesseli): Update doc strings. (do_bessel): Handle additional args. Fri Nov 13 14:47:11 1998 John W. Eaton * lex.l (NUMBER): Allow hexadecimal constants. (looks_like_hex): New function. (handle_number): Check for hexadecimal constants and convert them to unsigned integer values. Thu Nov 12 11:13:24 1998 John W. Eaton * input.cc (gnu_readline): Check for EOF from command_editor::readline. * ov-str-mat.h, ov-str-mat.cc (class octave_char_matrix_str): Get common functions via new derivation scheme. * ov-bool-mat.h, ov-bool-mat.cc (class octave_bool_matrix): Derive from octave_base_matrix and get common functions via derivation. * ov-ch-mat.h, ov-ch-mat.cc (class octave_char_matrix): Ditto. * ov-cx-mat.h, ov-cx-mat.cc (class octave_complex_matrix): Ditto. * ov-re-mat.h, ov-re-mat.cc (class octave_real_matrix): Ditto. * ov-base-mat.h, ov-base-mat.cc (class octave_base_matrix): New files for new class definition. Put common matrix data type stuff here. * ov-list.cc (Fnth): New function. * ov-list.cc (octave_list::do_index_op): Allow more complex indexing. * oct-obj.cc (octave_value_list::index): New function. (octave_value_list::octve_value_list (Array)): New private constructor. * ov-list.cc (Fsplice): Fix docstring to match. * oct-obj.cc (octave_value_list::splice): Allow special case splice (x, length(x)+1, 0, y) to be equivalent to append (x, y). * ov-list.cc (Fappend): If an arg is a list, concatenate the lists instead of appending arg as a single element. Wed Nov 11 14:07:27 1998 John W. Eaton * load-save.cc (get_mat_data_input_line): New function. (get_lines_and_columns): Use it here. (read_mat_ascii_data): And here and do our own reading instead of using Matrix::operator<<. Tue Nov 10 16:12:25 1998 John W. Eaton * parse.y (make_constant): Initialize retval to 0. * toplev.h (clean_up_and_exit (void)): Delete declaration. * toplev.cc (do_octave_atexit): Move guts of clean_up_for_exit here, but ensure that the actions are only executed once. * octave.cc (main): Don't register cleanup_tmp_files with atexit. * ov.h, ov.cc (class octave_value): Use DECLARE_OCTAVE_ALLOCATOR and DEFINE_OCTAVE_ALLOCATOR for uniform declaration and definition of allocator functions. Use DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA and DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA for uniform declaration and definition of type id functions and data. * ov-usr-fcn.h, ov-usr-fcn.cc (class octave_user_function): Ditto. * ov-scalar.h, ov-scalar.cc (class octave_scalar): Ditto. * ov-re-mat.h ov-re-mat.cc (class octave_matrix): Ditto. * ov-range.h, ov-range.cc (class octave_range): Ditto. * ov-mapper.h, ov-mapper.cc (class octave_mapper): Ditto. * ov-list.h, ov-list.cc (class octave_list): Ditto. * ov-file.h, ov-file.cc (class octave_file): Ditto. * ov-fcn.h, ov-fcn.cc (class octave_function): Ditto. * ov-cx-mat.h, ov-cx-mat.cc (class octave_complex_matrix): Ditto. * ov-complex.h, ov-complex.cc (class octave_complex): Ditto. * ov-ch-mat.h, ov-ch-mat.cc (octave_char_matrix): Ditto. * ov-builtin.h, ov-builtin.cc (class octave_builtin): Ditto. * ov-bool.h, ov-bool.cc (class octave_bool): Ditto. * ov-bool-mat.h, ov-bool-mat.cc (octave_bool_matrix): Ditto. * ov.h (DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): New macro. (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Ditto. Mon Nov 9 16:12:37 1998 John W. Eaton * pr-output.cc (octave_print_internal): Reorder default args for charMatrix version. (octave_print_internal): New function for boolMatrix. * version.h (OCTAVE_STARTUP_MESSAGE): Note that this is a development release. * toplev.cc (do_octave_atexit): Call flush_octave_stdout here. (clean_up_for_exit): And here. Mon Nov 9 15:20:53 1998 John W. Eaton * input.cc (get_user_input): Check retval.length(), not retval.length. Sun Nov 8 19:30:33 1998 John W. Eaton * pt-assign.cc (tree_simple_assignment::rvalue): If etype is asn_eq, don't evaluate ult again because retval is just rhs value. (tree_multi_assignment::rvalue): Likewise. Fri Nov 6 12:14:29 1998 John W. Eaton * pt-loop.cc (tree_for_command::eval): Move code for string RHS outside if clause for matrix types. * pt-idx.cc: Don't forget to define arg_nm. Move contstructor here. * pt-idx.h: From here. * data.cc (Fisempty): Also return true for empty strings. Wed Nov 4 17:21:41 1998 John W. Eaton * ov-base.cc (octave_base_value::rows, octave_base_value::columns, octave_base_value::length): Delete. * ov-base.h (octave_base_value::rows, octave_base_value::columns, octave_base_value::length): Define here. All return -1 if not defined in a derived class. * data.cc (Fis_matrix): Also return true if the arg is a range. Tue Nov 3 09:40:24 1998 John W. Eaton * data.cc (Fis_bool): New function. Also add alias for islogical. * ov.h (octave_value::is_bool_type): New function. * ov-base.h (octave_base_value::is_bool_type): Likewise. * ov-bool.h (octave_bool::is_bool_type): Likewise. * ov-bool-mat.h (octave_bool_matrix::is_bool_type): Likewise. Mon Nov 2 13:36:04 1998 John W. Eaton * lex.l (handle_close_brace): Also handle case of ']' followed by other assignment ops (+=, -=, ...). * pt-assign.cc (tree_simple_assignment::rvalue): Correctly handle return value and printing for operators other than `='. (tree_multi_assignment::rvalue): Likewise. * pt-assign.h (tree_multi_assignment::etype): New data member. * pt-assign.cc (tree_multi_assignment::rvalue): Use it instead of assuming `='. (tree_multi_assignment::oper): New function. * pt-pr-code.cc (tree_print_code::visit_multi_assignment): Use it instead of always printing `='. * parse.y (make_assign_op): Pass expression type to tree_multi_assignment constructor. * Makefile.in (stmp-pic): New target. ($(PICOBJ)): Depend on stmp-pic, not pic. (clean): Delete stmp-pic. Sun Nov 1 23:24:55 1998 John W. Eaton * mappers.cc (install_mapper_functions): Add alias for isfinite. Sat Oct 31 08:46:55 1998 John W. Eaton * data.cc (Fisnumeric): New function. Fri Oct 30 08:39:30 1998 John W. Eaton * oct-lvalue.cc (octave_lvalue::do_unary_op): Make it work for indexed ops too. * ov.cc (octave_value::unary_op_to_assign_op): New function. (octave_value::do_non_const_unary_op): New function for indexed ops. * parse.y (LEFTDIV_EQ, ELEFTDIV_EQ): New tokens. (assign_expr): Add rules for them. (make_assign_op): Handle them here too. * lex.l: Recognize them. * ov.h (octave_value::assign_op): Add ldiv_eq and el_ldiv_eq. * ov.cc (octave_value::assign_op_as_string): Ditto. (octave_value::op_eq_to_binary_op): Ditto. (octave_value::assign): Handle OP= style operators with brute force. (octave_value::simple_assign): New function. * parse.y (matrix): Dont' forget to reset lexer_flags.looking_at_matrix_or_assign_lhs. * oct-lvalue.cc (octave_lvalue::assign): Don't call change function if error occurs. (octave_lvalue::do_unary_op): If we have an index, fail with message. Thu Oct 29 09:27:04 1998 John W. Eaton * ov.cc (do_binary_op): Protect against invalid type conversions. (try_assignment_with_conversion): Likewise. (do_unary_op): Likewise. * ov.h (OV_UNOP_FN, OV_UNOP_OP, OV_UNOP_FN_OP): New macros. Use them to define not, uminus, transpose, hermitian functions and operators ! and -. (OV_BINOP_FN, OV_BINOP_OP, OV_BINOP_FN_OP): New macros. Use them to define add, sub, mul, div, pow, ldiv, lshift, rshift, lt, le, eq, ge, gt, ne, el_mul, el_div, el_pow, el_ldiv, el_and, el_or, struct_ref, functions and operators <, <=, ==, >=, >, !=, +, -, *, and /. * ops.h (CONVDECLX): New macro. * ov-base.cc (matrix_conv, complex_matrix_conv, string_conv): Use it to declare these functions. * ops.h (CONVDECL, INSTALL_WIDENOP): Prefix function name with `oct_conv_'. (INSTALL_BINOP, BINOPDECL): Prefix function name with `oct_binop_'. (INSTALL_ASSIGNOP, INSTALL_ASSIGNANYOP, ASSIGNOPDECL): Prefix function name with `oct_assignop_'. (UNOPDECL, DEFNCUNOP_METHOD, INSTALL_UNOP, INSTALL_NCUNOP): Prefix function name with `oct_unop_'. * ov-str-mat.cc (default_numeric_conversion_function): Return 0 if conversion fails. * parse.y (make_prefix_op, make_postfix_op): Use octave_value::unary_op enum. * pt-unop.cc (tree_prefix_expression::rvalue): Use new unary_op functions from octave_value and octave_lvalue classes. (tree_prefix_expression::rvalue): Likewise. * pt-unop.cc (tree_unary_expression::oper): Move here. (tree_prefix_expression::oper, tree_postfix_expression): From here. * pt-unop.h (tree_prefix_expression, tree_postfix_expression): Delete enums. (tree_unary_expression): Use octave_value::unary_op enum. * parse.y (make_prefix_op, make_postfix_op): Likewise. * oct-lvalue.h (octave_lvalue::do_unary_op): New function. (octave_lvalue::increment, octave_lvalue::decrement): Delete. * ov-typeinfo.h (octave_value_typeinfo::non_const_unary_ops): New data member. * ov-typeinfo.h (octave_value_typeinfo::lookup_non_const_unary_op): New function. * ov-typeinfo.cc (octave_value_typeinfo::register_non_const_unary_op): New function. (octave_value_typeinfo::do_register_non_const_unary_op): Ditto. (octave_value_typeinfo::do_lookup_non_const_unary_op): Ditto. * ov.cc (octave_value::do_non_const_unary_op): New function. * Makefile.in (OP_XSRC): Add op-chm.cc and op-range.cc to the list. * OPERATORS/op-str-str.cc: Define string matrix unary operators here. (install_str_str_ops): Install them here. * ov-bool-mat.h (octave_bool_matrix::transpose, octave_bool_matrix_value::hermitian): Delete. * OPERATORS/op-chm.cc: New file. Define char matrix unary operators. (install_chm_ops): Install them here. * ov-ch-mat.h (octave_char_matrix::transpose, octave_char_matrix_value::hermitian): Delete. * ops.cc (install_ops): Call install_chm_ops. * OPERATORS/op-bm-bm.cc: Define bool matrix unary operators here. (install_bm_bm_ops): Install them here. * ov-bool-mat.h (octave_bool_matrix::transpose, octave_bool_matrix_value::hermitian): Delete. * ov-bool.h (octave_bool::not, octave_bool::uminus, octave_bool::transpose, octave_bool::hermitian): Delete. * OPERATORS/op-cs-cs.cc: Define complex scalar unary operators here. (install_cs_cs_ops): Install them here. * ov-complex.h (octave_complex::not, octave_complex::uminus, octave_complex::transpose, octave_complex::hermitian): Delete. * OPERATORS/op-cm-cm.cc: Define complex matrix unary operators here. (install_cm_cm_ops): Install them here. * ov-cx-mat.h (octave_complex_matrix::not, octave_complex_matrix::uminus, octave_complex_matrix::transpose, octave_complex_matrix::hermitian): Delete. * OPERATORS/op-m-m.cc: Define matrix unary operators here. (install_m_m_ops): Install them here. * ov-re-mat.h (octave_matrix::not, octave_matrix::uminus, octave_matrix::transpose, octave_matrix::hermitian): Delete. * OPERATORS/op-range.cc: New file. Define range unary operators. (install_range_ops): Install them here. * ov-range.h (octave_range::not, octave_range::uminus, octave_range::transpose, octave_range::hermitian): Delete. * ops.cc (install_ops): Call install_range_ops. * OPERATORS/op-s-s.cc: Define scalar unary operators here. (install_s_s_ops): Install them here. * ov-scalar.h (octave_scalar::not, octave_scalar::uminus, octave_scalar::transpose, octave_scalar::hermitian): Delete. * ops.h (INSTALL_UNOP, CAST_UNOP_ARG, UNOPDECL, DEFUNOPX, DEFUNOP, DEFUNOP_OP, DEFUNOP_FN): New macros. * ov.h (unary_op_fcn): New typedef. (octave_value::unary_op): New enum. * ov.cc (octave_value::octave_value): New function. * ov.h (octave_value::not, octave_value::uminus, octave_value::transpose, octave_value::hermitian, octave_value::increment, octave_value::decrement): Delete. * ov-base.cc (octave_base_value::not, octave_base_value::uminus, octave_base_value::transpose, octave_base_value::hermitian, octave_base_value::increment, octave_base_value::decrement): Delete. * ov.cc (gripe_unary_op): New function. (do_unary_op): New function. * ov-typeinfo.h (octave_value_typeinfo::unary_ops): New data member. * ov-typeinfo.cc (octave_value_info::register_unary_op, octave_value_info::do_register_unary_op, octave_value_info::lookup_unary_op, octave_value_info::do_lookup_unary_op): New functions. * ov-list.cc (Fsplice): Use new octave_value::int_value function here. (octave_list::do_index_op): Likewise. (octave_list::assign): Likewise. * toplev.cc (Fquit): Likewise. * syscalls.cc (Fwaitpid): Likewise. (Ffcntl): Likewise. * file-io.cc (do_fread): Likewise. (do_fwrite): Likewise. * data.cc (make_diag): Likewise. (Fsize): Likewise. (get_dimensions): Likewise. (Flinspace): * ov-base.cc (octave_base_value::int_value): New function. (octave_base_value::nint_value): Ditto. * ov.h (octave_value::int_value): Ditto. (octave_value::nint_value): Ditto. * ov-list.cc (octave_list::assign): Fix off-by-one error. Wed Oct 28 11:01:37 1998 John W. Eaton * load-save.cc (read_mat_ascii_data): Try harder to convert file name to valid variable name. * data.cc (Fisempty, Fis_matrix): New functions. * ov-str-mat.h (octave_char_matrix_str::is_matrix_type): New function. * OPERATORS/op-list.cc: New file. * Makefile.in (OP_XSRC): Add it to the list. * ov-list.cc (octave_list::assign): New function. * ov-typeinfo.h (octave_value_typeinfo::assignany_ops): New data member. * ov-typeinfo.cc (octave_value_info::register_assignany_op, octave_value_info::do_register_assignany_op, octave_value_info::lookup_assignany_op, octave_value_info::do_lookup_assignany_op): New functions. * ov.cc (octave_value::try_assignment (octave_value::assign_op, const octave_value_list&, const octave_value&)): If no assignment operator for particular RHS type exists, try finding one for generic octave_value as RHS type. * ops.h (DEFASSIGNANYOP_FN): New macro. * ov-list.cc (Fsplice): New function. * oct-obj.cc (octave_value_list::splice): New function. * ov.cc (Vresize_on_range_error): No longer static. * ov.h (Vresize_on_range_error): Provide extern declaration. * oct-procbuf.cc (symbols_of_oct_procbuf): Don't declare static. * data.cc (Flength): New function. * ov.h (octave_value::length): New virtual function. * ov-base.cc (octave_base_value::length): New function. (octave_base_value::rows, octave_base_value::columns): Move definitions here, from ov-base.h. Don't return -1. Instead, gripe about wrong argument type. * ov-bool-mat.h (octave_bool_matrix::length): New function. * ov-bool.h (octave_bool::length): Ditto. * ov-ch-mat.h (octave_char_matrix::length): Ditto. * ov-complex.h (octave_complex::length): Ditto. * ov-cx-mat.h (octave_complex_matrix::length): Ditto. * ov-list.h (octave_list::length): Ditto. * ov-range.h (octave_range::length): Ditto. * ov-re-mat.h (octave_matrix::length): Ditto. * ov-scalar.h (octave_scalar::length): Ditto. Tue Oct 27 22:19:24 1998 John W. Eaton * ov-list.cc (octave_list::print_raw): Handle case of empty list. (octave_list::print_name_tag): Likewise. * octave.cc (intern_argv): Built-in variable argv is now a list of strings instead of a string vector. Always bind argv, making it an empty list if there are no args. Mon Oct 26 08:41:46 1998 John W. Eaton * xdiv.cc (mx_leftdiv_conform): Explicitly declare args to be passed as references to const objects. Fix explicit instantiation requests to match. (mx_div_conform): Likewise. * pt-unop.h (tree_prefix_expression): Reorder constructor args to put those with default values last. (tree_postfix_expression): Likewise. * parse.y: Change all callers. Fri Oct 23 12:07:32 1998 John W. Eaton * utils.cc (Ffile_in_loadpath): New function. * defaults.cc (Vload_path, Vdefault_load_path): Now static. * help.cc (simple_help): Use Vload_path_dir_path here instead of trying to reconstruct it from Vload_path. * fn-cache.cc (octave_fcn_file_name_cache::do_list): Likewise. (octave_fcn_file_name_cache::update): Likewise. * defaults.cc (octave_loadpath): Construct Vload_path_dir_path using Vdefault_load_path. (set_default_path): Likewise. * defaults.h, defaults.cc (maybe_add_default_load_path): Delete. * defaults.cc (Vdefault_load_path): New static variable. (set_default_path): Set it. (maybe_add_default_load_path): Use it. (symbols_of_defaults): Add DEFCONST for DEFAULT_LOADPATH. Thanks to Rafael Laboissiere . * defaults.cc (set_default_path): If OCTAVE_PATH is set in the environment, call maybe_add_default_load_path on it. Tue Oct 20 20:58:04 1998 John W. Eaton * defaults.cc (maybe_add_default_load_path): If LOADPATH contains an embedded "::", insert the default path there too. Fri Oct 16 00:52:15 1998 John W. Eaton * parse.y (in_matrix_or_assign_lhs): New subroutine for lexical feedback. (matrix): Use it. (assign_lhs): Ditto. * lex.h (lexical_feedback::looking_at_matrix_or_assign_lhs): New data member. * lex.l (handle_identifier): Use it to handle keywords like `cd' as variables in contexts like [ab, cd] = foo (). * ov-str-mat.h (octave_char_matrix_str::octave_char_matrix_str (char c)): New constructor. * ov-ch-mat.h (octave_char_matrix::octave_char_matrix (char c)): New constructor. * ov.cc (octave_value::octave_value (char c): New constructor. * pt-loop.cc (tree_simple_for_command::eval): Handle case of RHS as string. Thu Oct 15 00:56:47 1998 John W. Eaton * DLD-FUNCTIONS/rand.cc: Declare Fortran subroutines as returning int, not int*. Wed Oct 14 23:51:31 1998 Georg Thimm * load-save.cc (Vcrash_dumps_octave_core): New static variable. (save_user_variables): Only save variables if Vcrash_dumps_octave_core is true. (symbols_of_load_save): Add DEFVAR for it here. (crash_dumps_octave_core): New function. * octave.cc (maximum_braindamage): Bind crash_dumps_octave_core to 0.0 here. Tue Oct 13 22:05:55 1998 John W. Eaton * input.cc (read_readline_init_file): New function. Thu Oct 8 13:47:55 1998 John W. Eaton * oct-procbuf.h (octave_procbuf::wstatus): New data member. Initialize in constructors. (octave_procbuf::wait_status): New member function. * oct-procbuf.cc (octave_procbuf::sys_close): Use class data member wstatus, not local variable. * procstream.cc (procstreambase::close): Don't call sys_close directly. Get subprocess exit status by calling wait_status for our procbuf. * pt-plot.cc (close_plot_stream): Send "quit" command to gnuplot before deleting plot_stream. Thu Oct 1 22:39:44 1998 John W. Eaton * data.cc (Fis_complex): New function. Fri Sep 25 11:50:44 1998 John W. Eaton * load-save.cc (write_header): Rename from write_binary_header. Also write header for Octave ASCII files. * load-save.cc (Fsave): Implement -append option. * defaults.cc (Frehash): New function. Fri Sep 25 11:50:44 1998 John W. Eaton * help.cc (help_from_info): Improve error message in case that info doesn't work. Thu Sep 24 10:48:12 1998 John W. Eaton * Makefile.in (DLD_XSRC): Replace qzval.cc with qz.cc * DLD-FUNCTIONS/balance.cc: Update from A. S. Hodel . * DLD-FUNCTIONS/qz.cc: New file. * DLD-FUNCTIONS/qzval.cc: Delete. * parse.y (plot_command1): Don't allow it to be empty. (plot_command): Handle simple `PLOT' and `PLOT ranges' as special cases here. Wed Sep 23 21:10:08 1998 John W. Eaton * lex.l: Change {SNLCMT}*\n{SNLCMT}* pattern to {S}*{COMMENT}{SNLCMT}* | {S}*{NL}{SNLCMT}*. Fri Sep 4 10:50:00 1998 John W. Eaton * file-io.cc (Ffwrite): Fix doc string. Wed Sep 2 16:22:23 1998 John W. Eaton * input.cc (match_sans_spaces): Make it work. * toplev.cc (quit): Require nargout == 0. * input.cc (get_user_input): Only try matching "exit", "quit", and "return" if debugging. Tue Sep 1 12:50:24 1998 John W. Eaton * octave.cc: Use -H as single character equivalent of --no-history. Sat Aug 29 12:23:12 1998 John W. Eaton * oct-obj.cc (octave_value_list::make_argv): If some values are string vectors, insert all the elements, not just the first. Tue Aug 18 16:39:50 1998 John W. Eaton * oct-stream.cc (octave_base_stream::do_gets): Accept last line of file even if it doesn't end in a newline character. Tue Aug 18 16:25:49 1998 Mumit Khan * xdiv.cc (mx_leftdiv_conform, mx_div_conform): Instantiate correct templates. Thu Jul 30 00:37:43 1998 John W. Eaton * pt-loop.cc (tree_for_command::eval): Check for range first. If error occurs when extracting matrix value, return early. Don't bother to check for string type. * ov-ch-mat.h (octave_char_matrix::is_real_matrix): New function. Tue Jun 23 15:09:54 1998 John W. Eaton * parse.y (clear_current_script_file_name): New function. (parse_fcn_file): Bind current_script_file_name while script is executing. Use unwind_protect to clear it once the script is finished. * pt-plot.cc (Fgraw): New function. Mon Jun 22 22:13:38 1998 John W. Eaton * variables.cc (is_valid_function): Provide version that takes function name as string. * parse.y (binary_expr): Fix thinko that resulted in incorrect evaluation of -x^y. Thanks to Richard Allan Holcombe . (feval): Don't attempt to copy nonexistent arg names. Mon Jun 22 21:35:50 1998 Richard Allan Holcombe * xpow.cc (xpow): Improve efficiency for matrix^(scalar int) case. Thu Jun 4 12:42:46 1998 John W. Eaton * ov-usr-fcn.cc (octave_user_function::octave_all_va_args): If num_args_passed < num_named_args, create zero length list. Thu May 14 16:23:15 1998 John W. Eaton * DLD-FUNCTIONS/getrusage.cc: Include sys/types.h too. Mon May 11 00:38:45 1998 John W. Eaton * pager.cc (Fdiary): Don't forget to set write_to_diary file if just given a file name. * input.cc (octave_gets): Only send new line character to octave_diary if current_input_line is empty or doesn't already end with a new line character.. Don't send input from function files or scripts to octave_diary. Sun May 3 19:54:38 1998 John W. Eaton * lex.l (reset_parser): Also call yyrestart if forced_interactive is true, but not if input_from_startup_file is true. Tue Apr 28 14:06:20 1998 John W. Eaton * oct-procbuf.cc (Vkluge_procbuf_delay): New static variable. (kluge_procbuf_delay): New function. (symbols_of_oct_procbuf): New function. (octave_procbuf::open): Delay Vkluge_procbuf_delay microseconds after forking. Thu Apr 23 15:41:08 1998 John W. Eaton * defaults.cc (Vload_path_dir_path): New variable. * utils.cc (file_in_path): Use it. * utils.cc (search_path_for_file): Undo previous change. (file_in_path): Undo previous change. * defaults.cc (loadpath): Undo previous change. Tilde expansion is once again handled correctly by the code in liboctave/pathsearch.cc. Mon Apr 20 21:50:34 1998 John W. Eaton * data.cc (get_dimensions): Allow zeros ([], 3) to work, for compatibility with Matlab. * dynamic-ld.cc [WITH_DL && ! HAVE_DLFCN_H]: Add declarations for dlopen, dlerror, dlsym, and dlclose. * octave.gperf: Handle __FILE__ and __LINE__. * lex.l (is_keyword): Likewise. * Makefile.in (oct-gperf.h): Pass -D option to gperf. Postprocess output of gperf to convert name of static variable from lookup to gperf_lookup, to avoid conflict with our function of the same name defined in variables.cc. Sat Apr 18 20:17:10 1998 John W. Eaton * help.cc (USE_GNU_INFO): Delete uses of this macro. Thu Apr 16 01:00:12 1998 John W. Eaton * dynamic-ld.cc: Only include dlfcn.h if HAVE_DLFCN_H. Wed Apr 15 01:03:05 1998 John W. Eaton * input.cc (Vlast_prompt_time): New global variable. (octave_gets): Set it. * ov-fcn.h (octave_function::time_checked): New virtual function (octave_function::mark_fcn_file_up_to_date): Ditto. * ov-usr-fcn.h (octave_user_function::time_checked): New function. (octave_user_function::mark_fcn_file_up_to_date): Ditto. (octave_user_function::t_checked): New data member. * variables.cc (symbol_out_of_date): Only check file time stamp if a prompt has been printed since the last time check. * pt-plot.h, pt-plot.cc (subplot_axes): New class. (subplot): Handle axes. (Vgnuplot_command_axes): New static variable. (gnuplot_command_axes): New function. (symbols_of_pt_plot): DEFVAR gnuplot_command_axes. * pt-walk.h (tree_walker::visit_subplot_axes): New virtual function. * parse.y (plot_options): Handle axes. * lex.l (plot_axes_token): New function. (is_keyword): Use it. (is_plot_keyword): Recognize "axes" and "axis". * lex.h (class lexical_feedback): New field, in_plot_axes. (lexical_feedback::init): Reset it. Tue Apr 14 23:32:27 1998 John W. Eaton * parse.y (parse_fcn_file): New arg, force_script. Change callers. Fri Apr 10 11:01:27 1998 John W. Eaton * help.cc (type): Also print values of variables. Wed Apr 8 01:00:58 1998 John W. Eaton * pr-output.cc (set_format): Set scale to 1.0 if all elements are int or inf or nan. * parse.y (Vwarn_future_time_stamp): New variable. (symbols_of_parse): Add DEFVAR for it. (warn_future_time_stamp): New function. (frob_function_def): Maybe warn about files with future time stamps. Thu Apr 2 20:43:45 1998 John W. Eaton * pt-arg-list.cc (tree_argument_list::convert_to_const_vector): In error messages, print element numbers starting with 1, not 0. Sat Mar 28 15:25:44 1998 John W. Eaton * toplev.cc (clean_up_for_exit): New function. (clean_up_and_exit): Use it. * sighandlers.cc (my_friendly_exit): Call it instead of clean_up_and_exit, then do default action for signal. * sighandlers.cc (octave_new_handler): Call my_friendly_exit with signal set to SIGABRT if it is defined, or -1 otherwise. * error.cc (verror): Fix thinko in attempt to skip `error: ' tag when buffering error messages. * pt-except.cc (tree_try_catch::eval): Reset buffer_error_messages here if just discarding unwind_protect frame. Wed Mar 18 12:35:18 1998 John W. Eaton * xpow.cc (elem_xpow): For real-scalar .^ matrix case, result is complex only if real-scalar is negative and matrix has some non-integer values. Tue Mar 17 17:47:50 1998 John W. Eaton * pt-plot.cc (Vgnuplot_command_plot, Vgnuplot_command_replot, Vgnuplot_command_splot, Vgnuplot_command_using, Vgnuplot_command_with, Vgnuplot_command_title, Vgnuplot_command_end): New static variables. (symbols_of_pt_plot): DEFVAR them. (gnuplot_command_plot, gnuplot_command_replot, gnuplot_command_splot, gnuplot_command_using, gnuplot_command_with, gnuplot_command_title, gnuplot_command_end): New functions. (open_plot_stream, send_to_plot_stream, tree_plot_command::eval, subplot_using::print, subplot_style::print, subplot::print, do_external_plotter_cd, Fgset, Fgshow): Use them instead of the GPLOT_CMD_PLOT, GPLOT_CMD_REPLOT, GPLOT_CMD_SPLOT, GPLOT_CMD_USING, GPLOT_CMD_WITH, GPLOT_CMD_TITLE, and GPLOT_CMD_END macros. Fri Feb 27 12:25:27 1998 John W. Eaton * help.cc (additional_help_message): Fix www address. Tue Feb 24 00:42:59 1998 John W. Eaton * help.cc (simple_help): Put additional help message first. (additional_help_message): Add information about web site and mailing list. Fri Feb 20 00:41:06 1998 John W. Eaton * pt-plot.cc (GPLOT_CMD_REPLOT): Clear before replot. * Makefile.in: Better handling of lib flags for linking. Thu Feb 19 21:14:30 1998 John W. Eaton * pt-decl.cc (Vinitialize_global_values): New static variable. (initialize_global_variables): New function. (symbols_of_pt_decl): New function. DEFVAR Vinitialize_global_values and initialize_global_variables. (tree_global_command::do_init): If initialize_global_variables is not true and the variable doesn't have an explicit initializer, don't initialize it. If we are giving it a default value, use the value of the variable defualt_global_variable_value. * octave.cc (maximum_braindamage): Set default_global_variable_value and initialize_global_variables to Matlab-compatible values. Wed Feb 18 04:35:31 1998 John W. Eaton * DLD-FUNCTIONS/besselj.cc: Rename from bessel.cc. * Makefile.in (DLD_XSRC): Likewise. * syscalls.cc (Fvfork): Delete. * oct-procbuf.cc: Just use fork. * parse.y (feval): Provide version that takes function name separate from other args. * parse.h: Declare it. * oct-procbuf.cc (octave_procbuf::open): Move declaration of child_std_end outside of child scope and declare volatile. Mon Feb 16 15:04:28 1998 John W. Eaton * parse.y: Include cstdio, for SEEK_SET. Thu Feb 12 22:07:00 1998 John W. Eaton * system.c: New file. * Makefile.in (SOURCES): Add it to the list. Fri Feb 6 01:23:18 1998 John W. Eaton * oct-stream.cc (octave_base_stream::file_number): Rename from fileno. Change all uses. * fsolve.cc (fsolve_option_table): Add missing & to function names. Thu Feb 5 02:27:18 1998 John W. Eaton * dirfns.cc (Fls): If first attempt at reading process output fails, sleep once and try again. * toplev.cc (run_command_and_return_output): Likewise. * oct-procbuf.cc (octave_procbuf::open): Use vfork if it is available. * syscalls.cc (Fvfork): New function. * ov-bool-mat.cc: Only declare assign function if CXX_NEW_FRIEND_TEMPLATE_DECL is not defined. * ov-base.h, ov-bool-mat.h, ov-bool.h, ov-ch-mat.h, ov-complex.h, ov-cx-mat.h, ov-range.h, ov-re-mat.h, ov-scalar.h: Handle default args for *_value functions consistently. * symtab.cc (maybe_list_cmp_fcn): Declare args as void*, not void**, then use X_CAST. * OPERATORS/op-s-cm.cc: Include mx-cm-s.h. * defun-int.h: Include ov-builtin.h, ov-mapper.h, and symtab.h. (install_builtin_mapper, install_builtin_function, install_builtin_variable) Use specific types rather than void * in declaration. * defun.cc (install_builtin_mapper, install_builtin_function, install_builtin_variable): Likewise. Eliminate casts. * load-save.cc (read_binary_data, read_mat_file_header, save_binary_data): Use X_CAST, not static_cast. * unwind-prot.h (unwind_protect::save_ptr): Likewise. * Map.cc (goodCHptr, index_to_CHptr, CHptr_to_index): Likewise. * dynamic-ld.cc (octave_dlopen_dynamic_loder::resolve_reference): Likewise. * pt-mat.cc (tm_const::operator bool ()): (tm_row_const::operator bool ()): Likewise. * oct-stream.cc (printf_value_cache::operator bool ()): Likewise. (scanf_format_list::operator bool ()): Likewise. (printf_format_list::operator bool ()): Likewise. (octave_stream::operator bool ()): Likewise. Wed Feb 4 13:08:29 1998 John W. Eaton * DLD-FUNCTIONS/minmax.cc: Include cmath, not oct-math.h. * syscalls.cc (Fdup2): Convert stream to actual system file id. * oct-stream.cc (octave_base_stream::fileno, octave_stream::fileno): New functions. Tue Feb 3 00:24:44 1998 John W. Eaton * defaults.cc (exec_path): Append Vbin_dir to std_path. * octave.cc (initialize_pathsearch): Set TEXMFDBS, not TEXMF. Look for OCTAVE_DB_PATH in environment. Simplify using Vdata_dir and Vlibexec_dir. * defaults.h.in (Vdata_dir, Vlibexecdir): Declare new vars. defaults.cc: Define them. (set_default_data_dir, set_default_libexecdir): New functions. (install_defaults): Call them. * defaults.h.in (OCTAVE_LIBEXECDIR): Define. Mon Feb 2 02:43:16 1998 John W. Eaton * Makefile.in (install, uninstall): Use $(octlibdir), not $(libdir). Use mk-libdir-link. * defaults.h.in (OCTAVE_OCTLIBDIR): Substitute value. (Vlib_dir): Delete declaration. * defaults.cc (Vlib_dir): Delete. (set_default_lib_dir): Delete. (install_defaults): Don't call set_default_lib_dir. (set_default_info_prog): If oct_info_prog is empty, set default to "info" -- we expect it to be somewhere in the user's path. * defun.h (DEFCONST, DEFCONSTX): Eliminate inst_as_fcn and chg_fcn args. Always pass true for inst_as_fcn and 0 for chg_fcn to DEFVAR when creating built-in values like `e' or `stderr' that can be redefined. Change all uses. * help.cc (Ftype): Handle script files too. (Fwhich): Likewise. Sat Jan 31 00:00:26 1998 John W. Eaton * ov-ch-mat.cc (octave_char_matrix::is_true): Make it work. * ov-str-mat.h, ov-str-mat.cc (octave_char_matrix_str::is_true): Delete. * load-save.cc (read_ascii_data): Allow strings of length 0. If we don't find data on the first call, fail with error message. (do_load): Pass count of items read to read_ascii_data. Allow `load foo xyz' to work when foo contains only numbers. Fri Jan 30 23:46:42 1998 John W. Eaton * ov-str-mat.h (octave_char_matrix_str::all): Delete. (octave_char_matrix_str::any): Delete. * ov-ch-mat.h (octave_char_matrix::all, octave_char_matrix::any): Call charMatrix::all, charMatrix::any. Thu Jan 29 16:25:46 1998 John W. Eaton * load-save.cc (read_mat_binary_data): Handle third digit of MOPT as flag indicating row or column major ordering. Wed Jan 28 00:18:17 1998 John W. Eaton * DLD-FUNCTIONS/dassl.cc (lsode_option_table): Add missing & to function names. * DLD-FUNCTIONS/lsode.cc (lsode_option_table): Likewise. * DLD-FUNCTIONS/quad.cc (quad_option_table): Likewise. * Makefile.in (oct-gperf.h): Add -G option to gperf. * load-save.cc (get_save_type): Add `UL' and `L' suffixes to large constant values. For LS_INT, use <= and >= for comparison. Mon Jan 26 13:17:59 1998 John W. Eaton * ov-usr-fcn.cc (Vmax_recursion_depth): New static variable. (max_recursion_depth): New fucnction (symbols_of_ov_usr_fcn): DEFVAR max_recursion_depth. (octave_user_function::do_index_op): Check Vmax_recursion_depth. Thu Jan 22 13:45:26 1998 John W. Eaton * dynamic-ld.cc (make_dynamic_loader): Fix typo. Tue Jan 20 17:02:19 1998 John W. Eaton * variables.cc (Fexist): If local symbol is undefined, check global table. * pr-output.cc (pr_max_internal): Initial value for result is -DBL_MAX, not DBL_MIN. Thu Jan 8 11:54:33 1998 John W. Eaton * xpow.cc (elem_xpow): If second arg of pow is complex, make sure first arg is also complex. * symtab.cc (symbol_table::rename): Properly insert new item at the front of the list to avoid losing the rest of the items. Thu Dec 11 23:30:03 1997 John W. Eaton * variables.cc (Fclear): Increment index to skip -x arg. Tue Dec 9 02:45:35 1997 John W. Eaton * Makefile.in (INCLUDES): Don't forget Pix.h. * BaseSLList.cc: Don't include nonstandard libg++ header files. Sun Nov 30 14:58:56 1997 John W. Eaton * pr-output.cc: Include cmath, not oct-math. * sysdep.cc: Likewise. * DLD-FUNCTIONS/bessel.cc: New file. * Makefile.in (DLD_XSRC): Add it to the list. Thu Nov 27 23:28:59 1997 John W. Eaton * lex.l (handle_string): Constructor for string class takes (size_t, char) args, not (char, size_t). Wed Nov 26 00:39:34 1997 John W. Eaton * Makefile.in (OCTAVE_LIBS): Include $(SPECIAL_MATH_LIB) just ahead of -lcruft. Thu Nov 20 15:16:22 1997 John W. Eaton * octave.cc (maximum_braindamage): Bind implicit_num_to_str_ok to 1. * pt-mat.cc (Vimplicit_num_to_str_ok): New static variable. (implicit_num_to_str_ok): New function. (symbols_of_pt_mat): DEFVAR implicit_num_to_str_ok. (tm_row_const::some_str): New data member. (tm_row_const::some_strings_p): New function. (tm_row_const::init): Set some_str. (tm_const::some_str): New data member. (tm_const::some_strings_p): New function. (tm_const::init): Set some_str. (tree_matrix::eval): If Vimplicit_num_to_str_ok is true and some of the elements are strings, force a string conversion before returning. * parse.y (fold, finish_colon_expression, finish_matrix): If an error occurs, return the original expression. Use unwind_protect to restore error_state. * ov-ch-mat.h (octave_char_matrix::convert_to_str): Result is char_matrix_str, not just char_matrix. Wed Nov 19 02:05:40 1997 Mumit Khan * DLD-FUNCTIONS/filter.cc: Don't include extern template decls if CXX_NEW_FRIEND_TEMPLATE_DECL is defined. * ov-cx-mat.cc: Likewise. * ov-re-mat.cc: Likewise. * ov-str-mat.cc: Likewise. * ov-cx-mat.h (octave_complex_matrix::decrement, octave_complex_matrix): Use explicit Complex constructor. Wed Nov 19 00:08:13 1997 John W. Eaton * pt-decl.cc (tree_global_command::do_init): Initialize global values to `[]'. Only perform explicit initialization once. Tue Nov 18 04:27:55 1997 John W. Eaton * pr-output.cc (Vfixed_point_format): New variable. (fixed_point_format): New fucntion. (symbols_of_pr_output): Add DEFVAR for fixed_point_format. (set_real_matrix_format): Handle fixed point format (set_complex_matrix_format): Handle fixed point format (set_format): New arg, scale in Matrix, ComplexMatrix, Range versions. (pr_scale_header): New function. (octave_print_internal): Handle fixed point format in Matrix, ComplexMatrix, and Range versions. * octave.cc (maximum_braindamage): Set fixed_point_format to 1.0. * utils.cc (do_string_escapes): Move here, from lex.l. Arg is now const string& instead of char*. Return new string object instead of modifying arg in place. (Fdo_string_escapes): New function. * lex.l (handle_string): Use new version of do_string_escapes. * lex.l (Vbackslash_escapes): Delete. (backslash_escapes): Delete. (do_string_escapes): Undo previous change. (eat_whitespace, eat_continuation): Undo previous change. (handle_string): Undo previous change. (symbols_of_lex): Undo previous change. * octave.cc (maximum_braindamage): Undo previous change. Fri Nov 14 01:53:13 1997 John W. Eaton * parse.y (eval_string (const string&, bool, int&, int)): No longer static. * parse.h: Provide declaration. * input.cc (get_user_input (const octave_value_list&, bool, int)): New arg, nargout. Pass it to eval_string. (keyboard): Pass nargout = 0 to get_user_input. (input): Pass nargout to get_user_input. * input.cc (get_user_input (const octave_value_list&, bool)): Return octave_value_list() if user enters `quit', `exit', or `return'. If debugging, let eval_string handle the printing chores and reset error_state before asking for more input. * input.cc (Fkeyboard): Unconditionally turn on history here. * lex.l (have_continuation, have_ellipsis_continuation): Declare arg as bool, not int. Change callers. * lex.l (Vbackslash_escapes): New static variable. (backslash_escapes): New function. (do_string_escapes): Return immediately if ! Vbackslash_escapes. (eat_whitespace, eat_continuation): Only call have_continuation if Vbackslash_escapes. (handle_string): Backslash is only special if Vbackslash_escapes. (symbols_of_lex): Add DEFVAR for backslash_escapes. * octave.cc (maximum_braindamage): Set backslash_escapes to 0. Thu Nov 13 16:20:40 1997 John W. Eaton * variables.cc (Fexist): Also return 2 if NAME is a regular file somewhere in the LOADPATH. * data.cc (sumsq): Fix doc string. * parse.y (Fsource): Call parse_fcn_file, not parse_and_execute. Tue Oct 7 16:51:01 1997 John W. Eaton * defun-int.h (DEFINE_FUN_INSTALLER_FUN): Set installed to true after installing the function. Thu Sep 25 10:17:26 1997 John W. Eaton * DLD-FUNCTIONS/filter.cc (Ffilter): Return second output value even when called with only 3 arguments. Mon Sep 22 16:44:27 1997 John W. Eaton * DLD-FUNCTIONS/rand.cc (do_rand): Print error if first of two args is a string but doesn't match "seed". (Frand, Frandn): Fix doc string. Mon Aug 25 10:42:07 1997 John W. Eaton * input.cc (get_user_input): Return an empty string if the user just types RET. Thu Jul 31 22:59:04 1997 John W. Eaton * lex.l : Ensure that we handle words that begin with single or double quotes as strings. Thu Jul 17 13:06:48 1997 Klaus Gebhardt * DLD-FUNCTIONS/rand.cc (Frand): Use F77_XFCN to call getsd, setsd, setall, setcgn, dgenunf, and dgennor since they can call XSTOPX. Mon Jul 14 12:54:23 1997 John W. Eaton * dynamic-ld.cc (octave_dynamic_loader::load_fcn_from_dot_oct_file): If first attempt to load function fails, prepend and underscore and try again. * Makefile.in (install-inc): If defaults.h, oct-conf.h, or oct-gperf.h don't exist in the current directory, look in $(srcdir). Mon Jul 7 21:14:07 1997 John W. Eaton * DLD-FUNCTIONS/qr.cc (Fqr): Correctly handle nargout == 0. Wed Jul 2 16:47:09 1997 John W. Eaton * matherr.c: New file. Move matherr function here. * sysdep.cc: From here. * Makefile.in (DIST_SRC): Add matherr.c to the list. * error.cc (handle_message): Avoid bug in g++ snapshot. Thu Jun 26 22:04:09 1997 John W. Eaton * utils.cc (file_in_path): Add default load path to PATH arg if it begins or ends with a colon. Wed Jun 25 13:31:06 1997 John W. Eaton * oct-lvalue.h (octave_lvalue::struct_elt_ref): Ensure val is unique. Fri Jun 20 12:33:35 1997 John W. Eaton * toplev.cc (cmd_death_handler): New function. (run_command_and_return_output): Insert pid of command in octave_child_list along with pointer to cmd_death_handler so we can get the exit status without having to block SIGCHLD. (cleanup_iprocstream): Remove pid of command from octave_child_list. Sun Jun 15 16:11:13 1997 John W. Eaton * OPERATORS/op-cs-s.cc (ldiv): Doh, v1 is complex, v2 is real. * Makefile.in (DISTFILES): Add mkops to the list. (dist): Correctly link files in DLD-FUNCTIONS, OPERATORS, and TEMPLATE-INST subdirectories. Fri Jun 6 04:30:57 1997 John W. Eaton * DLD-FUNCTIONS/npsol.cc, DLD-FUNCTIONS/qpsol.cc, DLD-FUNCTIONS/fsqp.cc: Delete. * Makefile.in (DLD_XSRC): Remove them from the list. * utils.cc (search_path_for_file): New arg, do_tilde_expansion. If TRUE, perform tilde expansion on path before searching. (file_in_path): Call search_path_for_file with do_tilde_expansion set to false, since we've already performed tilde expansion on the load path. * defaults.cc (loadpath): Perform tilde expansion here. Thu Jun 5 01:42:39 1997 John W. Eaton * Makefile.in: Make building of static library optional. (liboctave.$(SHLEXT_VER)): Add $(SONAME_FLAGS) to command. * dynamic-ld.cc (octave_shl_load_dynamic_loader::resolve_reference): Call shl_findsym with type set to TYPE_UNDEFINED. * Makefile.in (stamp-picdir): Delete. (pic): New target. Don't worry so much about creating pic directory only when it is really needed. (stamp-interp): Delete. (libraries): New target. Depend on shared library directly. Wed Jun 4 00:09:42 1997 John W. Eaton * octave.cc (main): Call dir_path::set_program_name here. Tue Jun 3 16:47:34 1997 John W. Eaton * variables.cc (symbol_out_of_date): Make it work again. * parse.y (parse_and_execute): Move here from toplev.cc (default_eval_print_flag): Likewise. (safe_fclose): Likewise. (eval_string): Likewise. (Fsource): Likewise. (Ffeval): Likewise. (feval): Likewise. (Feval): Likewise. (symbols_of_parse): Define default_eval_print_flag here instead of in varaibles.cc. (looks_like_octave_copyright): Move here from variables.cc (gobble_leading_whitespace): Likeiwse. (is_function_file): Likewise. (restore_input_stream): Likewise. (parse_fcn_file): Likewise. (load_fcn_from_file): Likewise. (get_help_from_file): Likewise. * toplev.cc (syms_of_toplev): Define argv, program_name, and program_invocation_name here instead of in variables.cc. * parse.h (line_editing): Move here from toplev.h. Now bool, not int. (reading_startup_message_printed) Likewise. (input_from_startup_file): Likewise. (input_from_command_line_file): Likewise. * load-save.cc: Use bool instead of int where appropriate. * input.h (enum echo_state): Move here from variables.h. (Vecho_executing_commands): Likewise. Now bool, not int. * input.cc (echo_executing_commands): Move here from variables.cc. (symbols_of_input): Define echo_executing_commands here instead of in variables.cc. * octave.cc (program_invocation_name): Don't define. (intern_argv): Don't set program_invocation_name here. (main): Call octave_env::set_program_name here, not in intern_argv. * toplev.cc (quitting_gracefully): Move here from octave.h and make static bool instead of extern int. * error.cc (bind_global_error_variable, clear_global_error_variable): Move here from variables.cc. (symbols_of_error): Define error_text here instead of in variables.cc. * pager.cc (write_to_diary_file): Now bool, not int. (really_flush_to_pager): Likewise. (flushing_to_pager): Likewise. * sighandlers.h (can_interrupt): Likewise. * error.h (buffer_error_messages): Likewise. * oct-hist.h (input_from_tmp_history_file, Vsaving_history): Likewise. * input.h (forced_interactive): Likewise. (get_input_from_eval_string): Likeiwse. (reading_script_file): Likeiwse. (reading_fcn_file): Likeiwse. (interactive): Likewise. * unwind-prot.cc (saved_variable::saved_variable (bool *, bool)): Set type_tag to boolean, not int. Mon Jun 2 00:40:10 1997 John W. Eaton * variables.h (Octave_builtin_fcn): Delete typedef. * help.cc (make_name_list): Move here from variables.cc. (keyword_help, names): Now static. (struct help_list): Move declaration here from help.h. * oct-hist.cc (Vhistory_file, Vhistory_size, Vsaving_history): Move here from variables.cc. (symbols_of_oct_hist): New function. * version.h: Protect against multiple inclusion. * defun.cc (check_version): New function. * defun-int.h (DEFINE_FUN_INSTALLER_FUN): Use it. * help.h, help.cc (additional_help_message): Now extern. (operator_help): Now static. * defun.cc (print_usage): Move here from help.cc * DLD-FUNCTIONS/*.cc, data.cc, dirfns.cc, file-io.cc, input.cc, load-save.cc, octave.cc, ov-list.cc, ov-typeinfo.cc, ov-usr-fcn.cc, pager.cc, pr-output.cc, pt-plot.cc, strfns.cc, syscalls.cc, sysdep.cc, utils.cc, toplev.cc: Don't include help.h. * TEMPLATE-INST/Array-sym.cc: New file. * load-save.cc (do_load): Don't use ostream::form. * pr-output.cc: Likewise, at least where it is easy to do so. * oct-stream.cc: Ditto. * symtab.h (symbol_record::symbol_def::rows): New function. (symbol_record::symbol_def::columns): Ditto. (symbol_record::symbol_def::type_name): Ditto. (symbol_record::rows): Ditto (symbol_record::columns): Ditto (symbol_record::type_name): Ditto * symtab.h, symtab.cc (symbol_record::hides_fcn): New function. (symbol_record::hides_builtin): Ditto. (symbol_record::print_symbol_info_line): Ditto. (symbol_table::long_list): Delete. (symbol_table::symbol_list): New function. (symbol_table::maybe_list): Delete argc arg. (symbol_table::name_list): Rename from symbol_table::list. Change all callers. * symtab.h, symtab.cc (class symbol_record_info): Delete. * symtab.cc (matches_patterns): Use vector form of glob_match. Sun Jun 1 14:04:26 1997 John W. Eaton * pt-check.h, pt-check.cc: New files, for semantic checking of parse trees. * symtab.h (class symbol_def): Now nested in symbol_record class. (enum TYPE): Move from symbol_def to symbol record class. Change all uses. * symtab.h, symtab.cc (symbol_table::maybe_list): New function, from variables.cc. Change all uses. * pt-idx.h (tree_identifier::lvalue_ok): New function. * pt-id.h (tree_index_expression::lvalue_ok): Likewise. * pt-indir.h (tree_indirect_ref::lvalue_ok): Likewise. * pt-pr-code.h, pt-pr-code.cc (tree_print_code::visit_oct_obj): Delete. * pt-walk.h (tree_walker::visit_oct_obj): Delete declaration. * lex.h (class lexical_feedback): Delete maybe_screwed_again. * lex.l (lexical_feedback::init): Don't set it. Fri May 30 16:07:22 1997 John W. Eaton * mappers.cc: Include here. Tue May 27 10:08:43 1997 John W. Eaton * toplev.cc (eval_string): Don't index tmp if it is empty. Sat May 24 00:18:41 1997 John W. Eaton * load-save.cc (valid_identifier): Move here and make static. * symtab.h, symtab.cc (valid_identifier): Delete declaration and definition. Fri May 23 22:54:28 1997 John W. Eaton * symtab.h (symbol_def::symbol_def): Use initializer list instead of calling init_state. (symbol_def::init_state): Delete. * symtab.cc (symbol_table::print_stats): New function. * variables.cc (F__dump_symtab_info__): New function. * symtab.h, symtab.cc (symbol_table::hash): Return masked value. (symbol_table::table_size): New data member. (symbol_table::symbol_table): Set size of table in constructor. (HASH_TABLE_SIZE): Replace uses with table_size. (HASH_MASK): Delete. * variables.cc (initialize_symbol_tables): Set top-level and global symbol table sizes here. Thu May 22 13:32:55 1997 John W. Eaton * dynamic-ld.cc (octave_shl_load_dynamic_loader::resolve_reference): Call shl_findsym with type set to TYPE_PROCEDURE. Pass the address of the pointer we want to define. Wed May 21 16:30:25 1997 John W. Eaton * DLD-FUNCTIONS/time.cc (extract_tm): Avoid memory leak in dealing with time zone. * Makefile.in (install-in): Use new mk-includedir-link macro. (install-lib): Install in $octlibdir. Use new mk-libdir-link macro. Tue May 20 01:24:11 1997 John W. Eaton * ov-list.cc (Flist): Rename from Fmake_list. Mon May 19 14:45:58 1997 John W. Eaton * octave.cc (maximum_braindamage): Set default_eval_print_flag to 0. Sat May 17 16:32:23 1997 John W. Eaton * defaults.cc (set_default_editor): Default is now Emacs, not vi. Fri May 16 00:07:11 1997 John W. Eaton * pt-idx.cc (tree_index_expression::name): New function. * pt.cc (tree::str_print_code): New file, new convenience function. * pt-arg-list.cc (tree_argument_list::get_arg_names): Use it. * pt-assign.cc (tree_simple_assignment::rvalue): Likewise. (tree_multi_assignment::rvalue): Likewise. * pt-colon.h (tree_colon_expression::save_base): New data memmber. (tree_colon_expression::preserve_base): New function. * parse.y (finish_colon_expression): When converting to a simple expression, be sure to delete the original colon expression but not the base value. * pt-mat.cc (tree_matrix::~tree_matrix): Actually do something. * pt-all.h: New file. * parse.y, lex.l, pt-pr-code.cc: Use it. * pt.h: Rename from pt-base.h. * All parse tree classes: Add private copy constructors and assignment operators to prevent copying. * pt-base.cc: Delete. * unwind-prot.h, unwind-prot.cc: Make a bit more object-oriented. Change all uses of unwind_protect stuff to match. * pt-jump.h, pt-jump.cc (breaking, continuing, returning): Make these flags static members of the corresponding class. Change all uses. * pt-assign.cc (tree_simple_assignment_expression::eval, tree_multi_assignment_expression::eval): Clear lvalue index here. * oct-lvalue.cc (octave_lvalue::assign): Don't clear index here. * oct-lvalue.h (octave_lvalue::clear_index): New function. (octave_lvalue::set_index): Rename from octave_lvalue::index. Change all callers. Thu May 15 11:48:10 1997 John W. Eaton * pt-select.h, pt-select.cc (class tree_if_command_list, class tree_if_clause, class tree_switch_case_list, class tree_switch_case): Move here from pt-misc.h, pt-misc.cc. * pt-decl.h, pt-decl.cc (class tree_decl_init_list, class tree_decl_elt): Move here from pt-mist.h, pt-misc.cc * pt-arg-list.h, pt-stmt.h: New files, extracted from pt-misc.h. * pt-arg-list.cc, pt-stmt.cc: New files, extracted from pt-misc.cc. * pt-decl.h, pt-except.h, pt-jump.h, pt-loop.h, pt-select.h: New files, extraced from pt-cmd.h. * pt-decl.cc, pt-except.cc, pt-jump.cc, pt-loop.cc, pt-select.cc: New files, extraced from pt-cmd.cc. * pt-unop.h, pt-binop.h, pt-colon.h, pt-idx.h, pt-assign.h: New files, extracted from pt-exp.h * pt-unop.cc, pt-binop.cc, pt-colon.cc, pt-idx.cc, pt-assign.cc: New files, extracted from pt-exp.cc * pt-exp.h, pt-exp.cc: Rename from pt-exp-base.h, pt-exp-base.cc. * oct-lvalue.h: Rename from oct-var-ref.h. Rename class from octave_variable_reference to octave_lvalue. Change all uses. * oct-lvalue.cc: Rename from oct-var-ref.cc. * variables.cc (bind_ans): Only bind ans and print result if value is defined. * defun.cc: New file. Move functions for installing objects in the symbol table here from variables.cc. * oct-obj.h, oct-obj.cc: Add custom allocator, fwiw. * toplev.cc (main_loop): Correctly increment command number. * TEMPLATE-INST/SLList-tm.cc: Don't instantiate lists of pointers to tree_matrix_row objects. * TEMPLATE-INST/SLList-misc.cc: Do instantiate lists of pointers to tree_argument_list objects. * DLD-FUNCTIONS/dassl.cc: Update to use new octave_function interface to user-supplied functions. * DLD-FUNCTIONS/fsolve.cc: Likewise. * DLD-FUNCTIONS/lsode.cc: Likewise. * DLD-FUNCTIONS/npsol.cc: Likewise. * DLD-FUNCTIONS/quad.cc: Likewise. * dynamic-ld.h, dynamic-ld.cc (builtin_fcn_installer typedef): Rename from builtin_fcn. (octave_dynamic_loader::load_fcn_from_dot_oct_file): Simplify by using new installer function defined by DEFUN_DLD. * defun-dld.h (DEFUN_DLD): Use DEFINE_FUN_INSTALLER_FUN instead of DEFINE_FUN_STRUCT_FUN. * defun.h (DEFUN_MAPPER): Use DEFUN_MAPPER_INTERNAL. * defun-int.h (DEFVAR_INTERNAL): Rename from DEFVAR_INT and move here from defun.h. Change all uses. (DEFUN_MAPPER_INTERNAL): New macro. (DEFINE_FUN_INSTALLER_FUN): New macro to define function that the dynamic loader calls to do all the work of installing a new function. (DEFINE_FUN_STRUCT_FUN): Delete. * parse.y: Rewrite to handle more general expressions. * lex.l: Corresponding changes. * pt-walk.h, pt-pr-code.h, pt-pr-code.cc: Cope with new parse tree object structure. * pt-misc.cc (class tree_for_command): Split into tree_simple_for_command and tree_complex_for_command classes. * pt-misc.h, pt-misc.cc (tree_statement::eval): Handle identifier lookup and printing and binding ans here. (tree_statement_list::eval): Simplify. (tree_argument_list::all_elements_are_constant): New function. (class tree_decl_elt): Now contains id and expr, not an assignment expression. * pt-exp-base.h pt-exp.h pt-id.h pt-indir.h pt-mat.h pt-const.h, pt-exp-base.cc pt-exp.cc pt-id.cc pt-indir.cc pt-mat.cc pt-const.cc: Replace eval functions with rvalue and lvalue functions. Change all uses. (lvalue_ok, rvalue_ok): New functions, for future compile-time semantic checks. * oct-var-ref.h (is_defined, is_map): New functions. * pt-exp.h (class tree_oct_obj): Delete. * variables.cc (extract_function, is_valid_function): Return pointer to octave_function, not octave_symbol. (link_to_global_variable): Rewrite. Handle errors in symbol_record::mark_as_linked_to_global. * symtab.h, symtab.cc (class symbol_def, class symbol_record): Symbols are now stored as octave_value objects only. * ov.cc (install_types): Register function types here. * ov-fcn.h, ov-fcn.cc, ov-builtin.h, ov-builtin.cc, ov-mapper.h, ov-mapper.cc, ov-usr-fcn.h, ov-usr-fcn.cc: New classes for functions as values. * ov.h (class octave_value): Don't derive from octave_symbol. * oct-fcn.h, oct-fcn.cc, oct-builtin.h, oct-builtin.cc, oct-mapper.h, oct-mapper.cc, oct-usr-fcn.h, oct-usr-fcn.cc, oct-sym.h, oct-sym.cc: Delete. Sun May 11 17:51:22 1997 John W. Eaton * help.cc (Ftype): Make it work again for functions. * pt-pr-code.cc (tree_print_code::print_parens): New function. Use it in other tree_print_code functions to handle printing all the parens that we found when parsing the expression, not just one pair. * pt-exp-base.h (tree_expression::paren_count): Rename from is_in_parens. * parse.y (maybe_warn_assign_as_truth_value): Use new name. * parse.y (constant): New non-terminal. (simple_expr1): Use it. * parse.y (make_unary_op): Delete. (simple_expr1): Where appropriate, use make_prefix_op and make_postfix_op instead of make_unary_op. Allow increment and decrement ops to work on expressions, not just identifiers. (make_prefix_op, make_postfix_op): Arg is expression, not identifier. Handle old unary_op cases too. (fold (tree_unary_expression *)): Delete. * pt-exp.h, pt-exp.cc (tree_prefix_expression::eval): Handle unary minus and not here. (tree_postfix_expression::eval): Likewise, for transpose and hermitian. (class tree_prefix_expression, class tree_postfix_expression): Derive from tree_unary_expression. Delete identifier member. Delete ident member function. (tree_unary_expression): Don't handle evaluation here. * pt-exp-base.h (mark_in_parens): No longer virtual. Return this. (reference): New virtual function. (class tree_expression): Don't handle expression type here. * pt-mvr-base.h (tree_multi_val_ret::tree_multi_val_ret): Likewise. * pt-mvr.h, pt-mvr.cc (tree_multi_assignment_expression): Likewise. * pt-walk.h (visit_unary_expression): Delete declaration. * pt-pr-code.h, pt-pr-code.cc (visit_unary_expression): Delete. (visit_prefix_expression): Use operand(), not ident(). new, visit_postfix_expression): * pt-id.h, pt-id.cc (increment, decrement): Delete. * pt-misc.cc (tree_parameter_list::define_from_arg_vector): Get a reference to each element and use the assignment operator instead of tree_identifier::define. * pt-id.h, pt-id.cc (tree_identifier::define): Delete versions that take octave_value and octave_symbol args. Sat May 10 23:32:13 1997 John W. Eaton * pt-indir.h, pt-indir.cc (tree_indirect_reference::value): Delete. * oct-var-ref.cc (octave_variable_ref::assign): Clear idx after assignment. * octave_value classes: Add is_constant, is_function, and function_value functions. * ov.h, ov.cc (assign): Return void, not reference to octave_value. (do_index_op): Rename, from index. (do_struct_elt_index_op): Rename, from struct_elt_val. Add version that accepts index arg. Change all uses and derived classes to match. * pt-const.h (index): Delete. * oct-var-ref.h, oct-var-ref.cc (value): Handle indexed structure ops here too. Fri May 9 07:40:59 1997 John W. Eaton * pt-exp.cc (print_rhs_assign_val, symbols_of_pt_exp): New functions. (Vprint_rhs_assign_val): New static variable. (tree_simple_assignment_expression::eval): Use it to optionally allow the rhs (which is the result) of an assignment to be printed instead of the left. * pt-exp.cc (tree_simple_assignment_expression::eval): Use new octave_variabl_reference::index function to handle indexing. * oct-var-ref.h, oct-var-ref.cc (idx): New data member. (octave_variable_reference::index): Set it. (octave_variable_reference::assign): Handle indexing here. Delete version of this function htat takes index arg. * variables.h (struct builtin_varaible): Delete. * variables.cc (install_builtin_variable): Take all elts of builtin_variable struct directly. * defun.h (DEFVAR_INT): Call install_builtin_variable directly. * symtab.h, defun-int.h: Don't include variables.h. * symtab.h (symbol_record::sv_function): Move typedef here. * variables.h: From here. * oct-var-ref.h, oct-var-ref.cc: New files for octave_variable_reference class, extracted from variables.h and variables.cc * Makefile.in: Add them to the appropriate lists. * oct-obj.h (octave_value_list::empty): New function. * variables.h (class octave_variable_reference): Rewrite to work as a proxy class to store a pointer to octave_value and, optionally, the change function to call and the name of the structure element we are referencing. Handle assignment, increment, decrement, and value operations. Thu May 8 23:40:59 1997 John W. Eaton * ov-re-mat.h, ov-re-mat.cc (struct_elt_ref, struct_elt_val, assign_struct_elt): Provide functions for looking up and setting matrix dimensions. * symtab.cc (symbol_record::define): Don't call sv_fcn here. Don't save and restore value here. (symbol_record::define_builtin_var): Do call sv_fcn here. (symbol_record::variable_reference): Don't make value unique here. Return pointer to sv_fcn in octave_variable_reference. * pt-misc.cc (tree_parameter_list::initialize_undefined_elements): Simplify. * pt-id.h, pt-id.cc (tree_identifier::reference): Return octave_variable_reference, not octave_value&. * symtab.h, symtab.cc (symbol_record::variable_reference): Ditto. * pt-indir.h, pt-indir.cc (tree_indirect_ref::reference): Ditto. Simplify too. * pt-const.h (tree_constant::reference, tree_constant::value, tree_constant::assign): Delete unnecessary functions. * pt-id.h, pt-id.cc (tree_identifier::assign): Ditto. * pt-cmd.cc (tree_for_command::do_for_loop_once): Simplify. * ov.h, ov.cc, ov-base.h, ov-base.cc, ov-struct.h, ov-struct.cc (struct_elt_ref): New arg, octave_value* parent. Allow deferred lookup. Return octave_variable_reference, not octave_value&. * ov.h, ov.cc, ov-re-mat.h, ov-re-mat.cc (assign_struct_elt): New virtual functions. * ov.h, ov.cc (Vresize_on_range_error): Now static. * pt-mvr.cc (tree_index_expression::eval): Delete redundant check of error_state. Wed May 7 21:17:00 1997 John W. Eaton * input.cc (generate_completion): Rename from command_generator. Use string objects instead of char*. (generate_possible_completions): Let qsort also make matches unique. (initialize_command_input): Register generate_completion with the command_editor class. (completion_matches): Simplify using generate_completion. * pt-pr-code.cc (tree_print_code::visit_constant): For val, call print_raw, not print. * oct-usr-fcn.h (octave_user_function::argn_sr): New data member. (octave_user_function::install_automatic_vars): Rename from install_nargin_and_nargout. (octave_user_function::bind_automatic_vars): Rename from bind_nargin_and_nargout. * oct-usr-fcn.cc (octave_user_function::eval): Extract arg names from args vector and bind them to argn. * oct-obj.h (octave_value_list::names): New data member. * oct-obj.cc (octave_value_list::stash_name_tags): New function. (octave_value_list::name_tags): Ditto. * pt-const.h, pt-const.cc (tree_constant::print_raw): New function. * pt-misc.h, pt-misc.cc (tree_argument_list::get_arg_names): New function. * pt-mvr.h, pt-mvr.cc (class index_expression): Cache arg names. * toplev.cc (feval): Now static. Handle arg names. * mkops: Cope with moving files defining operators to OPERATORS subdirectory. Tue May 6 00:48:59 1997 John W. Eaton * DLD-FUNCTIONS/getgrent.cc: Use new octave_group class. * DLD-FUNCTIONS/getpwent.cc: Use new octave_passwd class. * syscalls.cc: Simplify by using new functions defined in liboctave/oct-syscalls.cc. * file-io.cc (Ftmpnam): Accept DIR and PREFIX args. Mon May 5 00:54:03 1997 John W. Eaton * ov-str-mat.cc (octave_char_matrix_str::print_name_tag): Print empty strings on one line. * DLD-FUNCTIONS, OPERATORS, and TEMPLATE-INST: New subdirectories. Move appropriate files to new directories. * Makefile.in: Add DLD-FUNCTIONS, OPERATORS, and TEMPLATE-INST directories to VPATH. Fix rules to work with new directory structure. Sun May 4 22:40:45 1997 John W. Eaton * input.cc (initialize_command_input): Rename from initialize_readline. (gnu_readline, octave_gets, get_user_input): Simplify, return string, not char *. * Many of other files: Miscellaneous changes to go along with the changes described in the liboctave/ChangeLog for May 4. More code moved from here to liboctave. Fri May 2 19:50:33 1997 John W. Eaton * pathlen.h: Move to ../liboctave. Thu May 1 21:50:44 1997 John W. Eaton * variables.cc (get_struct_elts): New fucntion. (looks_like_struct, generate_struct_completions): Move here from input.cc, rewrite, and make work again. Wed Apr 30 00:24:05 1997 John W. Eaton * ov-base.h, ov-bool-mat.cc, ov-bool-mat.h, ov-bool.cc, ov-bool.h, ov-ch-mat.cc, ov-ch-mat.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-file.cc, ov-file.h, ov-list.cc, ov-range.cc, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc, ov-scalar.h, ov-str-mat.cc, ov-struct.cc, ov.h (scalar_value): New function. Same as double_value, but name is consistent with octave_scalar class. * op-fil-b.cc, op-fil-cm.cc, op-fil-lis.cc, op-fil-rec.cc, op-fil-str.cc, op-fil-bm.cc, op-fil-cs.cc, op-fil-m.cc, op-fil-s.cc: New files. * ops.h (ASSIGNOPDECL, DEFASSIGNOP, DEFASSIGNOP_FN, CONVDECL, DEFCONV, BINOPDECL, DEFBINOPX, DEFBINOP, DEFBINOP_OP, DEFBINOP_FN, BINOP_NONCONFORMANT): New macros. * op-b-b.cc, op-bm-bm.cc, op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc, op-cm-s.cc, op-cs-cm.cc, op-cs-cs.cc, op-cs-m.cc, op-cs-s.cc, op-m-cm.cc, op-m-cs.cc, op-m-m.cc, op-m-s.cc, op-s-cm.cc, op-s-cs.cc, op-s-m.cc, op-s-s.cc, op-str-str.cc: Use them. * Makefile.in (octave): Also depend on ops.o. * builtins.h: Delete. * octave.cc: Add extern declaration here. * mappers.h: Delete. * Makefile.in (INCLUDES): Delete from list. * mkbuiltins: Add extern declaration in builtins.cc. * mkops: New file. * ops.cc: Delete. * Makefile.in (SOURCES): Delete from the list. (ops.cc): New target. (OP_SOURCES): New list. Move all op-*.cc files here from SOURCES. Add $(OP_SOURCES) to SOURCES list. * variables.cc (symbols_of_variables): No longer static. * ov.cc (symbols_of_ov): Rename from symbols_of_value. * ov-base.h: Delete declaration for install_base_type_conversions. * op-b-b.h, op-bm-bm.h, op-cm-cm.h, op-cm-cs.h, op-cm-m.h, op-cm-s.h, op-cs-cm.h, op-cs-cs.h, op-cs-m.h, op-cs-s.h, op-m-cm.h, op-m-cs.h, op-m-m.h, op-m-s.h, op-s-cm.h, op-s-cs.h, op-s-m.h, op-s-s.h, op-str-str.h: Delete. * Makefile.in (INCLUDES): Delete them from the list. Tue Apr 29 22:27:49 1997 John W. Eaton * variables.h, variables.cc (install_builtin_variables): Delete. * mkbuiltins: Also generate install_builtin_variables function. * Makefile.in: Fix rule to call mkbuiltins with correct args. (clean): Also delete def-files and var-files. * defaults.h.in, dirfns.h, error.h, file-io.h, help.h, input.h, lex.h, load-save.h, oct-usr-fcn.h, pager.h, parse.h, pr-output.cc, pr-output.h, pt-mat.h, pt-misc.h, pt-plot.h, toplev.h: Delete declarations of symbols_of_* functions. * data.h, syscalls.h: Delete. * pr-output.cc (octave_print_internal): Leave printing of final new line up to the caller. * ov.h, ov.cc (reset_indent_level, increment_indent_level, decrement_indent_level, newline, indent, reset, curr_print_indent_level, beginning_of_line): New functions and static data to manage indent level for printing. (print_as_scalar): Delete. (print, print_with_name): Always require stream arg. Change all callers. * oct-stream.h (octave_stream::input_stream): Make publicly available. (octave_stream::output_stream): Likewise. * ov-base.h, ov-base.cc, ov.h, ov.cc, ov-file.h ov-base.h (is_file, stream_value, stream_number): New functions. * ov-file.h, ov-file.cc: New files for value class to manage files. * file-io.cc (symbols_of_file_io): Define stdin, stdout, and stderr as octve_file objects, not just integers. (Ffopen, Fpopen): Return octave_file objects, not integer file ids. * syscalls.cc (Fpipe): Likewise. * oct-stream.h, oct-stream.cc (octave_stream_list::insert): Return octave_file object, not integer file id. * ov-base.cc, ov-bool-mat.cc, ov-bool.cc, ov-ch-mat.cc, ov-complex.cc, ov-cx-mat.cc, ov-file.cc, ov-list.cc, ov-range.cc, ov-re-mat.cc, ov-scalar.cc, ov-str-mat.cc, ov-struct.cc, ov.cc (print_name_tag, print_raw): New functions. * help.cc (Ftype): Don't cast symbol definition to tree_constant *. * variables.cc (link_to_global_variable): Don't try to define symbol with tree_constant objects. (bind_ans): Call symbol_record::define directly and then octave_value::print_with_name instead of creating a temporary assignment expression. * pt-pr-code.cc (tree_print_code::indent): Don't use ostream::form. * pt-exp-base.h, pt-exp.h, pt-exp.cc (oper): Return string, not char *. Change all where necessary. Mon Apr 28 16:33:49 1997 John W. Eaton * ov.h (octave_value binary_op enum): Add lshift and rshift. (octave_value assign_op enum): Add lshift_eq and rshift_eq. * ov.cc (assign_op_as_string, binary_op_as_string): Include them. * parse.y (LSHIFT_EQ RSHIFT_EQ LSHIFT RSHIFT): New tokens. Add them to the precedence list. (simple_expr): Add new operators. (make_assign_op, make_binary_op): Handle new operators. * lex.l: Recognize new operators. * lex.l: Recognize them. Sun Apr 27 20:17:49 1997 John W. Eaton * pt-misc.cc (Vsilent_functions, silent_functions): Move here from oct-usr-fcn.cc. (symbols_of_pt_misc): New function. DEFVAR silent_functions. (tree_statement_list::eval): Handle Vsilent_functions here instead of in octave_user_function::eval. (tree_statement::eval): New functions. (tree_statement_list::eval): Use them. Change print flag arg to silent flag. Change all callers. * variables.cc (install_builtin_variables): Call symbols_of_pt_misc. * toplev.cc (parse_and_execute): Delete print arg. Change all callers. (eval_string): Change print flag arg to silent flag. Change callers. * dynamic-ld.h, dynamic-ld.cc: Rewrite to use singleton class. * variables.cc (load_fcn_from_file): Use new dynamic linking class. * dynamic-ld.h (Octave_builtin_fcn): Delete typedef. * dynamic-ld.cc: Simplify via the magic of function pointers. * pt-fcn.h pt-fcn.cc pt-fvc.h pt-fvc.cc pt-fvc-base.h pt-fvc-base.cc: Delete obsolete files. * Makefile.in: Remove them from various lists. * pt-walk.h (visit_octave_user_function): Rename from visit_function. (visit_builtin): Delete. * pt-pr-code.h, pt-pr-code.cc (visit_octave_user_function): Rename from visit_function. (visit_octave_user_function_header): Rename from visit_function_header. (visit_octave_user_function_trailer): Rename from visit_function_trailer. * ov.h, ov.cc (eval): New functions. * dassl.cc, fsolve.cc, lsode.cc, npsol.cc, qpsol.cc, quad.cc: Declare user-defined functions as a pointer to an octave_symbol object, not as a pointer to a tree_fvc object. * symtab.h, symtab.cc: Use new octave_symbol class. * variables.cc (install_builtin_function, install_builtin_mapper, install_builtin_variable, install_builtin_variable_as_function): Make work with new octave_symbol class and symbol table structure. * variables.h: Delete declaration of builtin_function struct. * defun-dld.h (DEFUN_DLD): Simplify. * defun-int.h (DEFINE_FUN_STRUCT): Delete. (DEFINE_FUN_STRUCT_FUN): Rewrite to not use static builtin_function object. * mappers.h: Delete declaration of builtin_mapper_function struct. * mappers.cc: Declare wrapper functions static. * defun.h (DEFUN_MAPPER): Simplify. * oct-sym.h: New file. Declare base class for Octave symbols. * ov.h: Derive octave_value class from octave_symbol. * oct-fcn.h, oct-fcn.cc: New files to declare and define base class for functions. * oct-builtin.h, oct-builtin.cc: New files to declare and define class for built-in functions. * oct-mapper.h, oct-mapper.cc: New files to declare and define class for mapper functions. * oct-usr-fcn.h, oct-usr-fcn.cc: New files to declare and define base class for user-defined functions. * Makefile.in: Add new files to appropriate lists. * pt-id.h, pt-id.cc: Move tree_identifier class here. * pt-fvc.h, pt-fvc.cc: From here. * pt-indir.h, pt-indir.cc: Move tree_indirect_ref class here. * pt-fvc.h, pt-fvc.cc: From here. Thu Apr 24 03:58:16 1997 John W. Eaton * parse.y (magic_colon): New nonterminal. (arg_list): Simplify using magic_colon. * lex.h (class lexical_feedback): Delete maybe_screwed field. New field, parsed_function name. * lex.l (lexical_feedback::init): Initialize it. (handle_identifier): Don't return SCREW. Handle switching symbol table context properly for `function f ()' vs `function x ='. (is_keyword): If looking at function keyword, don't set current symbol table to point to the local table. * parse.y (recover_from_parsing_function): New function. (finish_function_def): Use identifier, not token. Simplify parsing of functions. * ov-list.h, ov-list.cc: New files to implement generic list type. * ov.cc (list_indent): New global variable. (increment_list_indent, decrement_list_indent): New functions. (install_types): Register octave_list type. * ov-base.cc (octave_base_value::is_list): New function. * oct-sym.h: New file. * ov.h (class octave_value): Derive from octave_symbol class. * pt-const.h, pt-const.cc: Delete lots of old useless cruft. * pt-exp.h, pt-exp.cc (tree_binary_expression): Use type codes for operators from octave_value instead of repeating them here. * pt-fvc-base.cc (tree_fvc::increment, tree_fvc::decrement): Delete. * pt-fvc.cc (tree_identifier::increment): Get reference to value and increment that instead of using virutal tree_fvc::increment function. * lex.l: Handle +=, -=, *=, /=, .+=, .-=, .*=, ./=, &=, and |= ops. * parse.y (make_assign_op): Rename from make_simple_assignment and handle different op types. (simple_expr1): Do new ops. * pt-misc.cc (initialize_undefined_elements): Pass op to assign. * pt-cmd.cc (tree_for_command::do_for_command_once): Likewise. * pt-fvc.cc (tree_identifier::assign): Pass op. * pt-exp.cc (tree_simple_assignment_expression): Handle new ops. * variables.cc (octave_variable_reference::assign): Likewise. * ov.h (class octave_value): Likewise. * ov.cc (octave_value::assign_op_as_string): New function. (octave_value::assign, octave_value::convert_and_assign, octave_value::try_assignment_with_conversion, octave_value::try_assignment): Pass op. * pt-pr-code.cc (tree_print_code::visit_simple_assignment_expression): Use expr.oper() instead of printing "=". * op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc, op-cm-s.cc, op-m-m.cc, op-m-s.cc, op-str-str.cc: Pass op to INSTALL_ASSIGNOP. * ops.h (INSTALL_ASSIGNOP): Pass op. * ov-typeinfo.cc (do_register_assign_op): Include op type in table. (do_lookup_assign_op): Use op in lookup. * ops.h (INSTALL_UNOP): Delete. * input.cc (generate_struct_completions, looks_like_struct): Disable, since they don't work now anyway. * help.cc (Ftype): Work with octave_value instead of a pointer to tree_constant. * symtab.cc (symbol_record_info::symbol_record_info): Likewise. Tue Apr 22 22:59:55 1997 John W. Eaton * file-io.cc (Ffprintf): If first arg is a string, assume FID = 1. Fri Apr 18 20:16:34 1997 John W. Eaton * oct-obj.h, oct-obj.cc: Implement octave_value_list with Array as a data member, not as a class derived from Array. (octave_value_list::length, octave_value_list::resize, octave_value_list::prepend, octave_value_list::append, octave_value_list::reverse): New functions. * op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc, op-cm-s.cc, op-cs-cm.cc, op-cs-m.cc, op-m-cm.cc, op-m-cs.cc, op-m-m.cc, op-m-s.cc, op-s-cm.cc, op-s-m.cc: Use new bool ops from liboctave instead of the macros defined in ops.h. Thu Apr 17 13:12:22 1997 John W. Eaton * parse.y (ABORT_PARSE): Handle forced_interactive the same as interactive. Mon Apr 14 01:46:50 1997 John W. Eaton * input.cc (octave_read): Don't forget to free input buffer if it exists and has zero length. (gnu_readline): Free buf if fgets returns 0. Wed Apr 9 00:03:57 1997 John W. Eaton * time.cc (mk_tm_map): Only set zone field if HAVE_TM_ZONE or HAVE_TZNAME are defined. Tue Apr 8 12:39:21 1997 John W. Eaton * time.cc (extract_tm): Set tm.tm_zone if HAVE_TM_ZONE is defined, not if HAVE_TMZONE is defined. * Makefile.in (%.oct : %.o): Use $(SH_LD), not $(CXX). Wed Apr 2 21:32:16 1997 John W. Eaton * dynamic-ld.cc, dynamic-ld.h (init_dynamic_linker): Delete function and declaration. * octave.cc (main): Don't call it. Mon Mar 31 00:37:48 1997 John W. Eaton * pt-base-exp.h (tree_expression::eval): Give arg a default value. * pt-const.h (tree_constant::eval): Likewise. * pt-exp.h (tree_prefix_expression::eval, tree_colon_expression::eval, tree_postfix_expression::eval, tree_unary_expression::eval, tree_binary_expression::eval, tree_boolean_expression::eval, tree_simple_assignment_expression::eval): Likewise. * pt-fcn.h (tree_function::eval): Likewise. * pt-fvc.h (tree_identifier::eval, tree_indirect_ref::eval, tree_builtin::eval): Likewise. * pt-mat.h (tree_matrix::eval): Likewise. * pt-misc.h (tree_statement_list::eval): Likewise. * pt-mvr-base.h (tree_multi_val_ret::eval): Likewise. * pt-mvr.h (tree_oct_obj::eval, tree_index_expression::eval, tree_multi_assignment_expression::eval): Likewise. * dassl.cc, fsolve.cc, load-save.cc, lsode.cc, npsol.cc, parse.y, pt-cmd.cc, pt-exp-base.cc, pt-exp.cc, pt-fvc.cc, pt-mat.cc, pt-misc.cc, pt-mvr.cc, pt-plot.cc, quad.cc, toplev.cc, variables.cc: Change callers of eval() to use bool instead of int and to make use of default argument value. * toplev.h, toplev.cc (parse_and_execute, eval_string): Flag args are now bool instead of int. * symtab.h, symtab.cc: Use bool instead of int in more places. * variables.h, variables.cc: Likewise. * lex.h, lex.l: Likewise. * parse.y: Likewise. * help.cc, input.cc, lex.l, load-save.cc, parse.y, pt-fcn.cc: Change callers of symbol_table::lookup to use bool instead of int, and to make use of default arguments. Fri Mar 28 15:33:11 1997 John W. Eaton * parse.y (Vwarn_comma_in_declaration): Delete. (symbols_of_parse): Delete DEFVAR for warn_comma_in_declaration. (decl1): Don't allow commas in declarations. * lsode.cc (struct LSODE_OPTIONS): Handle integer options. (print_lsode_option_list, set_lsode_option, show_lsode_option): Ditto. (lsode_option_table): Add element for step limit. (lsode_user_jacobian): New function. (Flsode): Allow function name arg to be a 2-element string array specifying the function and jacobian function. * variables.cc (get_global_value, set_global_value): New functions. Wed Mar 26 17:08:27 1997 John W. Eaton Implement static variable declaration: * lex.l (is_keyword): Handle static. * octave.gperf: Likewise. * parse.y (Vwarn_comma_in_declaration): Rename from Vwarn_comma_in_global_decl. Handle new static command. * pt-cmd.h, pt-cmd.cc (class tree_decl_command): New base class for static and global declaration commands. (class tree_global_command): Derive from tree_decl_command. (class tree_static_command): New class, derived from tree_decl_command. * pt-fvc.cc, pt-fvc.h (tree_identifier::mark_as_static): New function. * pt-misc.h, pt-misc.h (class tree_decl_elt): Rename from tree_global. (class tree_decl_init_list): Rename from tree_global_init_list. * pt-pr-code.cc, pt-pr-code.h (tree_print_code::visit_decl_command): Rename from visit_global_command. (tree_print_code::visit_decl_elt): Rename from visit_global. (tree_print_code::visit_decl_init_list): Rename from visit_global_init_list. * pt-walk.h (tree_walker::visit_decl_command): Rename from visit_global_command. (tree_walker::visit_decl_elt): Rename from visit_tree_global. (tree_walker::visit_decl_init_list): Rename from visit_global_init_list. * variables.cc (link_to_global_variable): Trying to make a static variable global is an error. * SLList-misc.cc: Instantiate lists of pointers to tree_decl_elt objects, not tree_global objects. * symtab.h, symtab.cc (symbol_record::tagged_static): New field. (symbol_record::mark_as_static, symbol_record::is_static): New functions. * symtab.cc (symbol_record::init_state): Initialize tagged_static. (symbol_record::clear): Don't clear static variables. * symtab.cc (push_context): Don't do anything for static variables. Tue Mar 25 17:17:17 1997 John W. Eaton * ov-bool-mat.cc, ov-bool-mat.h, ov-bool.cc, ov-bool.h: New files. * defaults.cc (symbols_of_defaults): DEFCONST OCTAVE_HOME. * toplev.cc (octave_config_info): Delete use of CXXLIBS. * oct-conf.h.in: Ditto. * octave.cc (maximum_braindamage): Don't bind prefer_zero_one_indexing. * ov.h: Don't declare Vprefer_zero_one_indexing. * ov.cc: Don't define Vprefer_zero_one_indexing. (prefer_zero_one_indexing): Delete. (symbols_of_value): Delete DEFVAR for prefer_zero_one_indexing. * ov.h, ov.cc, ov-base.h, ov-base.cc: Add constructors and extractors for bool and boolMatrix types. * ov.cc (install_types): Register octave_bool and octave_bool_matrix types. * op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc, op-cm-s.cc, op-cs-cm.cc, op-cs-m.cc, op-m-cm.cc, op-m-cs.cc, op-m-m.cc, op-m-s.cc, op-s-cm.cc, op-s-m.cc, op-s-s.cc, ov-re-mat.cc: Return boolMatrix instead of Matrix object. * ops.h (BOOL_OP3, MX_MX_BOOL_OP): Likewise. * op-b-b.h, op-b-b.cc, op-bm-bm.h, op-bm-bm.cc: New files. * Makefile.in: Add them to the lists. * ops.cc: Include header files here. (install_ops): Call install_b_b_ops() and install_bm_bm_ops() here. * variables.cc (symbols_of_variables): Don't rely on default conversion from int to double for value returned from default_history_size(). * pr-output.cc: Include cstdio. * parse.y (param_list_end): Fix typo in last change. * quad.cc (quad): Cast integer return values to double. * npsol.cc (show_npsol_option): Likewise. * qpsol.cc (show_qpsol_option): Likewise. * file-io.cc (Fsprintf, Ffwrite): Likewise. Mon Mar 24 13:11:47 1997 John W. Eaton * ov-typeinfo.cc (typeinfo): If invoked with an argument, return the type of the argument as a string. Fix doc string. Thu Mar 20 14:47:49 1997 John W. Eaton * mk-oct-links (links_dir): Don't use -h option for grep. It's not needed since we are working on one file at a time anyway. Mon Mar 17 10:53:29 1997 John W. Eaton * lex.l (handle_identifier): When handling indirect_ref, set lexer_flags.quote_is_transpose to 1 so that a.b' to work as expected. * parse.y (param_list_beg, param_list_end): New nonterminals. (param_list, param_list1): Use them. Wed Mar 12 16:57:28 1997 John W. Eaton * Makefile.in (install-strip): New target. Mon Mar 10 22:38:16 1997 John W. Eaton * Makefile.in (clean): Delete .oct files too. * toplev.cc (Vdefault_eval_print_flag): New static variable. (eval_string): New arg, print. (Feval): Pass Vdefault_eval_print_flag to eval_string. (default_eval_print_flag): New function. (symbols_of_toplev): New function. * variables.cc (install_builtin_variables): Call it. * pt-exp.h, pt-exp.cc (class tree_boolean_expression): Rename enum fields `and' and `or' to `bool_and' and `bool_or'. (tree_unary_expression): Rename enum field `not' to `unot'. (class tree_binary_expression): Rename enum fields `and' and `or' to `el_and' and `el_or'. * parse.y: Change all uses. * time.cc (extract_tm): Truncate field values instead of rounding. (gmtime, localtime): Likewise, for timeval. * ov.h (class octave_value): Delete unused variable freeptr. * mappers.cc: Delete functions that are already in liboctave/lo-mappers.cc. * oct-strstrm.cc (octave_base_strstream::tell): Use const_cast, not static_cast. * help.cc (help_from_list): Add missing const qualifiers. * help.h (struct help_list): Likewise. * lex.l (match_any, plot_style_token): Likewise. * load-save.cc (extract_keyword, ascii_save_type): Likewise. * oct-hist.cc (mk_tmp_hist_file): Likewise. * octave.cc (execute_startup_files): Likewise. * octave.gperf (struct octave_kw): Likewise. * pr-output.cc (pr_any_float): Likewise. * pt-mvr.cc (tree_index_expression::eval_error): Likewise. * pt-exp-base.h, pt-exp.h, pt-exp.cc: Likewise. * parse.y: Likewise. Sun Mar 9 03:46:45 1997 John W. Eaton * pt-exp-base.h (tree_expression): Delete extra comma at end of list. * dirfns.cc error.cc file-io.cc fsolve.cc input.cc load-save.cc npsol.cc pt-fcn.cc qpsol.cc quad.cc syscalls.cc toplev.cc variables.cc: Eliminate embedded newlines in string constants. * Map.cc, data.cc, dirfns.cc, dynamic-ld.cc, file-io.cc, fsolve.cc, getgrent.cc, getpwent.cc, getrusage.cc, help.cc, input.cc, load-save.cc, mappers.cc, minmax.cc, npsol.cc, oct-fstrm.cc, oct-procbuf.h, oct-stdstrm.cc, oct-stdstrm.h, oct-stream.cc, oct-stream.h, oct-strstrm.cc, octave.cc, ov-base.h, ov-range.cc, ov-typeinfo.cc, ov.cc, pr-output.cc, pt-cmd.cc, pt-exp.cc, pt-fcn.cc, pt-fvc.cc, pt-mat.cc, pt-misc.cc, pt-plot.cc, qpsol.cc, quad.cc, sort.cc, strfns.cc, symtab.cc, syscalls.cc, sysdep.cc, time.cc, toplev.cc, unwind-prot.cc, unwind-prot.h, variables.cc, xpow.cc: Use `static_cast (val)' instead of old C-style `(T) val' casts. Sat Mar 8 02:35:13 1997 John W. Eaton * load-save.cc (save_ascii_data, save_three_d): Where appropriate, use bool instead of int. (save_binary_data, save_mat_binary_data, save_ascii_data): Print warning instead of error for wrong type arg. * gripes.cc (gripe_wrong_type_arg): New arg, is_error. * pt-plot.cc (save_in_tmp_file): Call save_ascii_data with bool arg, not int. Fri Mar 7 00:56:16 1997 John W. Eaton * dassl.cc (show_dassl_option): For values that are determined automatically, return a string instead of a magic value (-1.0). * fsolve.cc (show_fsolve_option): Likewise. * lsode.cc (show_lsode_option): Likewise. * npsol.cc (show_npsol_option): Likewise. * qpsol.cc (show_qpsol_option): Likewise. * variables.cc (extract_function): New function. * dassl.cc (Fdassl): Use it instead of is_valid_function. * fsolve.cc (Ffsolve): Likewise. * npsol.cc (Fnpsol): Likewise. * qpsol.cc (Fqpsol): Likewise. * quad.cc (Fquad): Likewise. Thu Mar 6 20:07:24 1997 John W. Eaton * sighandlers.cc (my_friendly_exit, octave_new_handler, sigfpe_handler, sigpipe_handler): Don't all error() or warning(). * pager.cc (pager_death_handler): Don't try to clear pager, just print message to cerr. (do_sync): If the status of the pager is bad or it looks like it is dead, restore the interrupt handler. * load-save.cc (extract_keyword (istream&, char*, int&)): Move declaration of buf inside loop, to avoid deleting its guts and then trying to reuse it. (extract_keyword (istream&, char*)): Likewise. Tue Mar 4 20:36:53 1997 John W. Eaton * pt-fcn.cc (tree_function::eval): Protect function from being redefined while it is being evaluated. (unprotect_function): New function, for use with unwind_protect stuff. * pt-fcn.h (tree_function::symtab_entry): New data member. (tree_function::init): Initialize it to 0. (tree_function::stash_symtab_ptr): New function. * parse.y (frob_function_def): Stash pointer to function's symbol_record in the function definition. * symtab.cc (symbol_record::read_only_error): New argument, action. Change all callers. (symbol_record::rename): Don't allow read-only symbols to be renamed. * variables.cc (Fexist): Don't let files with `.' in their names confuse us. * symtab.cc (valid_identifier (const string&)): New function. Sat Mar 1 15:23:14 1997 John W. Eaton * Version 2.0.5 released. Sat Mar 1 01:34:08 1997 John W. Eaton * Makefile.in (stamp-oct-links): New target. Make links in build directory too, so that the tests will work. * quad.cc: If quad is defined, undefine it. * octave.cc: If WITH_KPATHSEARCH is defined, don't define program_invocation_name or program_invocation_short_name. * strftime.c: Update to current version from FSF. * time.cc (Fstrftime): Call strftime with buf = 0 to get buffer size, then call again to actually format the time struct. Fri Feb 28 01:49:48 1997 John W. Eaton Implement switch statement: * parse.y (Vwarn_variable_switch_label): New static variable. (warn_variable_switch_label): New function. (symbols_of_parse): Provide warn_variable_switch_label as Octave variable here. (make_switch_case, finish_switch_command): New functions. (maybe_warn_variable_switch_label): New function. (end_error): Handle endswitch. (switch_command, case_list, case_list1, switch_case, default_case): New nonterminals. (command): Add switch_command here. * lex.l (is_keyword): Handle switch, case, otherwise, and endswitch. * octave_gperf: Recognize switch, case, otherwise, and endswitch. * token.h (end_tok_type): New item, switch_end. * pt-cmd.cc (tree_switch_command): New class. * pt-misc.cc (tree_switch_case, tree_switch_case_list): New classes. * pt-pr-code.cc (tree_print_code::visit_switch_case, tree_print_code::visit_switch_case_list, tree_print_code::visit_switch_command): New functions. * pt-walk.h (tree_walker::visit_switch_case, tree_walker::visit_switch_case_list, tree_walker::visit_switch_command): New pure virtual declarations. Implement new switch statement. * SLList-misc.cc: Instantiate lists of pointers to tree_switch_case objects too. * lex.h, lex.l, parse.y: Delete all references to lexer_flags::iffing. * syswait.h: Include sys/wait.h on NeXT systems, but don't use the WIFEXTED, WEXITSTATUS, and WIFSIGNALLED macros defined there. Also define waitpid in terms of wait4. From Rex A. Dieter . Wed Feb 26 16:43:31 1997 John W. Eaton * oct-stream.cc (octave_base_stream::do_scanf): Don't report an error if a conversion fails or we reach EOF. Tue Feb 25 22:21:05 1997 John W. Eaton * time.cc (strftime): increase initial buffer size. Mon Feb 24 17:49:21 1997 John W. Eaton * pt-fvc.cc (tree_builtin::eval): Enable checking for max number of arguments. * error.cc (handle_message): Don't fail if args is empty. Sun Feb 23 22:42:52 1997 John W. Eaton * lex.h (lexical_feedback::looking_at_return_list): New field. (lexical_feedback::looking_at_parameter_list): Ditto. * lex.l (lexical_feedback::init): Initialize them. (handle_identifier): Use them. * parse.y: Likewise. Fri Feb 21 15:35:18 1997 John W. Eaton * lex.l: Require flex 2.5 or later (we really want 2.5.4 or later, but there seems to be no good way to check the patchlevel). * oct-stream.cc (octave_base_stream::oscanf): Instead of returning an error, just quit processing after a conversion fails. Thu Feb 20 02:58:05 1997 John W. Eaton * Version 2.0.4 released. Wed Feb 19 10:30:14 1997 John W. Eaton * sighandlers.cc (octave_ignore_interrupts, octave_catch_interrupts, octave_set_interrupt_handler): Return old value, not pointer to static data. Fix all uses. * sighandlers.h (octave_interrupt_handler): Move declaration here. * sighandlers.cc: From here. * toplev.cc: Undo previous change. * lex.l (handle_identifier): Allow commands like ls, save, etc. to also be used as simple variable names. Also make it possible to use the normal function call syntax to invoke them. Tue Feb 18 09:22:04 1997 John W. Eaton * Makefile.in (%.oct:%.o, %.oct:pic/%.o): Use $(SH_LDFLAGS) here. * Version 2.0.3 released. Tue Feb 18 00:27:49 1997 John W. Eaton * toplev.cc (run_command_and_return_output): Block SIGCHLD while running subprocess. (cleanup_iprocstream): Unblock it here. * sighandlers.h (BLOCK_SIGNAL, BLOCK_CHILD, UNBLOCK_CHILD): Move here. * sighandlers.cc: From here. * toplev.cc (system): Shift then mask exit status. * help.cc (try_info): Shift first, then mask exit status. * toplev.cc (octave_config_info): Handle option argument. Fri Feb 14 16:23:30 1997 John W. Eaton * oct-stream.cc (octave_base_stream::do_scanf): Don't forget to check to see if the result matrix needs resizing! * Makefile.in (bin-dist): Don't write empty strings to LIBRARIES. Thu Feb 13 03:02:08 1997 John W. Eaton * Makefile.in (stamp-prereq): Depend on stamp-picdir. (all): Don't depend on stamp-prereq or stamp-picdir. (stamp-tinst, stamp-interp, libtinst.a, liboctinterp.a): Do depend on stamp-prereq. (stamp-picdir): Silence noise about making pic. (stamp-tinst, stamp-interp): Use $(SH_LD) $(SH_LDFLAGS) instead of $(CXX) -shared. * oct-conf.h.in: Reinstate RLD_FLAG. * toplev.cc (octave_config_info): Likewise. * data.cc (map_d_m, map_m_d, map_m_m): Rename from map. (Fatan2): Use new function names. * pt-fvc.cc (apply_mapper_fcn): Use member function map() instead of friend function. * gripes.cc (gripe_wrong_type_arg (const char*, const string&)): New function. Wed Feb 12 17:27:53 1997 John W. Eaton * syscalls.cc (symbols_of_syscalls): Add O_ASYNC and O_SYNC. Mon Feb 10 01:22:27 1997 John W. Eaton * dirfns.cc (Freaddir, Fmkdir, Frmdir, Frename): Also return status and error message. * syscalls.cc (Fdup2, Fexec, Ffork, Ffcntl, Funlink, Fmkfifo, Fpipe, Fwaitpid): Also return error message. Sat Feb 8 17:16:09 1997 John W. Eaton * pt-exp.cc (tree_simple_assignment_expression::eval): Return value of RHS, but (if printing) print complete value of LHS. * pr-output.cc (octave_print_internal): Print a new line for empty string matrices. Wed Feb 5 14:30:44 1997 John W. Eaton * oct-stream.cc (scanf_format_list::process_conversion): Accept but don't actually use h, l, and L modifiers. Always insert l modifier for floating point conversions. Fri Jan 31 13:55:10 1997 John W. Eaton * pager.cc (do_sync): Always flush the cout stream after writing. Wed Jan 29 08:25:29 1997 John W. Eaton * defaults.cc (exec_path): Don't include bin_dir in std_path. * pager.cc (do_sync): Flush the cout stream after writing if running in interactive or forced_interactive mode. * mk-oct-links: Rename from mk-oct-links.in. Don't use symbolic links. * Makefile.in: Distribute mk-oct-links, not mk-oct-links.in (mk-oct-links): Delete target. (install-oct, bin-dist): Don't depend on mk-oct-links. Run $(srcdir)/mk-oct-links, not ./mk-oct-links. * qr.cc (qr): Doc fix. Tue Jan 28 10:48:28 1997 John W. Eaton * Makefile.in (install-inc): Create a relative symbolic link. (install-bin): Create a relative symbolic link. Mon Jan 27 12:12:03 1997 John W. Eaton * Version 2.0.2 released. * Makefile.in (CXXFLAGS_NO_PT_FLAGS): Rename from XALL_CXXFLAGS. Substitute bsd_gcc_kluge_targets_frag. * sysdep.cc (Fsleep): New function. (Fusleep): New function. * toplev.cc (octave_config_info): Don't include RLD_FLAG. * oct-conf.h.in: Don't define RLD_FLAG Sun Jan 26 19:41:48 1997 John W. Eaton * sighandlers.cc (sigchld_handler): Block SIGCHLD while sigchld_hander is running. Sat Jan 25 22:36:39 1997 John W. Eaton * Makefile.in (bin-dist): Update for 2.x. Fri Jan 24 10:05:00 1997 John W. Eaton * mk-oct-links.in: New arg, -p, to just print list of files to link. * lex.l (handle_number): Convert `D' or `d' exponents to `e' before scanning. Thu Jan 23 10:00:00 1997 John W. Eaton * pt-pr-code.h, pt-pr-code.cc (tree_print_code::visit_no_op_command): New function. * pt-cmd.h, pt-cmd.cc (tree_no_op_command): New class. * parse.y (make_break_command, make_continue_command, make_return_command): Where they don't really make sense, turn these commands into no-ops. Accept return and break if reading a script file. * toplev.cc (parse_and_execute): Handle return and break in script files. Quit executing commands if an error occurs when reading a script file. Set global_command to 0 after deleting it. (main_loop): If not interactive or forced_interactive, handle break and return, and quit executing commands if an error occurs. Set global_command to 0 after deleting it. * error.cc (Ferror): Doc fix. * pt-walk.h (tree_walker): Add declaration for visit_no_op_command. Wed Jan 22 20:54:12 1997 John W. Eaton * input.cc (gnu_readline): If not using readline, flush rl_outstream after printing prompt. (octave_gets): Also call flush_octave_stdout() if forced_interactive, not just if interactive. (do_input_echo): If forced_interactive, only echo prompt and command line if also reading a script file. Tue Jan 21 23:02:34 1997 John W. Eaton * SLList.h: Include "BaseSLList.h", not . Mon Jan 20 11:11:12 1997 John W. Eaton * lex.l (token_stack): Don't declare static. * pt-plot.cc (tmp_files): Likewise. * toplev.cc (octave_atexit_functions): Likewise. * unwind-prot.cc (unwind_protect_list): Likewise. * ops.h (MX_MX_BOOL_OP): Correctly handle case of one or both arguments being empty. Change all callers. * oct-stream.cc (printf_value_cache::looking_at_string): Handle empty strings correctly now that they are 0x0. * file-io.cc: Don't include "syswait.h" here. Sun Jan 19 22:38:45 1997 John W. Eaton * oct-stream.h (octave_base_stream::seek): Declare offset arg as streamoff, not streampos. (octave_stream::seek): Likewise. * oct-strstrm.h (octave_base_strstream::seek): Likewise. * oct-stdstrm.h (octave_base_stdiostream::seek): Likewise. * oct-iostrm.h (octave_base_iostream::seek): Likewise. * oct-fstrm.h (octave_fstream::seek): Likewise. Fri Jan 17 18:13:10 1997 John W. Eaton * file-io.cc (Ffflush): Handle stdout as a special case. * oct-stream.cc (octave_stream_list::do_get_file_number): Do the work for octave_stream::get_file_number. (octave_stream_list::get_file_number): Convert to static function. Wed Jan 8 11:42:44 1997 John W. Eaton * log.cc (sqrtm): For complex arg case, compute sqrt, not log. Tue Jan 7 00:16:41 1997 John W. Eaton * Version 2.0.1 released. Mon Jan 6 00:00:07 1997 John W. Eaton * pt-mat.cc (tm_row_const_rep::all_mt): New variable. (tm_row_const::all_empty): New function. (tm_row_const::tm_row_const_rep::init): Set all_mt here. (tm_const::all_mt): New variable. (tm_const::all_emtpy): New function. (tm_const::init): Set all_mt here. (tree_matrix::eval): Return an empty matrix if the list contains only empty elements. If it contains only empty strings, return an empty string. Sun Jan 5 12:50:25 1997 John W. Eaton * ops.h (SC_MX_BOOL_OP, MX_SC_BOOL_OP): New arg, empty_result. * op-cm-cm.cc, op-cm-cs.cc, op-cm-m.cc, op-cm-s.cc, op-cs-cm.cc, op-cs-m.cc, op-m-cm.cc, op-m-cs.cc, op-m-m.cc, op-m-s.cc, op-s-cm.cc, op-s-m.cc, op-str-str.cc: Change all uses of SC_MX_BOOL_OP and MX_SC_BOOL_OP macros. Return correct results for empty matrix cases. * pt-fcn.cc (tree_function::eval): If Vdefine_all_return_values is true, initialize return values before evaluating function, for compatibility with Matlab. * oct-stream.cc (get_size): Correctly set size when arg is scalar. Thu Jan 2 12:40:10 1997 John W. Eaton * Makefile.in (install-oct): Quote $(OCT_FILES) in for loop to avoid syntax error from ksh. * pr-output.cc (octave_print_internal): Avoid unused parameter warning from gcc. Thu Dec 19 12:13:42 1996 John W. Eaton * oct-stream.cc (octave_base_stream::do_scanf): Don't treat %l{e,f,g} differently from %{e,f,g}. (octave_base_stream::do_oscanf): Likewise. * sighandlers.cc (sigchld_handler): Fix typos. Wed Dec 18 20:17:23 1996 John W. Eaton * file-io.cc (Ffgetl, Ffgets): Also return number of characters read. * ov-range.cc (octave_range::not): New function. * ov-range.h (octave_range::uminus): New function. * BaseSLList.cc: Include error.h. (BaseSLList::error): Call ::error() to process error message. Fri Dec 13 02:38:19 1996 John W. Eaton * ov.cc (octave_value::convert_and_assign): Preserve lhs value if assignment fails. Wed Dec 11 12:33:16 1996 John W. Eaton * pt-plot.cc (GPLOT_CMD_END): Don't put semicolons at the end of each plot command; it causes trouble with gnuplot 3.5. Tue Dec 10 00:31:13 1996 John W. Eaton * Version 2.0 released. * pr-output.cc (set_format_style): Don't try to access argv unless argc > 1. * SLList-expr.cc SLList-misc.cc SLList-plot.cc SLList-str.cc SLList-tc.cc SLList-tm.cc SLList.h SLStack-i.cc SLStack-pc.cc SLStack-str.cc SLStack-sym.cc SLStack-tok.cc SLStack-ue.cc SLStack-ui.cc, pt-mat.cc: Include Stack.h, Stack.cc, SLStack.cc, and SLList.cc as necessary. * Stack.cc, SLStack.cc, SLList.cc: New files. * Makefile.in (SOURCES): Add them to the list. Mon Dec 9 12:03:45 1996 John W. Eaton * Makefile.in (install-bin): Use $(EXE) suffix so install will find the right file on cygwin32 systems. * ov.h: Declare proper form of do_binary_op as friend to octave_value class. Sat Dec 7 22:00:10 1996 John W. Eaton * oct-stream.cc (do_printf_conv, do_scanf_conv, do_oscanf_num_conv, do_oscanf_str_conv): Convert to real functions instead of CPP macros, using templates where necessary. (do_oscanf_num_conv, do_oscanf_str_conv): Correctly handle discarded values. Fri Dec 6 00:20:25 1996 John W. Eaton * Version 1.94. * Map-*.cc, SLList-*.cc, SLStack-*.cc: Include config.h. * ov.h: Don't include SLList.h. * SLStack.cc: Delete. Move everything to SLStack.h. * BaseSLList.h, BaseSLList.cc: New files. Split out the non-template base class parts of SLList. * Makefile.in (TEMPLATE_SRC): Delete. Move files to SOURCES. * Map.h, Map.cc: Add #pragma interface/implementation. * SLStack.h, SLStack.cc: Add #pragma interface/implementation. * SLList.h, SLList.cc: New files, from libg++, but with #pragma interface/implementation. * Makefile.in (SOURCES): Add SLList.cc. (INCLUDES): Add SLList.h. Thu Dec 5 18:36:44 1996 John W. Eaton * octave.cc: Don't include sun-utils.h. Tue Dec 3 23:47:09 1996 John W. Eaton * op-str-str.cc (eq, ne): Handle operations with scalars. Thu Nov 21 12:30:36 1996 John W. Eaton * ov-str-mat.h (octave_char_matrix_str): Provide transpose and hermitian operators. * ov-ch-mat.h (octave_char_matrix): Likewise. Wed Nov 20 00:35:57 1996 John W. Eaton * sighandlers.h (struct octave_interrupt_handler): Provide forward declaration here. * sighandlers.cc (octave_interrupt_handler): New struct. (octave_catch_interrupts): Rename from catch_interrupts. (octave_ignore_interrupts, octave_set_interrupt_handler): New functions. * help.cc, oct-hist.cc, pager.cc, toplev.cc: Use new functions for handling interrupts so that we can hide the details of whether or not we have to deal with SIGBREAK. * pt-plot.cc [! HAVE_POSIX_SIGNALS] (open_plot_stream): Simply ignore and restore the interrupt handler here. * sighandlers.cc (MAYBE_REINSTALL_SIGHANDLER): New macro. Use it instead of always checking MUST_REINSTALL_SIGHANDLERS everywhere. (sigchld_handler): If octave_child_list is empty, wait for any child, but don't hang, and don't collect status info. [__EMX__] (sigchld_handler): Save and restore handlers for SIGINT, SIGBREAK, and SIGCHLD. Ignore them while waiting on children. (install_signal_handlers): If SIGBREAK exists, handle it like SIGINT. * toplev.cc [USE_READLINE] (clean_up_and_exit): Call rl_deprep_terminal() to restore terminal settings. * sysdep.cc [__EMX__ && OS2] (Fextproc): New command. [__EMX__ && OS2] (FEXTPROC): Alias for Fextproc. * Version 1.93. * sysdep.cc (octave_chdir): [__EMX__]: Make copy of string before converting to upper case. * getgrent.cc (mk_gr_map): Only set the passwd field if HAVE_GR_PASSWD is defined. Tue Nov 19 12:01:13 1996 John W. Eaton * sysdep.cc (OS2_init): New function. [__EMX__] (sysdep_init): Call it. * lex.l (plot_style_token): Add new plot styles for gnuplot 3.6. * pt-plot.cc (subplot_style::columns_ok): Rename from subplot_style::errorbars. Recognize more styles and do a better job of diagnosing column number/style mismatches. * sighandlers.cc (my_friendly_exit): If we are called twice, try to remove the signal handler for SIGABRT and the call abort (). * help.cc (Ftype): If a function is defined from a file and transformed text has not been requested, just print the contents of the file. * parse.y (fold): New functions for constant folding for binary and unary expressions. Keep track of original text even when transformations occur. (make_binary_op, make_boolean_op, make_unary_op): Use them. (finish_colon_expression, finish_matrix): Keep track of original text even when transformations occur. * help.cc (Ftype): Don't mess with Vps4. Handle new option `-transformed'. * pt-const.h, pt-const.cc (tree_constant::print): New arg, pr_orig_text. * pt-exp.h, pt-exp.cc (tree_colon_expression::is_range_constant): Delete. * pt-exp-base.h (tree_expression::original_text): New virtual function. pt-exp-base.cc (tree_expression::original_text): Default version. * pt-pr-code.h (tree_print_code::print_original_text, tree_print_code::prefix): New fields. * pt-pr-code.cc (tree_print_code::visit_constant): Pass print_original_text to tree_constant::print(). (tree_print_code::indent): Use prefix instead of Vps4. * pt-fcn.cc (tree_function::print_function_header, tree_function::print_function_trailer): Pass Vps4 to tree_print_code_constructor for prefix. * pt-misc.cc (tree_statement::maybe_echo_code): Pass Vps4 to tree_print_code_constructor for prefix. * pt-mat.h, pt-mat.cc (tree_matrix::all_elements_are_constant): Rename from is_matrix_constant. (tree_matrix_row::all_elements_are_constant): Likewise. Change all callers. Mon Nov 18 14:13:32 1996 John W. Eaton * Makefile.in (install-inc): Try harder to create the link from include/octave to include/octave-VERSION. Sun Nov 17 14:14:48 1996 John W. Eaton * Makefile.in (parse.cc): Expect 13 shift/reduce conflicts. * parse.y (set_stmt_print_flag): New function. (sep_type): New member for bison %union declaration. Simplify rules for statement lists keeping track of the type of the first separator in the values associated with the nonterminals for the separators. * lex.l (handle_identifier): Set lexer_flags.doing_set if the token is "gset", not "set". Sat Nov 16 21:41:26 1996 John W. Eaton * Makefile.in (parse.cc, lex.cc): Add special rules for these files. Delete pattern rules for .y and .l files. Fri Nov 15 13:48:02 1996 John W. Eaton * pt-plot.cc: Put semicolons at the ends of all plot commands. * defaults.cc (subst_octave_home): Start subsequent searchs from the end of the replaced text. * pr-output.cc (pr_any_float): Kluge for SCO systems. * pr-output.cc (pr_any_float, pr_complex): Don't declare inline. * mappers.cc: Include lo-ieee.h, for isinf and isnan on SCO systems. Thu Nov 14 00:06:19 1996 John W. Eaton * pt-plot.cc (Fgset, Fgshow): New commands. (Fshow): Print warning and call gshow. (Fset): Print warning and call gset. * variables.cc (parse_fcn_file): Add unwind-protect for file pointer, so the file is always closed. (get_help_from_file): Likewise. * toplev.cc (parse_and_execute): Likewise. * Makefile.in (install-oct): Depend on mk-oct-links. (mk-oct-links): New target. * Version 1.92. Wed Nov 13 11:13:22 1996 John W. Eaton * sighandlers.cc (sys_siglist): [__EMX__]: Add definitions. * octave.cc (execute_startup_files): Allow init file name ot be specified by an environment variable. * dirfns.cc (make_absolute): [__EMX__]: Path is already absolute if it begins with any character followed by a colon. * load-save.cc (read_mat_ascii_matrix, get_lines_and_columns, get_complete_line): New functions, for reading headless text files. (load_save_format): Add LS_MAT_ASCII, for headless text files. (do_load): Handle LS_MAT_ASCII files. Thanks to Mel Melchner for initial version of this code. * sysdep.cc: Conditionally include ieeefp.h. (BSD_init, SCO_init): New functions. (sysdep_init): Conditionally call them here. Tue Nov 12 00:14:56 1996 John W. Eaton * pt-plot.cc (open_plot_stream): Don't block SIGCHLD. * load-save.cc (read_binary_data): When reading string arrays, be sure to create an octave_char_matrix_str object, not just an octave_char_matrix object. (read_ascii_data): Likewise. Mon Nov 11 22:52:58 1996 John W. Eaton * load-save.cc (read_binary_data): Don't forget teminating NUL for string that we plan to insert. (read_ascii_data): Likewise. Sun Nov 10 16:58:07 1996 John W. Eaton * dirfns.cc (Ffnmatch): New function. * octave.cc (intern_argv): Use new string_vector constructor. * ov-str-mat.cc (octave_char_matrix_str::all_strings): Have charMatrix::row_as_string() strip trailing whitespace. * dirfns.cc (Fglob): new function. * sysdep.cc (oct_tilde_expand): Provide version that works on string vectors too. (Ftilde_expand): Work on string vector args. * load-save.cc (save_binary_data): Call char_matrix_value() to extract charMatrix from octave_value object, not all_strings(). (save_ascii_data): Likewise. * pt-mat.cc (tree_matrix::eval): Likewise. * ov.h (octave_value::all_strings): Return string_vector, not charMatrix. * ov-base.cc (octave_base_value::all_strings): Likewise. * ov-str-mat.h, ov-str-mat.cc (octave_char_matrix_str::all_strings): Likewise. Fri Nov 8 09:54:59 1996 John W. Eaton * defaults.cc, dynamic-ld.cc, fn-cache.cc, help.cc, oct-hist.cc, octave.cc, pager.cc, pt-fcn.cc, toplev.cc, utils.cc, variables.cc, lex.l: Change #include "" to #include <> for defaults.h, oct-conf.h, oct-gperf.h, y.tab.h, and version.h, to avoid getting them from $srcdir when we really want the version from the build directory. (Maybe this should be done for all the include files, not just those that are auto-generated? Hmm.) * defaults.h.in (CXXLIB_LIST, CXXLIB_PATH, FLIB_LIST, FLIB_PATH): Delete. * Makefile.in (install-oct): Use $(INSTALL_PROGRAM) for .oct files. Thu Nov 7 07:59:07 1996 John W. Eaton * variables.cc (gobble_leading_white_space): New arg, update_pos. * (is_function_file): Don't update file position information here. * Version 1.91. * pt-fvc.cc (tree_indirect_ref::reference): If the lhs object is not a map, convert it to one. * ov-typeinfo.h (init_tab_sz): New static member. * ov-struct.cc, ov-struct.h: Add hooks for custom memory management. * ov-scalar.cc, ov-scalar.h: Likewise. * ov-re-mat.cc, ov-re-mat.h: Likewise. * ov-range.cc, ov-range.h: Likewise. * ov-cx-mat.cc, ov-cx-mat.h: Likewise. * ov-complex.cc, ov-complex.h: Likewise. * ov-ch-mat.cc, ov-ch-mat.h: Likewise. Wed Nov 6 12:32:48 1996 John W. Eaton * pager.cc (do_sync): Don't call clear_external_pager() here. * pt-const.h (tree_constant::allocator) New static member. (tree_constant::operator new, tree_constant::operator delete): Implement with custom allocator. * syscalls.cc (Fgetgid, Fgetegid): New functions. * sighandlers.cc (sigchld_handler): If necessary, reinstall handler after call to waitpid(). * pager.cc (pager_death_handler): Don't use warning() to print message. * getgrent.cc: New file. * Makefile.in (DLD_SRC): Add it. * ov.cc (octave_value::print_with_name): Call is_map() instead of print_as_structure(). * ov-struct.cc (octave_struct::print): Likewise. * ov.h, ov.cc, pt-const.h: Delete force_numeric(), make_numeric(), convert_to_matrix_type(), print_as_structure() member functions. * variables.cc (is_function_file): Call gobble_leading_whitespace here to strip all leading whitespace and comments. (parse_fcn_file): If reading a function file, call gobble_leading_whitespace again after resetting parser state to grab help text. Tue Nov 5 13:00:35 1996 John W. Eaton * syscalls.cc (Fgeteuid, Fgetuid): New functions. * getpwent.cc: Use gripe_not_supported from gripes.cc, instead of local gripe_not_implemented function. * input.cc, sysdep.cc, variables.cc: Only include readline.h and history.h if USE_READLINE is defined. * help.cc: Make it compile without warnings even if USE_GNU_INFO is not defined. * sighandlers.h (octave_child_list): Don't define HAVE_POSIX_SIGNALS HERE. * sighandlers.cc (SIGHANDLER_RETURN): New macro. (generic_sig_handler, sigchld_handler, sigfpe_handler, sigint_handler, sigpipe_handler): Use it. (sigchld_handler, sigfpe_handler, sigint_handler, sigpipe_handler): Only reinstall signal handler if MUST_REINSTALL_SIGHANDLER is defined. Sun Nov 3 00:45:30 1996 John W. Eaton * pt-const.cc (tree_constant::print): Just call val.print(). * ov-base.cc, ov-ch-mat.cc, ov-colon.cc, ov-complex.cc, ov-cx-mat.cc, ov-range.cc, ov-re-mat.cc, ov-scalar.cc, ov-str-mat.cc, ov-struct.cc ov-va-args.cc, ov.cc (print): Handle pr_as_read_syntax arg. * defaults.cc (subst_octave_home): Search for prefix repeatedly in retval, not s. * gripes.h: Make declaration of gripes_not_supported match definition. * mk-oct-links.in: In sed command, match "DEFUN_DLD *( *", not "DEFUN_DLD_BUILTIN *( *". * chol.cc, colloc.cc, dassl.cc, det.cc, eig.cc, expm.cc, fft.cc, fft2.cc, filter.cc, find.cc, fsolve.cc, fsqp.cc, getpwent.cc, getrusage.cc, givens.cc, hess.cc, ifft.cc, ifft2.cc, inv.cc, log.cc, lpsolve.cc, lsode.cc, lu.cc, minmax.cc, npsol.cc, pinv.cc, qpsol.cc, qr.cc, quad.cc, qzval.cc, rand.cc, schur.cc, sort.cc, svd.cc, syl.cc, time.cc: Change all uses of DEFUN_DLD_BUILTIN to be just DEFUN_DLD. * defun-dld.h: Eliminate DEFUN_DLD_BUILTIN. * syswait.h: Use #ifdef HAVE_SYS_WAIT_H, not #if HAVE_SYS_WAIT_H to decide whether to include sys/wait.h. * pt-exp-base.h (tree_expression): Declare oper() here as a virtual member function. * pt-pr-code.cc (tree_print_code::visit_constant): Check for string before checking for char_matrix. * ov-ch-mat.cc (octave_char_matrix::print): Supply correct number of args to octave_print_internal(). Sat Nov 2 20:44:55 1996 John W. Eaton * file-io.cc (Ftmpnam): Rename from Foctave_temp_file_name. * Makefile.in (DLD_SRC): Move time.cc and getrusage.cc here from SOURCES. Add getpwent.cc. * getrusage.cc: Rename from resource.cc. Make getrusage a loadable function. * time.cc: Rename from timefns.cc. Make time functions loadable. * getpwent.cc: New file. Wed Oct 30 01:06:19 1996 John W. Eaton * Version 1.90. * Makefile.in (DISTFILES): Add ChangeLog. * ov-range.cc (octave_range::convert_to_str): New function. * ov-str-mat.h (octave_char_matrix_str::char_matrix_value): Delete function. Already handled by octave_char_matrix class. * ov-ch-mat.h (octave_char_matrix::convert_to_str): New function. * pager.cc (Fmore): Set page_screen_output to 1.0 or 0.0, not "true" or "false". * ov-ch-mat.cc, ov-struct.cc, ov-struct.h, pr-output.cc, pt-cmd.cc, pt-const.cc, pt-const.h, pt-fcn.cc, pt-fvc-base.cc, pt-fvc-base.h, pt-fvc.cc, pt-fvc.h, rand.cc, sighandlers.cc, variables.cc, variables.h: Delete unused code. * octave.cc: Only include pwd.h if HAVE_PWD_H. * oct-strstrm.h: Include , not . * defaults.cc, dirfns.cc, file-io.cc, help.cc, input.cc, oct-hist.cc, oct-procbuf.cc, oct-procbuf.h, octave.cc, pager.h, procstream.h, pt-misc.cc, pt-plot.cc, sighandlers.cc, strftime.c, syscalls.cc, sysdep.cc, syswait.h, toplev.cc, utils.cc, variables.cc: Only include sys/types.h if HAVE_SYS_TYPES_H. * error.h (panic): Use GCC_ATTR_NORETURN macro, not NORETURN. * toplev.h (clean_up_and_exit): Likewise. * utils.h (jump_to_top_level): Likewise. * derfaults.h.in, defaults.cc (local_arch_lib_dir): New variable. * defaults.cc (set_default_local_arch_lib_dir): New function. (install_defaults): Call it. (exec_path): Use Vlocal_arch_lib_dir here. * toplev.cc (octave_config_info): Add localarchlibdir to structure. Tue Oct 29 15:54:27 1996 John W. Eaton * Makefile.in (install-oct): Don't do anything if $(OCT_FILES) is empty. * ov-range.cc (octave_range::index): New Function. (octave_range::all, octave_range::any, octave_range::is_true): Make these functions work. * ov.cc (octave_value::try_assignment_with_conversion): Remove left over debugging print statements. Mon Oct 28 10:49:03 1996 John W. Eaton * strftime.c: Add missing #endif for previous change. Sun Oct 27 14:06:44 1996 John W. Eaton * oct-hist.cc (do_history): Rewite option parsing to avoid (probably bogus) errors from g++ on cygwin32 system. * strftime.c: Use autoconf macros TIME_WITH_SYS_TIME and HAVE_SYS_TIME_H to decide which time.h files to include. * oct-stream.h, oct-stream.cc (octave_stream::error, octave_base_stream::error): Rename errno => err_num. Sat Oct 26 10:40:05 1996 John W. Eaton * oct-hist.cc (do_history): Move declaration of file inside conditional. * defun.h (DEFVAR_INT): Set eternal flag with (svc_fcn != 0) instead of (sv_fcn ? 1 : 0) Fri Oct 25 01:10:51 1996 John W. Eaton * ov-ch-mat.h (octave_char_matrix::any): Return 0.0 instead of false. (octave_char_matrix::all): Likewise. * input.cc (Fecho): When binding value of echo_executing_commands, cast ECHO_* to double. * sighandlers.cc (octave_child_list::do_remove): Delete unused variable `enlarge'. * pt-const.h (tree_constant::tree_constant (const tree_constant&)): Don't pass arg to tree_fvc constructor. * resource.cc (getrusage): [HAVE_GETRUSAGE && RUSAGE_TIMES_ONLY]: Only fill in time values. Thu Oct 24 20:37:28 1996 John W. Eaton * parse.y: Comment out the %expect declaration so byacc can compile this file. (if_cmd_list): Add missing semicolon. Include for getenv if using byacc. * ov.h: Move typedefs outside of octave_value class scope to avoid problem with cygwin32 beta16 compiler. Fri Oct 18 13:44:33 1996 John W. Eaton * ov.h (octave_value::index): Undo previous change. * ov.cc (octave_value constructors): Call maybe_mutate() in most cases. * ov-complex.cc (octave_complex::index): Avoid implicit type conversion back to scalar type. * ov-scalar.cc (octave_scalar::index): Likewise. * ov.h (octave_value::index): Call maybe_mutate() on retval before returning it. Wed Oct 16 12:00:11 1996 John W. Eaton * ov.h (octave_value::struct_elt_val): New optional arg, silent. * ov-base.h, ov-base.cc, ov-struct.h, ov-struct.cc: Likewise, but for the derived classes the arg is required. * data.cc (Fstruct_contains): Require arguments to be struct and string, respectively. Call octave_value::struct_elt_val with silent flag set. * pt-mat.cc (tm_row_const::tm_row_const_rep::eval_error, tm_row_const::tm_row_const_rep::eval_warning): New functions. (tm_row_const::tm_row_const (const tree_matrix_row&): Use them to give better error messages. * pt-fvc.cc (tree_identifier::eval): Avoid dereferencing null object_to_eval. Tue Oct 15 11:35:51 1996 John W. Eaton * op-cs-cm.cc, op-cs-cs.cc, op-cs-m.cc, op-cs-s.cc (complex_matrix_conv): New functions. Install preferred assignment conversion and widening ops. * op-s-cm.cc, op-s-cs.cc (complex_matrix_conv): New functions. Install preferred assignment conversion and widening ops. * op-s-m.cc, op-s-s.cc (matrix_conv): New functions. Install preferred assignment conversion and widening ops. * ov.cc (octave_value::try_assignment_with_conversion, octave_value::convert_and_assign, octave_value::try_assignment): New functions. (octave_value::assign): Use them to implement twisted logic for type conversions in assigments. * pt-const.h (tree_constant::maybe_mutate): New function. * ov.h (octave_value::maybe_mutate): New function. (octave_value::try_narrowing_conversion): New function. Use just one typedef for widening_op_fcn and numeric_conv_fcn. Change all uses. * ov-base.h, ov-complex.h, ov-complex.cc, ov-cx-mat.h, ov-cx-mat.cc, ov-range.h, ov-range.cc, ov-re-mat.h, ov-re-mat.cc, Provide derived class versions of try try_narrowing_conversion(). * pr-output.cc (octave_print_internal): Don't bother handing off to scalar/real versions, even when it would seem appropriate. * symtab.cc (symbol_def::define (tree_constant *)): Call maybe_mutate on constants here. Mon Oct 14 11:05:24 1996 John W. Eaton * pt-fvc.cc (tree_identifier::eval): If retval is undefined and the object to eval is a constant, print error message. * Makefile (distclean): Remove *.oct too. * defun-int.h: Include variables.h here. Sun Oct 13 10:52:28 1996 John W. Eaton * variables.cc (print_symbol_info_line): Never print negative diminsions. * symtab.h (octave_symbol_record_info): Store const_type as string. (octave_symbol_record_info::init): Delete. Fix constructors. (octave_symbol_record_info::type_name): Handle const_type as string. * octave.cc (maximum_braindamage): Replace "true" with 1.0 and "false" with 0.0 in calls to bind_builtin_variable(). Include sun-utils.h here. (intern_argv): Also bind __argv__. Sat Oct 12 13:40:21 1996 John W. Eaton * Makefile.in (distclean): Also delete mk-oct-links. Fri Oct 11 13:13:13 1996 John W. Eaton Changes for Octave's new type system: * arith-ops.cc: Delete. * pt-const.h, pt-const.cc: Massive changes. Most functionality moved to ov.h, ov.cc, and derived classes. * variables.h, variables.cc (octave_variable_reference): New class for getting references to variables and structure elements used in assignments or value contexts. * symtab.h, symtab.cc (symbol_record::define (const octave_value&), symbol_record::variable_value, symbol_record::variable_reference): New functions. (symbol_record_info::type_name): Rename from type_as_string. * pt-fvc-base.h, pt-fvc-base.cc (tree_fvc::increment, tree_fvc::decrement): New functions to replace tree_fvc::bump_value. #if 0 assign and lookup_map_element functions. * pt-mvr.cc (tree_multi_assignment_expression::eval): Generated RHS value is now a tree_constant. * pt-exp.h, pt-exp.cc (tree_boolean_expression): New class. (tree_unary_expression, tree_binary_expression, tree_boolean_expression): Move codes here from tree_expression. (tree_simple_assignment_expression): Cope with changes to way of doing assignments. * pt-exp-base.h, pt-exp-base.cc (enum type): Delete codes for unary and binary ops. (tree_expression::expression_type): Delete. (tree_expression::is_logically_true): Hand off to octave_value::is_true to do real work. * pr-output.h, pr-output.cc (any_element_is_inf_or_nan, all_elements_are_ints): Delete. Call member new functions for these operations. (free_format, plus_format, bank_format, hex_format, compact_format, print_e, print_big_e): Use bool, not int. (octave_print_internal): Hand off to scalar/real versions when appropriate. * octave.cc (main): Call initialize_types() and install_ops(). (verbose_usage): Add WWW address to output. * parse.y (indirect_ref): Handle by making a tree instead of a list using new version of tree_indirect_ref class. * parse.y (make_boolean_op): New function. Use it instead of make_binary_op to create trees for && and || ops. (make_binary_op): Codes come from tree_binary_expression now, instead of tree_expression. (make_unary_op): Codes come from tree_unary_expression now, instead of tree_expression. (make_boolean_op): Codes come from tree_boolean_expression. *parse.y (tree_constant_type): Change type to tree_constant* from octave_value*, and rename from octave_value_type. Change uses. * defun.h (DEFVAR_INT): Pass octave_value not pointer to octave_value for defn when creating builtin_variable. * gripes.h, gripes.cc (gripe_invalid_conversion): Args are strings, not char*. (gripe_implicit_conversion, gripe_divide_by_zero): New extern gripe functions. * mkbuiltins: For each file, create a separate static function to install builtins, then create another single extern function to call all of them. * pt-fcn.cc (tree_function::bind_nargin_and_nargout): Just pass doubles and let symbol_record::define handle creating new value. * pt-pr-code.cc, pt-pr-code.h (visit_constant): Renamed from visit_octave_value. (visit_unary_expression): Use tree_expression::is_prefix_op() instead of switch on op types. * pt-walk.h (visit_constant): Renamed from visit_octave_value. * pt-misc.cc (initialize_undefined_elements): Get reference to tmp, then assign. * pt-cmd.cc (do_for_loop_once): Likewise, for loop identifier. * input.cc (generate_struct_completions, looks_like_struct): Cast tmp_fvc to tree_constant*, not octave_value*. (get_user_input): Call print() on retval, not eval(1). * help.cc (Ftype): Cast defn to tree_constant*, not octave_value*. * balance.cc: Fix docstring. * dassl.cc, fsolve.cc, load-save.cc, lsode.cc, npsol.cc, qpsol.cc, quad.cc: Include pt-fvc.h. * data.cc (Fstruct_contains): call octave_value::struct_elt_val, not octave_value::lookup_map_element. * dirfns.cc (Fcd): Pass directory name as string directly to bind_builtin_variable instead of creating new octave_value. * toplev.cc: Include pt-fvc.h and lo-mappers.h * data.cc, error.cc, file-io.cc, load-save.cc, pager.cc, pt-mat.cc, pt-plot.cc, syscalls.cc, toplev.cc: Include variables.h. * Array-tc.cc, Map-tc.cc, SLList-misc.cc SLList-tc.cc, data.cc, defaults.cc, dynamic-ld.cc, error.cc, gripes.cc, lex.l, octave.cc, oct-map.h, oct-map.cc, oct-obj.h, pt-cmd.cc, pt-exp.cc, pt-fcn.cc, pt-fvc-base.cc, pt-mat.cc, pt-misc.cc, pt-mvr-base.cc, pt-mvr.h, resource.cc, strfns.cc, sysdep.cc, timefns.cc, toplev.cc: Include ov.h instead of pt-const.h. * xpow.cc (any_element_is_negative): Delete. (xpow and elem_xpow functions): Check conformance here. * xdiv.cc (mx_leftdiv_conform, mx_div_conform): Now template-based, taking Matrices instead of dimensions as args. Change all callers. * op-cm-cm.cc, op-cm-cm.h, op-cm-cs.cc, op-cm-cs.h, op-cm-m.cc, op-cm-m.h, op-cm-s.cc, op-cm-s.h, op-cs-cm.cc, op-cs-cm.h, op-cs-cs.cc, op-cs-cs.h, op-cs-m.cc, op-cs-m.h, op-cs-s.cc, op-cs-s.h, op-m-cm.cc, op-m-cm.h, op-m-cs.cc, op-m-cs.h, op-m-m.cc, op-m-m.h, op-m-s.cc, op-m-s.h, op-s-cm.cc, op-s-cm.h, op-s-cs.cc, op-s-cs.h, op-s-m.cc, op-s-m.h, op-s-s.cc, op-s-s.h, op-str-str.cc, op-str-str.h, ops.cc, ops.h, ov-base.cc, ov-base.h, ov-ch-mat.cc, ov-ch-mat.h, ov-colon.cc, ov-colon.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-range.cc, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc, ov-scalar.h, ov-str-mat.cc, ov-str-mat.h, ov-struct.cc, ov-struct.h, ov-typeinfo.cc, ov-typeinfo.h, ov-va-args.cc, ov-va-args.h, ov.cc, ov.h: New files for Octave's new type system. * Makefile.in: Add them to the appropriate lists. Sat Sep 14 21:58:33 1996 John W. Eaton * mkbuiltins: Use .df instead of .def. Write one function for each .df file, then call them all in install_builtin_functions(). * Makefile.in: Handle .df instead of .def. * balance.cc (balance): Fix typo in doc string. Wed Aug 28 21:01:49 1996 John W. Eaton * octave.cc (verbose_usage): Include WWW address and bug-octave mailing list address. Tue Aug 20 17:41:19 1996 John W. Eaton * Makefile.in: Only define pattern rules for making .oct files if OCTAVE_LITE is true. Only add pic/ to $(TI_OBJ) if $(SHARED_LIBS) is true. (stamp-picdir): Only create a pic subdirectory if SHARED_LIBS or OCTAVE_LITE is true AND CPICFLAG or CXXPICFLAG is not empty. * minmax.cc (Fmin, Fmax): Deal with changes to Matrix class min/max methods. Thu Jul 25 01:42:38 1996 John W. Eaton * input.cc (generate_possible_completions): Force the names to be unique. * load-save.cc (read_mat_binary_data): Expect to read terminating NUL character in the variable name. (save_mat_binary_data): Likewise, save it here. Wed Jul 24 05:08:07 1996 John W. Eaton * lsode.cc (Flsode): Don't set the return value if an error occurred during integration. * dassl.cc (Fdassl): Likewise. * file-io.cc (symbols_of_file_io): Redefine values of SEEK_SET, SEEK_CUR, and SEEK_END for Matlab compatibility. * oct-stream.cc (seek): Check for compatible values of ORIGIN arg. Also handle "bof", "cof", and "eof". Fri Jul 19 15:24:36 1996 John W. Eaton * pt-const.cc: When creating octave_value_reps from ComplexMatrix values, check to see if all the elements are actually real. Tue Jul 16 10:53:42 1996 John W. Eaton * input.cc (decode_prompt_string): Swap meanings of \h and \H. Mon Jul 15 16:01:51 1996 John W. Eaton * toplev.cc (run_command_and_return_output): Renamed from do_system. (Fsystem): Make `system ("emacs")' work as one would expect. Sun Jul 14 17:34:33 1996 John W. Eaton * file-io.cc (Ffopen, Ffread, Ffwrite): Update doc strings, correctly handle default architecture and precision args. * load-save.cc (mopt_digit_to_float_format): Rename from get_floating_point_format. (float_format_to_mopt_digit): New function. * oct-stream.cc (octave_base_stream::read, octave_base_stream::write): Simplify by calling Matrix::read and Matrix::write to do real work of reading, writing, and format conversion. * oct-stream.h (octave_base_stream): Move data_type enum to liboctave/data-conv.h. Use float_format from liboctave/mach-info.h instead of arch_type enum. * sysdep.h, sysdep.cc (octave_words_big_endian, ten_little_endians): Delete. Now part of oct_mach_info class in liboctave. Tue Jul 9 11:18:59 1996 John W. Eaton * arith-ops.cc, balance.cc, dassl.cc, data.cc, filter.cc, find.cc, fsolve.cc, load-save.cc, log.cc, lsode.cc, minmax.cc, npsol.cc, oct-obj.cc, oct-stream.cc, pr-output.cc, pt-cmd.cc, pt-const.cc, pt-fvc.cc, pt-plot.cc, quad.cc, rand.cc, sighandlers.cc, sort.cc, syscalls.cc, unwind-prot.cc, xdiv.cc, xpow.cc: When indexing arrays, use operator() instead of elem() so that bounds checking can be done consistently. Mon Jun 24 02:13:27 1996 John W. Eaton * Makefile.in (install-oct): Use INSTALL_PROGRAM, instead of INSTALL_DATA for installing shared libraries. * lex.l (grab_help_text): Ignore all initial comment characters, not just the first. * variables.cc (gobble_leading_white_space): Likewise. Sat Jun 22 22:43:45 1996 John W. Eaton * input.h, input.cc (octave_completion_matches_called): New varaible. (Fcompletion_matches): Set it to true on a successful call. * toplev.cc (main_loop): If octave_completion_matches_called is true, don't increment current_command_number. Thu Jun 13 03:52:19 1996 John W. Eaton * variables.cc (is_mapper_function_name, is_builtin_function_name): New functions. (Fdocument): Use them. Define as regular function, not a text style function. Thu Jun 6 00:09:25 1996 John W. Eaton * pt-plot.cc: Handle new built-in variable `gnuplot_has_frames'. Wed Jun 5 14:45:04 1996 John W. Eaton * input.cc (decode_prompt_string): \h now means the whole host name and \H is the host name up to the first `.'. Thu May 30 23:41:51 1996 John W. Eaton * fn-cache.cc (octave_fcn_file_name_cache::do_list): Always recompute the lists of function files instead of trying to cache them. Tue May 28 12:05:24 1996 John W. Eaton * utils.cc (warn_old_style_preference): New function. (check_preference): Use it. * fn-cache.h: Include here. Fri May 24 00:57:14 1996 John W. Eaton * input.cc (completion_matches): Don't return empty string_vectors. * octave.cc (long_opts): Add braindead. Thu May 23 01:49:33 1996 John W. Eaton * input.cc (gnu_readline): New optional arg, force_readline. (get_user_input): Use it. * pt-const.cc (OCT_VAL_REP::assign): If converting the rhs to a numeric value, convert a copy, not the actual object. (OCT_VAL_REP::do_index): Prevent s([]) from resulting in a string with zero rows. * mappers.cc: Handle toascii here. * strfns.cc: Not here. * mappers.cc: Handle tolower and toupper here. * mappers.h: Rename can_return_complex_for_real to flag and overload meaning for ch_mapper. * pt-fvc.cc (apply_mapper_fcn): Handle overloaded meaning. * syscalls.cc (stat): Return 3 values instead of just 1. (lstat): Likewise. Wed May 22 02:34:20 1996 John W. Eaton * pt-const.cc (OCT_VAL_REP::make_numeric): For string to number conversions, correctly set type tag before calling force_numeric. (do_binary_op): Force string to number conversion if both args are strings and we are doing some sort of comparison operation. * Makefile.in (stamp-tinst, stamp-interp): Use SH_TERMLIBS and SH_LIBS instead of TERMLIBS and LIBS. * pt-const.cc (do_unary_op): Add special case to handle transposing strings. * pt-mat.cc (Vstring_fill_char): New variable. (symbols_of_pt_mat): DEFVAR it. * input.cc (generate_struct_completions, generate_possible_completions): Return string_vector, not char **. Change all callers. * pt-const.cc (lookup_map_element): Use substr() correctly. Tue May 21 21:37:17 1996 John W. Eaton * oct.h: New file. * Makefile.in (INCLUDES): Add it to the list. * octave.cc: New args --no-site-file and --no-init-file. Delete --ignore-init-file. The flag --norc (-f) implies both --no-site-file and --no-init-file. Fri May 17 01:54:51 1996 John W. Eaton * input.cc (Fcompletion_matches): New function. * utils.cc (get_fcn_file_names): Delete. * help.cc (simple_help): Use new file name cache instead of calling get_fcn_file_names. * variables.cc (make_name_list): Likewise. * fn-cache.h, fn-cache.cc, Map-fnc.cc: New files. * Makefile.in: Add them to the lists. * Makefile.in (uninstall): Install in octincludedir, not includedir. * pt-plot.h: Include here. Thu May 16 10:52:51 1996 John W. Eaton * oct-stream.cc (octave_stream::oscanf, octave_base_stream::oscanf, octave_base_stream::do_oscanf): New functions for backward compatibility with older versions of Octave. (scanf_format_elt, scanf_format_list): Keep track of width specifier. * file-io.cc (Fscanf): New function. (Fscanf, Ffscanf, Fsscanf): Handle compatibility arg. Wed May 15 01:00:12 1996 John W. Eaton * oct-stream.cc (do_scanf): If doing '%c' conversion, unset ios::skipws on input stream. * sighandlers.h, sighandlers.cc (octave_child, octave_child_list): New classes for keeping track of the child processes we create. (sigchld_handler): Check in octave_child_list to see if there is anything we can do for the child that died. * pager.cc: Register child pager process. * pt-plot.cc: Likewise, for the plotter. * Array-oc.cc: New file * Makefile.in (TI_SRC): Add it to the list. * pager.cc (do_sync): Don't check error_state. (flushing_output_to_pager): New static variable. (flush_octave_stdout): Use it to avoid doing anything if already flushing output. * sighandlers.cc (sigchld_handler): Call warning instead of writing directly to cerr. (sigpipe_handler): Call warning instead of message. * octave.cc (main): Call install_signal_handlers, initialize_file_io, initialize_symbol_tables, and install_builtins before parsing command line options. * user-prefs.h, user-prefs.cc: Delete. * utils.cc (check_preference): Move here. * user-prefs.cc: From here. * defaults.cc: New file. Move initialization stuff from variables.cc. Move DEFVARS for EDITOR, EXEC_PATH, LOADPATH, IMAGEPATH, and OCTAVE_VERSION here. * user-prefs.h, user-prefs.cc: Delete all stuff related to INFO_FILE and INFO_PROGRAM. * help.cc: Move all of that here. (symbols_of_help): Add DEFVARS for INFO_FILE and INFO_PROGRAM. Tue May 14 00:23:06 1996 John W. Eaton * pager.cc (do_sync): Be more defensive about sending stuff to the external pager. * sighandlers.cc (sigchld_handler): For now, only wait for octave_pager_pid. Don't call error(). Do set octave_pager_pid to -1 if the pager process no longer exists. * user-prefs.h, user-prefs.cc: Delete all stuff related to PWD. * dirfns.cc: Move all of that here. (symbols_of_dirfns): New function. * variables.cc (install_builtin_variables): Call it. * user-prefs.h, user-prefs.cc: Delete all stuff related to default_save_format and save_precision. * load-save.cc: Move all of that here. (symbols_of_load_save): New function. * variables.cc (install_builtin_variables): Call it. * user-prefs.h, user-prefs.cc: Delete all stuff related to warn_divide_by_zero. * arith-ops.cc: Move all of that here. (symbols_of_arith_ops): New function. * variables.cc (install_builtin_variables): Call it. * mappers.cc: Add wrappers for ctype is* functions so that they will work on systems that only define them as macros. Mon May 13 00:27:08 1996 John W. Eaton * user-prefs.h, user-prefs.cc: Delete all stuff related to suppress_verbose_help_message. * help.cc: Move all of that here. (symbols_of_help): New function. * variables.cc (install_builtin_variables): Call it. * user-prefs.h, user-prefs.cc: Delete all stuff related to treat_neg_dim_as_zero. * pt-const.cc: Move all of that here. * pager.cc (octave_pager_stream::do_sync): Don't return early if not interactive. * data.h: New file. * Makefile.in (INCLUDES): Add it to the list. * data.cc (symbols_of_data): New function. Move definition of I, Inf, J, NaN, e, eps, i, inf, j, nan, pi, realmin, and realmax here. * variables.cc: From here. (install_builtin_variables): Call symbols_of_data. * file-io.cc (symbols_of_file_io): New function. Move definition of SEEK_CUR, SEEK_END, SEEK_SET, stdin, stdout, stderr here. * variables.cc: From here. (install_builtin_variables): Call symbols_of_file_io. * user-prefs.h, user-prefs.cc: Delete all stuff related to do_fortran_indexing, implicit_str_to_num_ok, ok_to_lose_imaginary_part, prefer_column_vectors, prefer_zero_one_indexing, print_answer_id_name, propagate_empty_matrices, resize_on_range_error, and struct_levels_to_print. * pt-const.cc: Move all of that here. (symbols_of_pt_const): New function. * variables.cc (install_builtin_variables): Call it. * pt-fvc.cc (tree_identifier::assign): Use Vresize_on_range_error instead of user_pref.resize_on_range_error here. * load-save.cc (save_mat_binary_data): Use Vimplicit_str_to_num_ok instead of user_pref.implicit_str_to_num_ok here. * utils.cc (empty_arg): Use Vpropagate_empty_matrices instead of user_pref.propagate_empty_matrices here. * pt-exp-base.cc (tree_expression::is_logically_true): Likewise.. * pt-fcn.cc (symbols_of_pt_fcn): Also move DEFVAR for default_return_value here. * user-prefs.h, user-prefs.cc: Delete all stuff related to ps1, ps2, ps4, and completion_append_char. * input.cc: Move all of that here. (symbols_of_input): New function. * variables.cc (install_builtin_variables): Call it. * pt-pr-code.cc (indent): Use Vps4 instead of user_pref.ps4 here. * help.cc (Ftype): Also here. * user-prefs.h, user-prefs.cc: Delete all stuff related to automatic_replot, gnuplot_binary, and gnuplot_has_multiplot. * pt-plot.cc: Move all of that here. (symbols_of_pt_plot): New function. * variables.cc (install_builtin_variables): Call it. * user-prefs.h, user-prefs.cc: Delete all stuff related to beep_on_error. * error.cc: Move all of that here. (symbols_of_error): New function. * variables.cc (install_builtin_variables): Call it. * user-prefs.h, user-prefs.cc: Delete all stuff related to empty_list_elements_ok. * pt-mat.cc: Move all of that here. (symbols_of_pt_mat): New function. * variables.cc (install_builtin_variables): Call it. * user-prefs.h, user-prefs.cc: Delete all stuff related to define_all_return_values, return_last_computed_value, and silent_functions. * pt-fcn.cc: Move all of that here. (symbols_of_pt_fcn): New function. * variables.cc (install_builtin_variables): Call it. * user-prefs.h, user-prefs.cc: Delete all stuff related to whitespace_in_literal_matrix. * lex.l: Move all of that here. (symbols_of_lex): New function. * variables.cc (install_builtin_variables): Call it. * user-prefs.h, user-prefs.cc: Delete all stuff related to warn_assign_as_truth_value, warn_comma_in_global_decl, warn_function_name_clash, and warn_missing_semicolon. * parse.y: Move all of that here. (symbols_of_parse): New function. * variables.cc (install_builtin_variables): Call it. * user-prefs.h, user-prefs.cc: Delete all stuff related to output_precision, output_max_field_width, print_empty_dimensions, and split_long_rows. * pr-output.cc: Move all of that here. (symbols_of_pr_output): New function. * variables.cc (install_builtin_variables): Call it. * user-prefs.h, user-prefs.cc: Delete all stuff related to page_screen_output, page_output_immediately, and pager_binary. * pager.cc: Move all of that here. * user-prefs.h (check_preference): Provide declaration. * user-prefs.cc (check_preference): Make external. * toplev.cc (Foctave_config_info): New function. * oct-conf.h.in: New file * Makefile.in (oct-conf.h): New target. Add it to the appropriate lists. * sighandlers.cc (sigchld_handler): Don't complain about wait returning a negative value. * file-io.cc (Fsscanf, Fsprintf): Pass true for second arg of octave_stream constructor. * oct-stream.h (octave_stream): New field, preserve. (octave_stream::~octave_stream): If preserve, don't delete rep. * pager.cc (symbols_of_pager): Set default for page_output_immediately to 0. * toplev.cc (do_system): Correctly handle return_output. Append ends to output_buf before calling str(). * variables.cc: If M_PI and M_E are available, use them. * mk-oct-links.in (links_dir): If old link exists, delete it first. Sun May 12 01:46:07 1996 John W. Eaton * Makefile.in (DISTFILES): List defaults.h.in and oct-gperf.h here. (INCLUDES): Not here. (install-inc): New target. (uninstall): Also delete libraries and include files. (install-inc): If linkdir is a directory, leave it alone. (TERMLIBS, LIBPLPLOT, LIBDLFCN): Don't substitute here (now in Makeconf). * oct-stream.cc (octave_base_stream::do_read): Provide initial value for tmp var. * pt-walk.h, pt-pr-code.h, pt-pr-code.cc: New tree-walking classes. * Makefile.in: Add them to the appropriate lists. * pt-fvc-base.h, pt-exp-base.cc, pt-fvc-base.cc, pt-mvr-base.cc, pt-base.cc, pt-mvr.cc, pt-mat.h, pt-mat.cc, pt-fvc.cc, pt-const.cc, pt-cmd.cc, pt-const.h, pt-misc.cc, pt-plot.cc, pt-fcn.cc, pt-plot.h, pt-mvr.h, pt-mvr-base.h, pt-misc.h, pt-fcn.h, pt-exp.h, pt-exp.cc, pt-exp-base.h, pt-fvc.h, pt-cmd.h, pt-base.h: Replace print_code stuff with accept() functions. Add member access functions where necessary. * help.cc (Ftype): Update to use new method of walking trees to print text representation of user-defined functions. * file-io.cc (Ffscanf): Update doc string. (Fsscanf): Likewise. * oct-stream.cc (octave_base_stream::do_read): Correctly set max_size. Pad mval with zeros on final resize. (octave_base_stream::do_scanf): Likewise. (do_scanf_conv): Correctly resize mval. Sat May 11 05:14:09 1996 John W. Eaton * pager.cc (octave_pager_buf::sync): Correctly set bypass_pager. * lex.l ({SNLCMT}*\]{S}*): Match SNLCMT, not just SNL. Fri May 3 11:05:30 1996 John W. Eaton * pt-const.cc (OCT_VAL_REP::set_index): Complain if type can't be indexed. * input.cc (get_user_input): Don't increment input line number if input is coming from eval string. * user-prefs.cc: Allow empty strings for prompts. Thu May 2 10:50:29 1996 John W. Eaton * pt-mvr.h (class tree_oct_obj): Declare values data member const. Sun Apr 28 03:16:52 1996 John W. Eaton * user-prefs.h (user_preferences): New field, `page_output_immediately'. * user-prefs.cc (init_user_prefs): Initialize it. (page_output_immediately): New function. * pager.cc (syms_of_pager): Add DEFVAR. (really_flush_to_pager): New file-scope variable. (flush_octave_stdout): Set and restore it. (octave_pager_buf::sync): Check it, user_pref.page_screen_output, and user_pref.page_output_immediately to decide when to really flush output. (more_than_a_screenful): New function. If paging but not immediately, then check this too. * pager.cc (default_pager): Move here from variables.cc. If pager is less and LESS is not in the environment, append useful flags. (symbols_of_pager): New function. * variables.cc (install_builtin_variables): Call it. Delete pager-related DEFVARs. * syswait.h (WIFSIGNALLED): Define if sys/wait.h doesn't. * sighandlers.cc: Handle SIGCHLD. * pager.cc, pager.h: Rewrite. * pt-mvr.cc, pt-misc.cc, pt-fcn.cc, pt-const.cc, oct-hist.cc, file-io.cc, help.cc, variables.cc, qpsol.cc, dassl.cc, quad.cc, npsol.cc, lsode.cc, fsolve.cc, load-save.cc, dirfns.cc, octave.cc, toplev.cc, error.cc, input.cc: Write to octave_stdout and octave_diary instead of calling maybe_page_output() or maybe_write_to_diary_file(). * oct-procbuf.h, oct-procbuf.cc: New files. * procstream.h (class procstreambase): Use octave_procbuf instead of procbuf from libg++, so we can get pids of subprocesses. Fri Apr 26 01:21:29 1996 John W. Eaton * pt-const.cc (OCT_VAL_REP::do_index): Call maybe_mutate() before returning. * mappers.h (struct Mapper_fcn): Delete. (struct builtin_mapper_function): New field ch_mapper. * pt-fvc.h (tree_builtin): Convert type of mapper_fcn from Mapper_fcn to builtin_mapper_function. * variables.cc (install_builtin_mapper): Likewise, for arg. Simplify, since we don't have to do the copying ourselves now. * pt-fvc.cc (apply_mapper_function): Handle ch_mapper case. * defun.h (DEFUN_MAPPER): Likewise. * mappers.cc (install_builtin_mappers): Likewise. Add ctype is* functions here. Thu Apr 25 00:57:06 1996 John W. Eaton * arith-ops.h, defun-int.h, defun.h, dynamic-ld.h, gripes.h, load-save.h, oct-map.h, oct-obj.h, oct-stream.h, pt-cmd.h, pt-const.h, pt-exp-base.h, pt-exp.h, pt-fcn.h, pt-fvc-base.h, pt-fvc.h, pt-mat.h, pt-misc.h, pt-mvr-base.h, pt-mvr.h, pt-plot.h, symtab.h, toplev.h, utils.h, variables.h, xpow.h, Array-tc.cc, Map-i.cc, Map-tc.cc, SLList-tc.cc, arith-ops.cc, balance.cc, bogus.cc, chol.cc, colloc.cc, dassl.cc, data.cc, det.cc, dirfns.cc, eig.cc, error.cc, expm.cc, fft.cc, fft2.cc, file-io.cc, filter.cc, find.cc, fsolve.cc, fsqp.cc, givens.cc, gripes.cc, help.cc, hess.cc, ifft.cc, ifft2.cc, input.cc, inv.cc, load-save.cc, log.cc, lpsolve.cc, lsode.cc, lu.cc, minmax.cc, npsol.cc, oct-hist.cc, oct-obj.cc, oct-stream.cc, pager.cc, pinv.cc, pr-output.cc, pt-cmd.cc, pt-const.cc, pt-exp-base.cc, pt-exp.cc, pt-fcn.cc, pt-fvc-base.cc, pt-fvc.cc, pt-mat.cc, pt-misc.cc, pt-mvr-base.cc, pt-mvr.cc, pt-plot.cc, qpsol.cc, qr.cc, quad.cc, qzval.cc, rand.cc, resource.cc, schur.cc, sort.cc, strfns.cc, svd.cc, syl.cc, symtab.cc, syscalls.cc, sysdep.cc, timefns.cc, toplev.cc, utils.cc, variables.cc, xpow.cc, parse.y: Rename tree_constant -> octave_value. Rename Octave_object -> octave_value_list. Wed Apr 24 22:15:34 1996 John W. Eaton * toplev.cc (Fsystem): Merge functionality of async_system and sync_system. * oct-fstrm.h, oct-iostrm.h, oct-prcstrm.h, oct-stdstrm.h, oct-stream.h, oct-strstrm.h, oct-fstrm.cc, oct-iostrm.cc, oct-prcstrm.cc, oct-stdstrm.cc, oct-stream.cc, oct-strstrm.cc, Array-os.cc: New files. * Makefile.in: Add them to the appropriate lists. * file-io.cc: Rewrite to use new stream classes. Tue Apr 23 18:59:25 1996 John W. Eaton * gripes.cc (gripe_not_supported): New function. * toplev.cc (do_octave_atexit, Fatexit): New functions. (octave_atexit_functions): New file-scope variable. * octave.cc (main): Register do_octave_atexit with atexit. * variables.cc (install_builtin_variables): Call symbols_of_syscalls here. * syscalls.h, syscalls.cc: New files. Mon Apr 22 21:14:01 1996 John W. Eaton * syscalls.cc: New file. (Flstat, Fmkfifo, Fstat, Funlink, Fwait, Fwaitpid): Move here. * file-io.cc: From here. * Makefile.in (SOURCES): Add syscalls.cc to the list. Wed Apr 17 18:34:10 1996 John W. Eaton * file-info.h, file-info.cc: Delete files. * Makefile.in: Remove from lists. * toplev.cc (Fquit): Accept exit status argument. (Fflops): Delete (now a function file). Thu Apr 11 16:20:20 1996 John W. Eaton * lex.l: Recognize `.'. Update current_input_column even for unrecognized characters. Return LEXICAL_ERROR for unrecognized characters. Mon Apr 8 19:59:01 1996 John W. Eaton * variables.cc (install_builtin_variables): Split into several functions to make compiling with g++ go faster and consume less memory. Sun Apr 7 16:25:35 1996 John W. Eaton * load-save.cc (Fsave): Print usage if i == argc. (Fload): Likewise. Sat Apr 6 21:26:49 1996 John W. Eaton * Makefile.in (clean): Also delete pic/*.o (maintainer-clean, distclean): Also remove stamp-picdir, stamp-tinst, stamp-interp, and pic directory. (stamp-prereq): New target. Wed Apr 3 11:19:30 1996 Rick Niles * resource.cc: Don't make including sys/resource.h and sys/times.h mutually exclusive. Fri Mar 29 13:43:37 1996 John W. Eaton * Makefile.in (distclean): Delete so_locations, which is created on DEC Alpha systems. Thu Mar 28 02:53:48 1996 John W. Eaton * utils.h (undo_string_escape): Provide extern declaration here. * lex.l (NL): Allow \r\n as new line character. (.): Complain if invalid character is found on input Fri Mar 22 03:47:52 1996 John W. Eaton * resource.cc (getrusage): If getrusage is missing, try using times to at least fill in the cpu time values. If neither one is available, return 0 for cpu times instead of NaN. * sighandlers.cc (octave_signal_mask): New file-scope variable. (octave_save_signal_mask, octave_restore_signal_mask): New functions. * toplev.cc (main_loop): Use them. Wed Mar 20 01:21:28 1996 John W. Eaton * utils.cc (get_fcn_file_names (const string&, int)): Resize retval to value of k, not i. (get_fcn_file_names (int)): In loop for copying names to retval, don't increment j twice. Mon Mar 18 22:27:19 1996 John W. Eaton * Makefile.in ($(MAKEDEPS)): Depend on oct-gperf.h. Fri Mar 1 18:15:52 1996 John W. Eaton * fsolve.cc (fsolve_options): Delete unused argument nargout. * filter.cc: Use MArray instead of Array so that automatic conversions will work again. Tue Feb 27 04:49:51 1996 John W. Eaton * variables.cc (looks_like_octave_copyright): Make the strings that we are trying to match both have length 29. * Makefile.in (install-bin): Use $(INSTALL_PROGRAM), not $(INSTALL). * load-save.cc (read_mat_binary_data): Make sure name is NUL terminated. Mon Feb 26 18:18:45 1996 John W. Eaton * variables.cc (whos): Make argv from tmp_args, not args. * defun.h (DEFCONSTX): Don't stringify name. Sat Feb 24 01:12:59 1996 John W. Eaton * Makefile.in (install-oct): Make mk-oct-links executable. * mk-oct-links.in (links_dir): Update to match new format of DEFUN_DLD_BUILTIN macro. Use LN_S, not just LN. (links_dir): * pr-output.cc (octave_print_internal): New arg, extra_indent, for versions of this function that take matrices and ranges. * pt-const.cc (TC_REP::print (ostream&)): Fix printing of structures. Pass struct_indent to octave_print_internal as appropriate. (print_with_name (ostream&, const string&, bool)): Handle spacing around `=' differently for structures. Fri Feb 23 04:51:04 1996 John W. Eaton * token.cc (token (double, const string&, int, int)): Store orig_text. Tue Feb 20 20:36:01 1996 John W. Eaton * variables.cc (Fclear): Fix off-by-one error. Sat Feb 17 16:54:02 1996 John W. Eaton * oct-hist.cc (default_history_file): Append "/.octave_hist" to return value, not to home_directory. Fri Feb 16 18:10:46 1996 John W. Eaton * utils.cc: (NINT, D_NINT): Move to liboctave. * sysdep.cc (octave_ieee_init): Move to liboctave. * procstream.h, procstream.cc: Rewrite. * pager.cc (cleanup_oprocstream): New static function. * toplev.cc (cleanup_iprocstream): Likewise. * dirfns.cc (cleanup_iprocstream): Likewise. * unwind-prot.cc (matrix_cleanup, complex_matrix_cleanup): Delete. Thu Feb 15 22:03:28 1996 John W. Eaton * oct-obj.cc, oct-obj.h: Move most code to the header. * oct-obj.cc (make_argv, all_strings): New member functions. * utils.cc: Moved from here. * load-save.cc: Move byte swapping stuff to liboctave. Move float format conversion stuff to liboctave. (all_parts_int, too_large_for_float): Move to liboctave. * symtab.cc (valid_identifier): Move here. * load-save.cc: From here. * sysdep.cc: Move floating-point format stuff to liboctave. * pr-output.cc: Include float-fmt.h here. Wed Feb 14 01:49:20 1996 John W. Eaton * defun.h, defun-dld.h, defun-int.h: Simplify interface for DEFUN, DEFUN_DLD, DEFVAR, and DEFCONST macros. Change all uses. * qzval.cc: Move guts to liboctave. Tue Feb 13 10:28:27 1996 John W. Eaton * variables.cc (parse_fcn_file): Also avoid saving history if input is from a script file. * help.cc (Ftype): Call unwind_protect_str for user_pref.ps4. * npsol.cc (nonlinear_constraints_ok): Now static. * npsol.cc (linear_constraints_ok): Now static. * qpsol.cc (linear_constraints_ok): Duplicate here. * data.cc (Flinspace): Don't print usage message if nargin == 2. Sun Feb 11 14:20:32 1996 John W. Eaton * mk-oct-links.in: Rename from mk-oct-links. (LN_S): Use this variable instead of ln. Set -e option for shell. Exit with status of last command. Print message when making link. * Makefile.in (DISTFILES): Add mk-oct-links.in to the list. (install-oct): Run ./mk-oct-links, not $(srcdir)/mk-oct-links. * variables.cc (install_builtin_variables): Restore accidentally deleted DEFVAR for save_precision. Fri Feb 9 11:24:32 1996 John W. Eaton * Makefile.in (INCLUDES): Delete statdefs.h from the list (it's now in the liboctave directory). * toplev.cc (toplevel): Define here. * octave.cc (toplevel): Not here. * toplev.cc (main_loop): New function. * octave.cc (main): Call it here instead of doing main loop actions here. * user-prefs.cc (do_fortran_indexing): Also set liboctave_dfi_flag. (prefer_column_vectors): Also set liboctave_pcv_flag. (prefer_zero_one_indexing): Also set liboctave_pzo_flag. (resize_on_range_error): Also set liboctave_rre_flag. * variables.cc (restore_command_history): New function. (parse_fcn_file): Use it here in unwind_protect. * dynamic-ld.cc (load_octave_oct_file): Reverse sense of test. (load_octave_builtin): Delete. (mangle_octave_oct_file_name): Delete. * pt-fvc.cc (tree_builtin::eval): Don't try to dynamically load functions here. * pr-output.cc (set_format_style): Decrement argc for first arg too. * input.cc (gnu_readline): If readline returns an empty string, convert it to a string containing a single newline character. * octave.cc (octave_argv): Now a static string_vector. (intern_argv): Use string_vector ops, not charMatrix ops. * toplev.cc (octave_argv): Delete definition. * toplev.h (octave_argv): Delete declaration. Thu Feb 8 10:58:24 1996 John W. Eaton * Makefile.in (conf-dist): New target. Tue Feb 6 10:59:45 1996 John W. Eaton * help.cc (Ftype): Correctly handle structure names. Sun Feb 4 02:02:20 1996 John W. Eaton * qpsol.cc (Fqpsol): Call set_options(), not copy() to set options for QPSOL objects. * npsol.cc (Fnpsol): Call set_options(), not copy() to set options for NPSOL objects. * quad.cc (Fquad): Call set_options(), not copy() to set options for Quad objects. * dynamic-ld.cc (load_octave_builtin): Don't call destructor on string. (load_octave_oct_file): Likewise. Check oct_file.empty(), not just oct_file. * fsolve.cc (Ffsolve): Call set_options(), not copy() to set options for NLEqn object. * variables.cc (do_who): Properly set match patterns from argument vector for call to maybe_list. Sat Feb 3 03:29:33 1996 John W. Eaton * octave.cc (long_opts): Properly set second field using new enum. * lsode.cc: Change ODE to LSODE where appropriate. Use LSODE_options, not ODE_options. * dassl.cc: Change DAE to DASSL where appropriate. Use DASSL_options, not ODE_options. Fri Feb 2 01:41:37 1996 John W. Eaton * dirfns.cc: Include unistd.h. * parse.y, lex.l: Handle matrix lists without ml or mlnm stacks. * pt-mat.h, pt-mat.cc (tree_matrix): Rewrite to use SLList instead of home brew list. * SLList-tm.cc: New file * Makefile.in: Add it to the lists. * SLStack-tm.cc: Delete. * Makefile.in: Delete it from the lists. * All pt-* files: Use bool instead of int where appropriate. * Makefile.in (DEP_SOURCES_3): Add octave.cc. * pt-const.h (class tree_constant::tree_constant_rep): Make everything in this class public, then it doesn't need to declare the tree_constant class as a friend. Thu Feb 1 01:42:45 1996 John W. Eaton * lex.h, lex.l, parse.h, parse.y (class lexical_feedback): New class for lexer flags. Replace lots of global vars with members of this class. * lex.l (class brace_paren_nesting_level): New class to replace nesting_level stack. nesting_level is now an instance of this class. * lex.l (yum_yum): New typedef. (ATE_NOTHING): New global var. (ATE_SPACE_OR_TAB, ATE_NEWLINE): Don't #define these, declare them as const yum_yum. (eat_whitespace, eat_continuation): Return yum_yum, not int. * lex.l (SHORT_CIRCUIT_LOGICALS): Delete. Always do this for || and && tokens. (yy_flex_alloc, yy_flex_realloc, yy_flex_free, next_char_is_space): Delete. * toplev.cc (verbose_flag): Delete definition. * toplev.h (verbose_flag): And declaration. * octave.cc (verbose_flag): Now static. * lex.l (lookup_identifier): Arg is now string, not char*. (handle_identifier, is_plot_keyword, is_keyword): Likewise. (strip_trailing_whitespace): Return value is now string, not char*. (plot_style_token): Likewise, for both arg and return value. * input.cc (octave_gets_line): Delete. (gnu_readline, octave_gets, octave_read): Properly handle input when using_readline is either true or false. Don't limit length of input lines to flex buffer size. (get_user_input): New function. * octave.cc (main): Handle --no-line-editing. * toplev.h (using_readline): Provide external declaration here. * input.h: Not here. * toplev.cc (using_readline): Define here. * input.cc: Not here. * toplev.h (no_line_editing): Delete declaration. * input.cc (no_line_editing): Delete definition. Wed Jan 31 05:28:45 1996 John W. Eaton * input.cc (DEFAULT_ARRAY_SIZE, PROMPT_GROWTH): Delete definitions of unused macros. (read_octal): Now static. * givens.cc (Fgivens): Use new functions from matrix classes instead of calling Fortran functions directly. * syl.cc (Fsyl): Likewise. * expm.cc (Fexpm): Likewise. Mon Jan 29 00:00:48 1996 John W. Eaton * octave.cc: Use new prog_args class instead of calling getopt directly. * getopt.h, getopt.c, getopt1.c: Move to liboctave directory. * Makefile: Remove from lists. * utils.cc (strconcat, read_until, discard_until): Delete. * pager.cc (terminal_columns, terminal_rows): Move to liboctave/oct-term.cc. * pager.cc, pr-output.cc: Include oct-term.h. * utils.cc (list_in_columns): Moved to liboctave/str-vec.cc. Change all callers to use new member function syntax. * dirfns.cc (absolute_program): Now static. (absolute_pathname): Delete. * pt-plot.cc (save_in_tmp_file): Call oct_tempnam, not octave_tmp_file_name. Include file-ops.h. * file-io.cc (do_scanf, Foctave_tmp_file_name): Likewise. * oct-hist.cc (mk_tmp_hist_file): Likewise. * file-io.cc (Foctave_tmp_file_name): Move here. * utils.cc: From here. * utils.cc (octave_tmp_file_name): Move to liboctave/file-ops.cc. * tempname.c, tempnam.c: Move to liboctave directory. * Makefile.in: Remove from lists. Sun Jan 28 19:00:52 1996 John W. Eaton * xdiv.cc (all xdiv functions): Return Matrix or ComplexMatrix, not tree_constant. * oct-hist.h, oct-hist.cc, toplev.cc, octave.cc, input.cc, file-io.cc, user-prefs.cc: Rewrite to use new command_history class instead of calling readline history functions directly. * utils.cc (get_fcn_file_names): Delete num arg. Thu Jan 25 20:33:54 1996 John W. Eaton * load-save.cc (matches_patterns): Use new glob_match class instead of calling fnmatch directly. * symtab.cc (matches_patterns, symbol_table::glob): Likewise. * variables.cc (Fclear): Likewise. Wed Jan 24 02:05:22 1996 John W. Eaton * fnmatch.h fnmatch.c: Delete. * Makefile.in: Add glob stuff in the appropriate places, remove fnmatch.h and fnmatch.c from lists. * octave.cc (program_invocation_name, program_invocation_short_name): Maybe declare. (initialize_globals): Maybe initialize them. * octave.cc (initialize_pathsearch): Define here, not in pathsearch.cc. * pathsearch.h, pathsearch.cc: Remove files. * Makefile.in: Remove them from the lists. * help.cc (simple_help): Ignore directories that don't have any .m or .oct files. * utils.cc (search_path_for_file): Use new dir_path class instead of calling kpathsea routines directly. (get_fcn_file_names): Likewise. * help.cc (simple_help): Likewise. * dirfns.cc (make_absolute): Don't convert empty arg to "./". * sysdir.h: Move to liboctave directory. * Makefile.in: Remove from lists. * dirfns.cc (Freaddir): Use new dir_entry class instead of calling readdir directly. Include dir-ops.h, not sysdir.h. * utils.cc (get_fcn_file_names): Likewise. Delete unnecessary first arg, change all callers. Tue Jan 23 00:43:12 1996 John W. Eaton * safe-xstat.hin, safe-xstat.cin, statdefs.h, file-ops.h, file-ops.cc, filemode.c, mkdir.c, rmdir.c, rename.c: Files moved to liboctave directory. * Makefile.in: Remove them from lists. Move appropriate rules. * acosh.c, asinh.c, atanh.c, erf.c, erfc.c, gamma.c, lgamma.c: Files moved to liboctave directory. * Makefile.in: Remove them from lists. * missing-math.h: Deleted. * pr-output.cc, sysdep.cc, minmax.cc, mappers.cc, expm.cc, arith-ops.cc: Include oct-math.h, not cmath or missing-math.h. Mon Jan 22 19:33:05 1996 John W. Eaton * variables.cc (Fexist): Use file_stat instead of calling stat directly. Include file-ops.h, not statdefs.h. * octave.cc (execute_startup_files): Likewise. * file-io.cc (file_io_get_file, fopen_internal, popen_internal, Fstat): Likewise. (mk_stat_map): Likewise, use file_stat object, not struct stat. * oct-hist.cc (do_history): Likewise. * file-ops.h, file-stat.cc: New files. * Makefile.in: Include them. * dirfns.cc: Delete is_newer. Don't include statdefs.h. * toplev.cc: Don't include statdefs.h. Sun Jan 21 22:48:03 1996 John W. Eaton * pt-mvr.h, pt-fvc.h, Map.cc, Map.h, dynamic-ld.h, pt-fvc-base.cc, SLList-str.cc, pt-fcn.h, pt-fvc-base.h, SLStack-str.cc, pt-mvr.cc, pt-exp.cc, token.h, token.cc, user-prefs.h, pt-base.cc, user-prefs.cc, dirfns.h, sysdep.h, sysdep.cc, input.h, parse.h, lex.l, parse.y, defun.h, mappers.h, pt-fvc.cc, pt-plot.h, load-save.h, octave.cc, defun-int.h, help.h, variables.h, oct-map.h, oct-obj.h, oct-obj.cc, pt-const.cc, oct-map.cc, input.cc, symtab.h, pt-const.h, pathsearch.cc, pr-output.h, pr-output.cc, toplev.h, timefns.cc, schur.cc, pt-plot.cc, pager.cc, load-save.cc, dynamic-ld.cc, dirfns.cc, data.cc, file-info.h, file-info.cc, colloc.cc, utils.h, qpsol.cc, quad.cc, npsol.cc, lsode.cc, fsolve.cc, dassl.cc, file-io.cc, help.cc, utils.cc, oct-hist.h, oct-hist.cc, symtab.cc, toplev.cc, pt-fcn.cc, unwind-prot.h, unwind-prot.cc, variables.cc: Most functions in these files that deal with character strings have been converted to use the string class insatead of char*. If you want more detailed information, you'll have to figure it out for yourself. Sat Jan 20 18:19:12 1996 John W. Eaton * dynamic-ld.cc [WITH_DL]: Define RTLD_LAZY to be 1 if it is not already defined. Sun Jan 14 07:48:05 1996 John W. Eaton * pt-const.cc (print_as_scalar, print_as_structure): Make these member functions. (tree_constant::print_with_name): New function, moved here from old tree-expr.cc file (where it was called print_constant) and converted to member function. Change all callers. Fri Jan 12 01:54:49 1996 John W. Eaton * octave.cc (initialize_globals): Don't do kpathsearch stuff here. (main): Call initialize_pathsearch() here. * pathsearch.cc: New file. * Makefile.in (SOURCES): Add it to the list * oct-hist.h: Rename from octave-hist.h. * oct-hist.cc: Rename from octave-hist.cc. * Makefile.in, parse.y, other .cc files: Cope with it. * dynamic-ld.cc: Avoid warnings if !WITH_DYNAMIC_LINKING. * load-save.cc (save_ascii_data): string::data() returns const char*. * utils.h: Don't provide forward declaration for tree_constant. * oct-obj.h: Don't include mx-base.h or provide forward declarations for Matrix and Range types. * file-info.h: Don't include oct-obj.h. Do include cstdio. * symtab.h: Don't provide forward declaration for ostream. * variables.h: Don't provide forward declarations for istream, ostrstream, tree, builtin_function, or builtin_variable objects. * balance.cc, chol.cc, colloc.cc, dassl.cc, det.cc, eig.cc, expm.cc, fft.cc, fft2.cc, filter.cc, find.cc, fsolve.cc, fsqp.cc, givens.cc, hess.cc, ifft.cc, ifft2.cc, inv.cc, log.cc, lpsolve.cc, lsode.cc, lu.cc, minmax.cc, npsol.cc, pinv.cc, qpsol.cc, qr.cc, quad.cc, qzval.cc, rand.cc, schur.cc, sort.cc, svd.cc, syl.cc: Clean up #include statements. * pt-const.h: Don't include oct-obj.h or tree-base.h. Provide forward declaration of Octave_object here. * pt-const.cc: Include oct-obj.h here. * pt-mat.h, pt-fcn.h, pt-const.h, pt-misc.h, pt-plot.h, pt-exp-base.h, pt-cmd.h, pt-fvc-base.h, pt-mvr-base.h, pt-exp.h, pt-mvr.h, pt-fvc.h: New files, split from tree-expr.h and/or renamed from other tree-*.h files (pt == parse tree). * pt-base.cc, pt-const.cc, pt-exp.cc, pt-fvc-base.cc, pt-mat.cc, pt-mvr-base.cc, pt-plot.cc, pt-cmd.cc, pt-exp-base.cc, pt-fcn.cc, pt-fvc.cc, pt-misc.cc, pt-mvr.cc: Likewse, split from tree-expr.cc and/or other tree-*.cc files. * Makefile.in: Include them in the appropriate lists. * All: Fix #include statements to match. * Array-tc.cc: Don't instantiate ArrayRep objects. Thu Jan 11 02:35:19 1996 John W. Eaton * tree-const.cc (tree_constant::eval (int, int, const Octave_object&)): Define here instead of in tree-const.h. Wed Jan 10 04:34:20 1996 John W. Eaton * tree-const.h (tree_constant::tree_constant (const string&): * tree-const.cc (TC_REP::tree_constant_rep (const string&)): New constructor. Tue Jan 9 04:10:29 1996 John W. Eaton * rand.cc (do_rand): Use string_value() result directly instead of c_str() conversion. * balance.cc (Fbalance): Likewise. * tree-const.cc (TC_REP::string_value()): Handle new definition of charMatrix::row_as_string() * load-save.cc (save_ascii_data): Ditto. (save_binary_data): Ditto. * pr-output.cc (octave_print_internal): Ditto. * balance.cc (Fbalance): Handle new definition of TC_REP::string_value() * colloc.cc (Fcolloc): Ditto. * dassl.cc (Fdassl_options): Ditto. * data.cc (Fstruct_contains): Ditto. * dirfns.cc (Fmkdir): Ditto. (Freaddir): Ditto. (Frmdir): Ditto. (Frename): Ditto. * error.cc (handle_message): Ditto. * file-io.cc (process_printf_format): Ditto. (fopen_internal): Ditto. (file_io_get_file): Ditto. (return_valid_file): Ditto. (Flstat): Ditto. (Fstat): Ditto. (unlink_internal): Ditto. (mkfifo_internal): Ditto. (async_system_internal): Ditto. (sync_system_internal): Ditto. (execute_internal): Ditto. (popen_internal): Ditto. (fwrite_internal): Ditto. (fread_internal): Ditto. (do_printf): Ditto. (do_scanf): Ditto. * input.cc (get_user_input): Ditto. * lsode.cc (Flsode_options): Ditto. * npsol.cc (Fnpsol_options):Ditto. * qpsol.cc (Fqpsol_options):Ditto. * quad.cc (Fquad_options): Ditto. * rand.cc (do_rand): Ditto. * schur.cc (Fschur): Ditto. * sysdep.cc (Fputenv): Ditto. (Fgetenv): Ditto. * timefns.cc (extract_tm): Ditto. (Fstrftime): Ditto. * toplev.cc (Fsource): Ditto. (eval_string): Ditto. (Fsystem): Ditto. * tree-plot.cc (subplot::handle_plot_data): Ditto. * variables.cc (is_valid_function): Ditto. (Fis_global): Ditto. (Fexist): Ditto. (builtin_string_variable): Ditto. * utils.cc (make_argv): Ditto. (Fundo_string_escapes): Ditto. Mon Jan 8 01:54:50 1996 John W. Eaton * Makefile.in (install-bin): Use $(LN_S), not just ln. * variables.cc (octave_fcn_file_dir): New function. * tree-expr.cc (mark_as_system_fcn_file): Use it instead of octave_lib_dir. * Makefile.in (clean): If $(SHARED_LIBS), also remove shared libs. * pr-output.cc (set_format (const ComplexMatrix&, int&, int&)): Unconditionally call all_elements_are_int_or_inf_or_nan(). (set_format (const Matrix&, int&, int&)): Likewise. Sun Jan 7 19:12:39 1996 John W. Eaton * utils.cc (oct_putenv): New function. * sysdep.cc (Fputenv): Use oct_putenv. * octave.cc (initialize_globals): Likewise. Sat Jan 6 23:22:37 1996 John W. Eaton * sysdep.cc (Fputenv): New function. * input.cc (initialize_readline): Call rl_initialize() here. * octave.cc: Conditionally define atexit to be on_exit here. * toplev.cc: Not here. Fri Jan 5 14:01:02 1996 John W. Eaton * toplev.cc: Don't include here. * octave-hist.cc, tree-plot.cc, utils.cc: Do include "sysdep.h". * dirfns.cc, file-io.cc, help.cc, load-save.cc, octave.cc, octave-hist.cc, tree-plot.cc, utils.cc: Don't include . * sysdep.h: Do include it here. * tree-const.cc (TC_REP::assign (tree_constant&, Octave_object&)): If we have a matrix or range, call maybe_mutate before returning. Sun Dec 31 15:56:18 1995 John W. Eaton * npsol.cc (Fnpsol): Improve doc string. * qpsol.cc (Fqpsol): Likewise. Fri Dec 29 21:46:58 1995 John W. Eaton * defun-dld.h: Make work again for OCTAVE_LITE and WITH_DYNAMIC_LINKING. * Makefile.in: Handle shared libraries. Wed Dec 27 17:47:51 1995 John W. Eaton * mk-oct-links: New file. * Makefile.in (install-oct): Use it. * f-*.cc: Rename to *.cc. * Makefile.in (install-bin, install-lib, install-oct): New targets. (install): Use them. Tue Dec 26 21:38:22 1995 John W. Eaton * toplev.cc (reading_startup_message_printed): Move initialization here and make extern. * dirfns.cc, dynamic-ld.cc, help.cc, input.cc, octave-hist.cc, octave.cc, sighandlers.cc, sysdep.cc, tree-expr.cc, tree-misc.cc, utils.cc, variables.cc, parse.y, lex.l: Include toplev.h instead of octave.h. * toplev.h: rename from octave.h. * octave.cc (main): Delete unused variable saved_sigint_handler. Sun Dec 24 00:26:54 1995 John W. Eaton * dynamic-ld.cc: Massive re-write to handle dlopen/dlsym and shl_load/shl_findsym methods of dynamic linking. * utils.cc (get_fcn_file_names): Check for .oct files if WITH_DYNAMIC_LINKING, not WITH_DLD. * Makefile.in (LIB, TERMLIBS): Substitute values. (octave): Add $(LIBS) to link command and use $(TERMLIBS) instead of -ltermcap. Sat Dec 23 21:56:12 1995 John W. Eaton * dynamic-ld.h, dynamic-ld.cc: Remove old unused code. * variables.cc (load_fcn_from_file): Always call load_octave_oct_file. Wed Dec 20 00:56:57 1995 John W. Eaton * pr-output.cc (set_real_format, set_real_matrix_format, set_complex_format, set_complex_matrix_format, set_range_format): New functions. Ensure the count of the digits to the right of the decimal point is positive. * xpow.cc (xpow (const Matrix&, double)): Print warning if inverting singular matrix (but return value anyway, in the name of compatibility). xpow (const ComplexMatrix&, double)): Likewise. * f-inv.cc (Finv): If matrix is singular, return result anyway, in the name of compatibility. * symtab.cc (symbol_record::pop_context): Don't assert (! context.empty ()). * tree-const.cc (TC_REP::char_matrix_value): Don't complain about type conversion if object is an empty matrix.f (TC_REP::assign): If rhs is a string, don't convert to numeric type if rhs is empty or "". Only widen if rhs is not empty. Don't return 0x0 char_matrix if it is supposed to be a string. * arith-ops.h, mappers.h, pr-output.h, xdiv.h, xpow.h: Include oct-cmplx.h in place of forward declaration for class Complex. * pr-output.cc, mappers.cc, arith-ops.cc, xdiv.cc, xpow.cc, utils.cc: Include "oct-cmplx.h" instead of . * octave.cc (initialize_error_handlers): Don't call set_Complex_error_handler(). (octave_Complex_error_handler): Delete unused function. Delete declaration for set_Complex_error_handler(). * sighandlers.cc (catch_interrupts): New function. * octave.cc (main): Call catch_interrupts() instead of calling octave_set_signal_handler() directly. Tue Dec 19 03:22:37 1995 John W. Eaton * variables.cc (looks_like_octave_copyright): Also recognize the string " This program is free software". Thu Dec 14 01:54:06 1995 John W. Eaton * octave-hist.cc (clean_up_history): Only write history file if user_pref.saving_history. * octave-hist.cc (initialize_history, clean_up_history, do_history): Perform tilde expansion on history file name. * octave.cc (main): Check `defined (HAVE_ON_EXIT)' not just `(HAVE_ON_EXIT)'. * user-prefs.h (user_preferences): New fields, `history_file' and `history_size'. * user-prefs.cc (init_user_prefs): Initialize them. (sv_history_file, history_size): New functions. * variables.cc (install_builtin_variables): Initialize user-level variables history_file and history_size. * octave-hist.cc (default_history_size): Now extern. (default_history_file): Likewise. (octave_hist_size, octave_hist_file): Use user preference variables instead. * octave.cc (main): Call initialize_history after execute_startup_files. Fri Dec 8 15:53:59 1995 John W. Eaton * user-prefs.h (user_preferences): New field, `saving_history'. * user-prefs.cc (init_user_prefs): Initialize it. (saving_history): New function. * variables.cc (install_builtin_variables): Initialize user-level variable saving_history. * octave.cc (parse_and_execute): Don't reset value of saving_history here. (main) Use user_pref.saving_history instead of saving_history. * variables.cc (parse_fcn_file): Likewise. * octave-hist.cc (maybe_save_history): Likewise. Don't save history if input_from_startup_file. Mon Nov 27 23:05:52 1995 John W. Eaton * resource.cc: Include systime.h before . Tue Nov 14 14:09:40 1995 John Eaton * error.cc: Include cstring. * tree-expr.cc (print_code): Decrement indent level after printing function body. * Makefile.in: Remove references to oct-str.cc, oct-str.h, and Array-string.cc. * tree-const.h: Don't include oct-str.h. Mon Nov 6 11:16:49 1995 John Eaton * parse.y (make_plot_command, finish_colon_expression, make_unwind_protect, make_try_command, make_for_command, make_break_command, make_continue_command, make_return_command, start_if_command, finish_if_command, make_elseif_clause, make_simple_assignment, make_multi_val_ret, start_function_def, frob_function_def, finish_function_def, start_matrix, finish_matrix): New functions. Use them in the grammar to clean things up a bit. Possibly convert matrix lists, colon expressions, binary expressions, and unary expressions to constant values. (tree_matrix_type): Delete. (simple_expr1): Handle all expression stuff here, including assignments. (simple_expr): Just check to see that simple_expr1 produced something useful. * tree-plot.cc, tree-plot.h: Move most simple constructors to the header file. * tree-expr.h (tree_expression::is_constant): Move virtual function definition here. (tree_fvc::is_constant): From here. (tree_expression::is_matrix_constant): New virtual function. (tree_expression::is_range_constant): New virtual function. * tree-expr.cc (tree_matrix::is_matrix_constant): New function. * tree-expr.cc (tree_colon_expression::is_range_constant): New function. Fri Nov 3 03:42:04 1995 John Eaton * utils.cc, utils.h (jump_to_top_level): Declare as extern "C". * tree-const.h (tree_constant::eval ()): Only mutate if printing. * tree-const.cc (TC_REP::tree_constant_rep (const Complex&), TC_REP::tree_constant_rep (const ComplexMatrix&), TC_REP::tree_constant_rep (const ComplexDiagMatrix&), TC_REP::tree_constant_rep (const ComplexRowVector&), TC_REP::tree_constant_rep (const ComplexColumnVector&)): Also check to see if we can convert to scalar_constant, not just complex_scalar_constant. * user-prefs.h (user_preferences): New field, `exec_path'. * user-prefs.cc (init_user_prefs): Initialize it. (sv_exec_path): New function. * variables.cc (install_builtin_variables): Add DEFUN for EXEC_PATH. (default_exec_path): New function. * octave.cc (exec_path): New global variable. Don't set and putenv() exec path here. (long_opts): Add --exec-path option. (main): Handle it. (initialize_globals): Set default value here. * user-prefs.h (user_preferences): New field, `info_prog'. * user-prefs.cc (init_user_prefs): Initialize it. (sv_info_prog): New function. * variables.cc (install_builtin_variables): Add DEFUN for INFO_PROGRAM. (default_info_prog): New function. * octave.cc (info_prog): New global variable. (initialize_globals): Set default value here. (long_opts): Add --info-prog option. (main): Handle it. * help.cc (try_info): Use user_pref.info_prog here. * octave.cc (initialize_globals): Put arch_dir and bin_dir ahead of shell_path when resetting PATH. Thu Nov 2 04:30:13 1995 John Eaton * f-rand.cc (Frandn): New function. (do_initialization): New function. (do_rand): New function for doing the real work. (Frand): Use it. * octave.cc (parse_and_execute): New arg, warn_for. If given, print message if file cannot be opened. Set curr_fcn_file_full_name here. (Fsource): Pass extra arg to parse_and_execute to get warning message. * tree-const.h: Handle line and column info for double, Complex, and char* constants. * parse.y (maybe_convert_to_ans_assign): Pass along line and column info from expression. * parse.y (make_constant): New function. (simple_expr1, word_list): Use it. * input.cc, input.h (curr_fcn_file_full_name): New global. * variables.cc (load_fcn_from_file): Set it here. * parse.y (func_def2, yyerror, maybe_warn_missing_semi): Use it. (func_def2): If !reading_fcn_file, don't call strcmp if curr_fcn_file_name is 0. * octave.cc (Fsource): New function. (parse_and_execute): Declare file name const char *. * input.cc (get_input_from_file): Likewise. Wed Nov 1 13:54:34 1995 John Eaton * f-filter.cc: New file. * Makefile.in (DLD_SRC): Add it to the list. * sysdep.h (gethostname): Change declaration to match definition in sysdep.cc. * resource.cc: Include sysdep.h here, for octave_NaN. Tue Oct 31 02:12:18 1995 John Eaton * tree-const.cc (TC_REP::assign): After converting rhs to a numeric type, use the converted value, not the original. * dirfns.cc (Fpwd): If nargout == 0, print the directory name instead of returning it. * pager.cc (maybe_page_output): Call maybe_write_to_diary_file here. (flush_output_to_pager): Not here. Mon Oct 30 23:39:43 1995 John Eaton * variables.cc (install_builtin_commands): Add DEFVAR for echo_executing_commands. * octave-hist.cc (do_edit_history): Handle new echo stuff. * variables.cc (parse_fcn_file): Likewise. * octave.cc (parse_and_execute): Likewise. (main): Likewise. * input.cc (do_input_echo): (Fecho): New function. * tree-expr.cc (tree_function::print_code_function_header, tree_function::print_code_function_trailer): New functions. (tree_function::print_code): Use them. (tree_function::eval): Likewise, if echoing commands. * tree-misc.cc (tree_statement::maybe_echo_code): New function. * user-prefs.h (user_preferences): New field, echo_executing_commands. (echo_state): New enum, for various types of echoing we do. * user-prefs.cc (echo_executing_commands): New function. * tree-base.cc (print_code_indent): Print PS4 as line prefix. * help.cc (Ftype): Add unwind_protect for ps4 and set it to "" before printing code. * tree-misc.h (tree_statement_list): New field, function_body. (tree_statement_list::mark_as_function_body): New function. * parse.y (func_def3): Mark function bodies. * pr-output.cc (octave_print_internal): Undo string escapes when printing charMatrix as strings. Sat Oct 28 17:38:29 1995 John Eaton * utils.h (undo_string_escapes): Add missing const in declaration. Fri Oct 27 03:49:44 1995 John Eaton * file-io.cc (next_available_file_number): New stack for keeping track of next available file number. (get_next_avail_file_num): New function. (fopen_file_for_user, fopen_internal, popen_internal, execute_internal): Use it. Mon Oct 23 07:00:09 1995 John Eaton * tree-const.cc (TC_REP::convert_to_matrix_type, tree_constant::convert_to_matrix_type): New arg, make_complex. (TC_REP::set_index): New arg, rhs_is_complex. Pass it to convert_to_matrix_type. (TC_REP::assign): Pass rhs.is_complex_type() to set_index. Thu Oct 19 00:38:38 1995 John Eaton * xpow.cc: Include . * sysdep.cc (Fpause): Do pause even if not interactive. * tree-const.cc (TC_REP::assign): Don't make RHS numeric if both RHS and LHS are strings. Wed Oct 18 22:19:16 1995 John Eaton * f-expm.cc (Fexpm): Avoid taking log of negative number. Also, don't unnecessarily divide the input matrix by 1.0. * input.cc (decode_prompt_string): Recognize \[ and \] too. (initialize_readline): Bind M-p to history-search-backward and M-n to history-search-forward. Tue Oct 17 04:31:06 1995 John Eaton * xpow.cc (xpow): Handle integer powers better for complex^double. (elem_xpow): Likewise. * lex.l ({CCHAR}): If nesting_level.top() is BRACE, return ';', not '\n'. Mon Oct 16 19:03:45 1995 John Eaton * help.cc (Fwhich): Fix doc string. * variables.cc (Fexist): Update doc string. Sun Oct 15 22:19:16 1995 John Eaton * Another massive set of changes to support character matrices with indexing. The Octave_str_object class is no longer used. Anything having to do with Octave_str_object in the following files has been changed to use charMatrix instead: octave.h, load-save.cc, octave.cc, strfns.cc, data.cc, pr-output.h, pr-output.cc, tree-const.h, dirfns.cc, tree-const.cc, tree-expr.cc. Sat Oct 14 22:28:18 1995 John Eaton * f-sort.cc (mx_sort): Don't attempt to sort vectors that have only one element, or matrices that have only one row. Thu Oct 12 02:16:58 1995 John Eaton * mappers.cc (install_mapper_functions): Add gammaln as an alias for lgamma. * tree-const.h, tree-const.cc: Massive overhaul of indexing and indexed assignment functions. * tc-inlines.h, tc-rep.h: Remove files. * Makefile.in: Remove mention of them here too. * Makefile.in: Include $(TI_SRC) in DEP_SOURCES_3, not $(TI_SOURCES). Include $(DLD_SRC) in DEP_SOURCES_3. Include $(TI_SRC) in DEF_FILES_5. Wed Oct 11 01:26:18 1995 John Eaton * Makefile.in (INCLUDES): Remove tc-inlines.h and tc-rep.h from the list. Mon Oct 9 08:31:04 1995 John Eaton * lex.l (next_token_is_bin_op): Do match `.+', `.*', etc. Sun Oct 8 18:19:56 1995 John Eaton * idx-vector.h, idx-vector.cc: Delete files. * Makefile.in (SOURCES, INCLUDES): Remove them from lists. Fri Oct 6 00:52:06 1995 John Eaton * f-svd.cc (Fsvd): If nargout == 0 or nargout == 1, don't ask for U and V. Wed Oct 4 00:04:57 1995 John Eaton * f-npsol.cc (Fnpsol, Fnpsol_options): Avoid unused variable warnings if NPSOL_MISSING. * f-qpsol.cc (Fqpsol, Fqpsol_options): Likewise for QPSOL_MISSING. * Makefile.in (DISTFILES): Add octave.gperf. * lex.l (next_token_is_bin_op): Don't ever return true for `.' since that causes problems with things like [ .1 .1 ]. Tue Oct 3 05:30:24 1995 John Eaton * variables.cc (is_valid_function): Avoid setting error_state if argument is not a string. * parse.y (maybe_warn_missing_semi): New function. (list1, list): Call it if statement not terminated by semicolon. * tree-misc.h (tree_statement::line, tree_statement::column): New functions. * octave.cc (input_from_command_line_file): New global variable. (main): Set it. (parse_and_execute): Unwind-protect it and set it to zero. (eval_string): Likewise. * variables.cc (parse_fcn_file): Likewise. * user-prefs.cc (warn_missing_semicolon): New function. * user-prefs.h (user_preferences): New field, warn_missing_semicolon. * variables.cc (install_builtin_variables): DEFVAR it. * tree-expr.cc (tree_expression::is_logically_true): Actually use argument. Mon Oct 2 19:55:48 1995 John Eaton * variables.cc (install_builtin_variables): Reduce the default value of save_precision to 15. * variables.cc (builtin_real_scalar_variable): Return 1 for success, 0 for failure. * user-prefs.cc (struct_levels_to_print, set_save_precision, set_output_max_field_width, set_output_precision): Change sense of test for builtin_real_scalar_variable return value. (check_preference): Rename from check_str_pref. Change all callers. Accept value of 0 to be the same as "false" and nonzero to be the same as "true". Delete val to avoid memory leak. * variables.cc (install_builtin_variables): Change initial values from "true" to 1, "false" to 0. * variables.cc (install_builtin_variables): Add DEFVAR for gnuplot_has_multiplot. * user-prefs.h (user_preferences): New field, `gnuplot_has_multiplot'. * user-prefs.cc (init_user_prefs): Initialize it. (gnuplot_has_multiplot): New function. Sat Sep 30 16:52:57 1995 John Eaton * oct-gperf.h, octave.gperf: Newfiles. * Makefile.in (DISTFILES): Add octave.gperf. (INCLUDES): Add oct-gperf.h. (oct-gperf.h): New rule. (local-dist, dist): Depend on oct-gperf.h. * lex.l (is_keyword): Use perfect hash function to lookup keywords. Fri Sep 29 04:36:04 1995 John Eaton * version.h (OCTAVE_NAME_AND_VERSION): Add TARGET_HOST_TYPE to this. Thu Sep 28 00:03:51 1995 John Eaton * tree-expr.cc (tree_expression::is_logically_true): New function. * tree-cmd.cc (tree_while_command::eval): Use it instead of handling the test directly here. * tree-misc.cc (tree_if_clause::eval): Likewise * tree-const.cc (TC_REP::force_numeric): Don't try to print value of str_obj with %s. * error.cc (buffer_error_messages): Rename from suppress_octave_error_messages. (error_message_buffer): New global variable. (verror): Handle buffering of messages. (handle_message): New function. (Ferror, Fwarning, Fusage): Use it instead of duplicating code. * octave.cc (Feval): Buffer error messages instead of supressing them. * lex.l (is_keyword): Recognize `try', `catch', and `end_try_catch'. * parse.y (TRY, CATCH): New tokens. (command): Recognize try-catch block. (end_error): Add cases for unwind_protect_end and try_catch_end. * token.h (end_tok_type): New field, try_catch_end. * tree-cmd.h, tree-cmd.cc (tree_try_catch): New class. * variables.cc (bind_global_error_variable): New Function. (clear_global_error_variable): Likewise. (install_builtin_variables): Add DEFCONST for __error_text__. * help.cc (keywords): Add `try', `catch', and `end_try_catch'. * tree-cmd.cc (tree_unwind_protect::eval): Undo previous change. * dirfns.cc (Freaddir, Fmkdir, Frmdir): Do tilde expansion on the argument. Tue Sep 26 00:10:29 1995 John Eaton * f-dassl.cc, f-fsolve.cc, f-lsode.cc, f-npsol.cc, f-quad.cc: Don't try to figure out if the user-supplied functions take the correct number of arguments. Simply let the call fail. * variables.cc (takes_correct_nargs): Delete unused function. * tree-expr.cc (tree_builtin::eval): Don't complain for too many arguments to mapper functions. * tree-expr.h, tree-expr.cc (tree_builtin, tree_function, tree_fvc): Delete unused function max_expected_args. * defun.h (DEFUN): Delete unnecessary args nargin_min and nargout_max. New arg unused_arg_flags. (DEFUN_TEXT): Likewise. * defun-dld.h (DEFUN_DLD_BUILTIN): Likewise. * defun-int.h (DEFUN_INTERNAL, DECLARE_FUN, DEFINE_FUN_STRUCT): Do the real work. * data.cc, dirfns.cc, dynamic-ld.cc, error.cc, f-balance.cc, f-chol.cc, f-colloc.cc, f-dassl.cc, f-det.cc, f-eig.cc, f-expm.cc, f-fft.cc, f-fft2.cc, f-find.cc, f-fsolve.cc, f-fsqp.cc, f-givens.cc, f-hess.cc, f-ifft.cc, f-ifft2.cc, f-inv.cc, f-log.cc, f-lpsolve.cc, f-lsode.cc, f-lu.cc, f-minmax.cc, f-npsol.cc, f-pinv.cc, f-qpsol.cc, f-qr.cc, f-quad.cc, f-qzval.cc, f-rand.cc, f-schur.cc, f-sort.cc, f-svd.cc, f-syl.cc, file-io.cc, help.cc, input.cc, lex.l, load-save.cc, mappers.cc, octave-hist.cc, octave.cc, octave.h, pager.cc, pr-output.cc, resource.cc, sighandlers.cc, strfns.cc, sysdep.cc, timefns.cc, token.cc, tree-const.cc, tree-expr.cc, tree-expr.h, tree-plot.cc, unwind-prot.cc, unwind-prot.h, utils.cc, variables.cc, variables.h, version.h, xdiv.cc: Avoid unused variable warnings. * tree-expr.h (tree_oct_obj::print_value (ostream&)): Delete name of unused arg. (tree_fvc::save (ostream&, int, int): Likewise. * tree-const.h (tree_constant::tree_constant (magic_colon)): Delete name of unused arg. (tree_constant::tree_constant (all_va_args)): Likewise (ColumnVector vector_value (int, int)): Likewise. (ComplexColumnVector vector_value (int, int)): Likewise. (Octave_object::eval (int, int, const Octave_object&): Likewise. * octave.cc (execute_startup_files): Look for octaverc first in site/m, then in $(version)/m. * variables.cc (get_local_site_defaults): New function. * defaults.h.in (OCTAVE_LOCALFCNFILEDIR, OCTAVE_LOCALSTARTUPFILEDIR): New macros. * Makefile.in (defaults.h): Also substitute ${localfcndir}. Mon Sep 25 17:01:03 1995 John Eaton * variables.cc (install_builtin_variables): Add DEFCONST for "e". Fri Sep 22 02:18:45 1995 John Eaton * dirfns.cc (Fls): Delete ls_command after using it, not before. * input.h, input.cc (gnu_readline): Don't declare gnu_readline `extern "C"'. * sysdep.h: Only declare gethostname if it is missing, then don't declare it `extern "C"'. * dirfns.cc: Don't declare strerror(). * input.cc (command_generator): Use malloc, not xmalloc. Don't declare xmalloc. (gnu_readline): Don't declare this `extern "C"'. * octave-hist.cc: Don't declare history_get(). It is now in readline/history.h. * input.cc: Don't declare history_get(). It is now in readline/readline.h. * resource.cc: Don't surround include of sys/resource.h in `extern "C" { }'. * fnmatch.h [__cplusplus]: Surround contents in `extern "C" { }'. * load-save.cc, symtab.cc, variables.cc: Don't surround fnmatch.h include in `extern "C" { }'. * help.cc: Don't #undef __FUNCTION_DEF before including readline/tilde.h. * dirfuns.cc, file-io.cc, help.cc, load-save.cc, octave-hist.cc, sysdep.cc, tree-plot.cc, utils.cc, variables.cc: Don't surround readline includes in `extern "C" { }'. * sysdep.cc: Move all include statements to top of file. Tue Sep 19 01:58:21 1995 John Eaton * octave.cc (Fsystem): Use iprocstream *, and unwind_protect it. * pager.cc (flush_output_to_pager): Likewise. * dirfns.cc (Fls): Likewise. * tree-plot.cc (plot_stream): Now a pointer. (open_plot_stream): Deal with it. (send_to_plot_stream, cleanup_tmp_files, do_external_plotter_cd): Likewise. * procstream.cc (cleanup_iprocstream, cleanup_oprocstream): New functions. * procstream.h, procstream.cc (class iprocstream, class oprocstream): Keep track of pbuf. Initialize it to 0 in default constructors, delete it in destructor. Don't call close in destructor. * sighandlers.cc (octave_set_signal_handler): New function. Use this name instead of signal everywhere. * help.cc (try_info): Likewise. * pager.cc (flush_output_to_pager): Likewise. * octave.cc (main): Likewise. * octave-hist.cc (do_edit_history): Likewise. * input.cc (initialize_readline): Set rl_paren_string_delimiters to avoid treating single quotes as string delimiters when doing paren matching. * Makefile.in (SOURCES): Don't list Map.cc or SLStack.cc here. * tree-const.cc: Do include utils.h. * sysdep.cc: Don't surround terminal includes in extern "C". Include them before readline.h. * Map.h: Don't include utils.h. (CHNode::CHNode (const char*, const C&, CHNode *t): Do strsave() inline. * input.cc (generate_possible_completions): Generate name list even when text == 0. (operate_and_get_next): Don't declare history_stifled, call history_is_stifled () instead. Don't declare history_length, or max_input_history either. Check (where >= history_length - 1) too, as in recent versions of bash. * user-prefs.h (user_prefs): New field, `completion_append_char'. * user-prefs.cc (init_user_prefs): Initialize it. (sv_completion_append_char): New function. * variables.cc (install_builtin_variables): Install completion_append_char. * input.cc (command_generator): Use it. * SLList-expr.cc, SLList-misc.cc, SLList-plot.cc, SLList-tc.cc, DLList-fi.cc: Include config.h. * DLList-fi.cc: Include file-info.h, not file-io.h. Mon Sep 18 11:01:24 1995 John Eaton * octave.h (clean_up_and_exit): Tag with NORETURN instead of using typedef trick. * error.h (panic): Likewise. * utils.h (jump_to_top_level): Likewise. * file-io.h: Protect from multiple includes with octave_file_io, not octave_files. * file-info.h (class file_info): Convert to using std C++ string class from char *. * file-info.cc: Likewise. Don't include utils.h. * file-io.cc (return_valid_file, fopen_file_for_user, fflush_internal, do_scanf): Use operator ==, not strcmp. (close_files): Call error with file.name ().data (), not file.name (). (freport_internal): Call form with file.mode ().data () and file.name ().data (). * file-io.cc, file-io.h: Extract file_info class. * file-info.cc, file-info.h: New files for file_info class. * user-prefs.h (user_prefs): New field, `beep_on_error'. * user-prefs.cc (init_user_prefs): Initialize it. (beep_on_error): New function. * variables.cc (install_builtin_variables): Install beep_on_error. * octave.cc (maximum_braindamage): Set beep_on_error to "true". * error.cc (verror): Conditionally beep. (error): Don't reset error_state until after verror is called. Sun Sep 17 16:41:25 1995 John Eaton * load-save.cc (read_mat_binary_data, read_ascii_data, save_ascii_data, read_binary_data, save_binary_data): Handle string arrays. Fri Sep 15 00:24:19 1995 John Eaton * user-prefs.cc (struct_levels_to_print, set_output_max_field_width, set_output_precision, set_save_precision): Eliminate unecessary kludge variable. * variables.cc (gobble_leading_white_space): New arg, in_parts. Change all callers. * lex.l (HELP_FCN): Delete start state. The `help' command is now handled the same as any other text-style function. * gripes.cc (gripe_invalid_value_specified): New function * user-prefs.cc: Use it. * sysdep.cc (octave_words_big_endian): New global variable. (ten_little_endians): New function. (sysdep_init): Call it. * load-save.cc (words_big_endian): Use this at run-time instead of depending on WORDS_BIGENDIAN at compile-time. * symtab.h (SYMTAB_VARIABLES): New macro. * variables.cc (Fclear): Use it instead of just symbol_def::USER_VARIABLE when looking for variables. * octave.cc (main): If there is a file to execute, set program_invocation_name and program_name to the name of the file and argv to the remaining args. (intern_argv): Only define argv if there are some remaining arguments. * defun.h (DEFVAR_INT): New macro. (DEFVAR): Define in terms of DEFVAR_INT. Delete args protect and eternal. (DEFCONST): New macro. * variables.cc (install_builtin_variables): Use DEFCONST where appropriate, change uses of DEFVAR to match new definition. * variables.cc (bind_builtin_variable): New variant that accepts const tree_constant& value. (install_builtin_variables): Properly alphabetize DEFVAR for this. * octave.cc (short_opts): Prefix with `+' to prevent argv permutation. (main): Don't use readline if forced_interactive. (traditional): New file-scope variable. (long_opts, usage_string, verbose_usage): Add `--traditional'. (maximum_braindamage): New function. (main): Call it if --traditional. * input.cc (do_input_echo): Print prompt correctly when forced_interactive is either true or false. Thu Sep 14 00:54:06 1995 John Eaton * data.cc (Fstruct_elements): New function. * file-io.cc (Fumask): New function. * dirfns.cc (Fmkdir, Frmdir, Frename): New functions. * Makefile.in: Add rules and dependencies for building safe-stat.o and safe-lstat.o. * mkdir.c, rename.c, rmdir.c: New files. * Makefile.in (SOURCES): Include them in the list. * safe-xstat.hin, safe-xstat.cin: New files * Makefile.in (DISTFILES): Include them in the list. * sighandlers.cc (octave_new_handler): Try to continue on memory exhausted errors. (sigfpe_handler): Improve error message. * Makefile.in: Use `ifndef omit_deps', not `ifndef $(omit_deps)'. * dirfns.cc (Freaddir): New function. * f-sort.cc: Complete rewrite. Now uses stable sort algorithm and correctly handles complex matrices containing columns of all real numbers. Wed Sep 13 03:16:40 1995 John Eaton * arith-ops.cc: Unconditionally #define DIVIDE_BY_ZERO_ERROR. * variables.cc (install_builtin_variables): Unconditionally install NaN and nan. * mappers.cc (xisinf): Don't do bogus things if isinf, isnan, or finite are missing. (xfinite): Likewise. * sysdep.cc (octave_ieee_init): Don't set octave_NaN and octave_Inf if values are not available. * resource.cc (mk_ru_map): Don't use ru_ or tv_ as prefixes to Octave names for the structure members. Tue Sep 12 02:04:16 1995 John Eaton * procstream.h, procstream.cc: Rewrite. Mon Sep 11 18:42:05 1995 John Eaton * filemode.c: New file, from Emacs. * Makefile.in (SOURCES): Add it to the list. * file-io.cc (Fstat, Flstat, mk_stat_map): New functions. * timefns.cc (mk_tm_map): Don't use tm_ as prefix to Octave names for these structure members. (extract_tm): Likewise. (Flocaltime): Fix doc string to match. Thu Sep 7 02:04:27 1995 John Eaton * load-save.cc (save_user_variables): New function. * sighandlers.cc (my_friendly_exit): Call it before exiting. (sigfpe_handler): New function. (install_signal_handlers) [__alpha__]: Install it. Wed Sep 6 14:35:10 1995 John Eaton * tree-cmd.cc (tree_unwind_protect::eval): Ignore errors and suppress error messages while executing first block of unwind_protect commands. * parse.y (end_error): Add missing case for unwind_protect_end. * tree-expr.cc (tree_builtin::eval): Complain if no arguments given for mapper functions. (tree_fvc::lookup_map_element): Print error message for invalid structure reference. Tue Sep 5 02:04:12 1995 John Eaton * file-io.cc, input.cc, load-save.cc, octave.cc, sysdep.cc, variables.cc, octave-hist.cc, utils.cc, f-schur.cc, f-rand.cc, f-quad.cc, f-qpsol.cc, f-npsol.cc, f-lsode.cc, f-fsolve.cc, f-dassl.cc, f-colloc.cc, f-balance.cc, error.cc, data.cc: Add const qualifiers where appropriate. * dirfns.h: Include , for time_t. * tempname.c, file-io.cc, help.cc, input.cc, octave-hist.cc, octave.cc, sighandlers.cc, sysdep.cc, tree-expr.cc, tree-misc.cc, tree-plot.cc, utils.cc, variables.cc, sysdir.h: Move #include inside #ifdef HAVE_UNISTD_H. * syswait.h: New file. * Makefile.in (INCLUDES): Add it to the list. * file-io.cc, sighandlers.cc: Use it instead of including sys/wait.h directly. * octave.cc: Include statdefs.h, not sys/stat.h. * sysdir.h: New file. * Makefile.in (INCLUDES): Add it to the list. * dirfns.cc, utils.cc: Use it instead of including the headers directly. * pathlen.h: New file. * Makefile.in (INCLUDES): Add it to the list. * dirfns.cc, input.cc: Use it instead of including sys/param.h directly. * utils.cc: Don't include sys/param.h Sun Sep 3 18:52:59 1995 John Eaton * tree-const.cc (TC_REP::string_value): Return const char*, not char *. * All .cc, .y, .l, .y files: Include , not , and so on for all new C++ versions of these standard C headers. Thu Aug 31 17:09:38 1995 John Eaton * pathsearch.h: Also hide `string'. * oct-str.cc, oct-str.h: New files. * Makefile.in: Add to the appropriate lists. * tc-rep.h: Change char* to Octave_string* in anonymous union. * tree-expr.cc (tree_matrix::eval): Handle multiple element strings. * strfns.cc (toascii): Likewise. * tree-const.cc (print_as_string): Likewise. (TC_REP::force_numeric, TC_REP::rows, TC_REP::columns, TC_REP::double_value, TC_REP::complex_value, TC_REP::matrix_value, TC_REP::complex_matrix_value, TC_REP::convert_to_str): Likewise. (TC_REP::print): Call octave_print_internal for string case. (all_strings): New function. Fix constructors to use new data structure. * pr-output.cc (octave_print_internal): Add version for strings. * Array-string.cc: New file. * octave.cc (octave_argv): New global variable. (intern_argv): New function. (main): Fix argument parsing to do the right thing for arguments to executable scripts. * variables.cc: Add DEFUNs for argv, program_invocation_name, and program_name. * defun.h (DEFVAR): Fix comment. Thu Aug 24 00:02:00 1995 John Eaton * file-io.cc (fgets_internal): Make second arg optional. Add optional arg `strip_final_newline'. (Ffgets): Change to match new definition of fgets_internal. (Ffgetl): Implement using the new fgets_internal. * f-rand.cc (Frand): Update code for sizing return value to match that used by ones, zeros, and eye. Wed Aug 23 19:52:45 1995 John Eaton * tree-const.cc (do_vector_assign): Don't crash for A(range) = scalar, or A(matrix) = scalar. * f-dassl.cc (set_dassl_option): Rename from do_dassl_option. (show_dassl_option): New function. (Fdassl_options): Handle single arg. * f-fsolve.cc (set_fsolve_option): Rename from do_fsolve_option. (show_fsolve_option): New function. (Ffsolve_options): Handle single arg. * f-fsqp.cc (set_fsqp_option): Rename from do_fsqp_option. (show_fsqp_option): New function. (Ffsqp_options): Handle single arg. * f-lpsolve.cc (set_lpsolve_option): Rename from do_lpsolve_option. (show_lpsolve_option): New function. (Flpsolve_options): Handle single arg. * f-lsode.cc (set_lsode_option): Rename from do_lsode_option. (show_lsode_option): New function. (Flsode_options): Handle single arg. * f-npsol.cc (set_npsol_option): Rename from do_npsol_option. (show_npsol_option): New function. (Fnpsol_options): Handle single arg. * f-qpsol.cc (set_qpsol_option): Rename from do_qpsol_option. (show_qpsol_option): New function. (Fqpsol_options): Handle single arg. * f-quad.cc: (set_quad_option): Rename from do_quad_option. (show_quad_option): New function. (Fquad_options): Handle single arg. (Fquad): Doc fix. Tue Aug 22 00:38:05 1995 John Eaton * tree-plot.cc (do_external_plotter_cd): New function. * dirfns.cc (octave_change_to_directory): New function. If cd is successful, also call do_external_plotter_cd(). (Fcd): Call octave_change_to_directory(), not change_to_directory(). * pr-output.cc (pr_any_float): Change declaration of counter to size_t to avoid gcc warnings. * idx-vector.cc, octave-hist.cc, tree-const.cc, tree-expr.cc, tree-misc.cc, utils.cc, xpow.cc, Map.cc: Update for change in for loop variable scope for gcc 2.7.0. Mon Aug 21 19:34:53 1995 John Eaton * tree-const.cc (fortran_style_matrix_assignment): Properly handle case of complex LHS, real RHS. * Makefile.in: Only include dependency files if $(omit_deps) is not set. Wed Jul 5 00:03:58 1995 John Eaton * sysdep.cc: Explicitly include string.h. Sun Jun 25 00:18:10 1995 John Eaton * load-save.cc (too_large_for_float (const Matrix&)): Extract elements as doubles, not Complex. Sat Jun 24 22:59:15 1995 John Eaton * pr-output.cc (any_element_is_inf_or_nan): Declare extern, not static. * f-svd.cc (Fsvd): Call here to avoid trying to take SVD of matrix containing Inf or NaN values. * pr-output.cc (bit_format): New file-scope variable. (set_format, pr_any_float): Handle bit_format. (octave_print_internal): Handle bit_format like bank_format. (init_format_state): Initialize bit_format. (set_format_style): Allow `format bit' and `format native-bit'. Thu Jun 8 15:20:26 1995 John Eaton * mappers.cc (arg, imag, signum): If arg is NaN, return NaN. Mon May 15 14:47:04 1995 John Eaton * pager.cc (Fdiary): Initialize diary_file here, not in the file-scope declaration. * tree-expr.cc (tree_index_expression::eval): Handle nargin == 0 the same as other cases. Tue May 2 10:02:23 1995 John Eaton * load-save.cc (do_double_format_conversion): Add missing breaks. (do_float_format_conversion): Likewise. Mon May 1 13:50:24 1995 John Eaton * Makefile.in (OCTAVE_LIBS): Add @LIBPLPLOT@ to the list. * timefns.cc (Ftime): Handle GETTIMEOFDAY_NO_TZ. * Makefile.in (SOURCES): Delete tc-rep.cc, tc-rep-ass.cc, and tc-rep-idx.cc from the list. * tree-const.h: Add #pragma interface. * tree-const.cc: Add contents of tc-rep.cc, tc-rep-ass.cc, and tc-idx.cc to this file. Add #pragma implementation. This makes tree-const.cc large, but makes the final binary smaller. * unwind-prot.h unwind-prot.cc token.cc token.h procstream.cc procstream.h idx-vector.cc idx-vector.h symtab.cc symtab.h oct-map.cc oct-map.h oct-obj.cc oct-obj.h tree-plot.h tree-plot.cc tree-misc.cc tree-misc.h tree-expr.cc tree-expr.h tree-cmd.cc tree-cmd.h tree-base.cc tree-base.h: Add #pragma interface/implementation. * Makefile.in (OCTAVE_LIBS): Delete @LIBINFO@ from list. * help.cc: Don't include info headers or extern declarations for functions from info. (try_info): Call info as a subprocess. Delete second arg. Handle SIGINT here, not in help_from_info(). (help_from_info): Complain if info doesn't work. * defun-dld.h (DEFUN_DLD_BUILTIN) [OCTAVE_LITE && MAKE_BUILTINS]: If ! WITH_DLD, simply emit a character string constant. Fri Apr 28 15:23:06 1995 John Eaton * lex.l ({IDENT}{S}*): Don't delete tok. That's handled by strip_trailing_whitespace() now. ([^ \t\n]*{S}*|[^ \t\n\;\,]*{S}*): Ditto. * pathsearch.h: Include kpathsea/progname.h. * octave.cc (initialize_globals): Call kpse_set_progname(). * token.h: Declare copy constructor and operator = private. * token.cc: Abort if copy constructor or operator = is used. Thu Apr 27 13:54:39 1995 John Eaton * tree-expr.cc (lookup_map_element): Don't list default argument values here too. * pr-output.cc (hex_format): New file-scope variable. (set_format, pr_any_float): Handle hex_format. (octave_print_internal): Handle hex_format like bank_format. (init_format_state): Initialize hex_format. (set_format_style): Allow `format hex' and `format native-hex'. * variables.cc (bind_ans): Create ans_id each time with new and ask tree_simple_assignment_expression to handle cleaning it up. This apparently plugs a memory leak. * help.cc (Ftype): Don't try to print map constants. Handle references to structure members. Wed Apr 26 12:40:59 1995 John Eaton * input.cc (generate_struct_completions): New function. (generate_possible_completions): Likewise. (looks_like_struct): Likewise. (command_generator): Handle completion of struct variables. * tree-expr.h, tree-expr.cc (tree_fvc::lookup_map_element): Add insert and silent args. * oct-map.cc: New file. * Makefile.in (SOURCES): Add it to the list. Mon Apr 24 09:41:02 1995 John Eaton * variables.cc (Fexist): Handle structure references too. * tree-const.cc (lookup_map_element (const char*, int, int): New function. (lookup_map_element (SLList&, int, int): New arg, silent. * tc-rep.cc (lookup_map_element): New arg, silent. If nonzero, don't call error(). * tc-rep.h (is_empty): Define here. * tree-const.h (is_empty): Hand off to TC_REP::is_empty(). * data.cc (Fstruct_contains): Call lookup_map_element on args(0) instead of extracting the map and calling contains() on it. * parse.y (EPLUS, EMINUS): New tokens. (simple_expr): Handle EPLUS, EMINUS the same as `+' and `-'. * lex.l (".+", ".-"): New patterns. Match these separately to disallow using them as unary operators. * lex.l (next_token_is_bin_op): Simplify by noting that spacing only matters for those tokens that can also be unary ops. Fri Apr 21 14:34:45 1995 John Eaton * load-save.cc (read_ascii_data): Allow reading of empty matrices. * tc-rep-ass.cc (vector_assignment): Only assert that we are not doing fortran-style indexing and that nr <= 1 || nc <= 1. (do_vector_assign): Handle assignment of [] when one dimension is zero and the other is anything. Thu Apr 20 13:56:21 1995 John Eaton * tc-rep-ass.cc (delete_rows, delete_columns): Simply return if num_to_delete is 0. * lex.l (handle_identifier): Don't match plot option keywords inside parentheses or braces. * variables.cc (parse_fcn_file): Also delete tmp_help_txt if running a script. * tree-cmd.h (tree_command): Add destructor. * tree-expr.h tree_simple_assignment_expression (lhs_idx_expr): Hang on to idx_expr, not just its parts so it can be deleted. (init): Initialize it. * tree-expr.cc (~tree_simple_assignment_expression): Delete it. * tree-expr.h (tree_multi_val_ret, tree_oct_obj, tree_fvc, tree_identifier, tree_builtin, tree_function): Add destructors. * tree-expr.cc (tree_function::~tree_function): Delete some stuff. * tree-misc.h (tree_va_return_list): Add destructor. * octave.cc (__builtin_new, __builtin_delete): Provide our own, for debugging. * utils.cc (strconcat): Don't depend on the return value from strcat. (file_in_path): Simplify logic. * parse.y (maybe_convert_to_ans_assign): Create ans_id each time with new and ask tree_simple_assignment_expression to handle cleaning it up. This apparently plugs a memory leak. * lex.l (strip_trailing_whitespace): Declare retval static. Delete it before saving next string. * error.cc (Ferror): Do call error() for empty string args. (error_1): Don't print anything if fmt is "" or "\n", but do set the error state appropriately. * tree-cmd.cc (tree_unwind_protect::eval): Handle return and break in the `try' part of the statement. Mon Apr 10 19:29:44 1995 John Eaton * f-expm.cc, f-givens.cc, f-qzval.cc, f-syl.cc, f-rand.cc: Where appropriate, declare Fortran functions to take reference instead of pointer args. Change callers. * mappers.cc: Declare Fortran functions to take reference instead of pointer args. Change callers. * gamma.c, lgamma.c, erfc.c, erf.c, atanh.c, asinh.c, acosh.c: Declare Fortran functions to take reference instead of pointer args. Sun Apr 9 19:38:53 1995 John Eaton * file-io.cc (Fpopen, Fpclose, Fexecute, Fsync_system, Fasync_system, Fwaitpid, Fmkfifo, Funlink): New functions. * sighandlers.cc (sigchld_handler): New function. (install_signal_handlers): Add call to install sigchld_handler. (This is #if 0'd out, waiting for code to help determine which child exited and what to do about it). * tree-expr.h (tree_oct_obj): New class. * tree-expr.h (tree_multi_assignment_expression::preserve): New data member. Add arg with default value to constructors. Change callers as necessary. * tree-expr.cc (~tree_multi_assignment_expression): Conditionally delete lhs. * parse.y (make_multi_val_ret): Pass matrix instead of getting it from the global matrix list. (expression): Extract matrix from matrix list before calling make_multi_val_ret(). * parse.y (command): Handle new for loop syntax for structures. * tree-plot.h (subplot_list): Include tree_print_code() in initializer lists for constructors. * tree-expr.h (tree_statement_list, tree_argument_list, tree_parameter_list, tree_return_list, tree_global_init_list, tree_if_command_list, ): Likewise. * tree-cmd.h (tree_for_command::id_list): New data member. (tree_for_command (tree_return_list*, tree_expression*, tree_statement_list*, int, int)): Likewise. * tree-cmd.cc (tree_for_command::eval): Handle for loops with structures. (do_for_loop_once (tree_return_list*, Octave_object&, int&)): New form for handling for loops with structures. * sysdep.cc (octave_ieee_init): Determine floating point format here. (native_float_format): New global variable. (Fisieee): Compute return value from native_float_format, not by using preprocessor macros. * sysdep.h (enum floating_point_format): Move declaration here. * load-save.cc: From here. Always define all floating point format conversion routines. (do_double_format_conversion, do_float_format_conversion): Use native_float_format instead of preprocessor macros. Sat Apr 8 15:41:35 1995 John Eaton * Makefile (TEMPLATE_SRC): New variable. (DISTFILES): Add $(TEMPLATE_SRC). (SOURCES): Delete Map.cc and SLStack.cc from here. * variables.cc (install_builtin_variables): Use OCTAVE_VERSION instead of version_string to initialize OCTAVE_VERSION. * version.h (version_string): Delete. * getopt.c (_getopt_internal): Initialize indfound to avoid warning. Fri Apr 7 15:29:41 1995 John Eaton * tc-inlines.h (REP_RHS_MATRIX): Just check to see if tc is real or complex. If conversion fails, return. Thu Apr 6 00:10:47 1995 John Eaton * data.cc (Fstruct_contains): New function. * tc-rep.cc (print_code): Add extra parens around while condition to avoid warning. * utils.cc (undo_string_escapes): Likewise. * input.cc (decode_prompt_string): Likewise. Also rewrite if statement to avoid warning. Tue Apr 4 22:54:17 1995 John Eaton * tree-expr.cc (tree_multi_assignment_expression::eval, tree_simple_assignment_expression::eval): Call print_constant even if user_pref.print_answer_id_name is false. Mon Apr 3 17:57:14 1995 John Eaton * tc-inlines.h (TC_REP): Avoid redefinition. * tree-const.h (do_binary_op, do_unary_op): Declare as friends of tree_constant class too. * tree-plot.h (subplot_using::have_values): Delete data member. * tree-plot.cc (subplot_using::eval): Always recompute values. Fri Mar 31 10:18:32 1995 John Eaton * tc-rep.cc (print): Print open brace for structures here. * tree-expr.cc (print_constant): Not here. * symtab.cc (define): Don't delete arg if sv_fcn fails. * tree-const.cc (print): New function. Create ostrstream buffer and pass it to rep->print(). * tree-const.h (eval (int)): Call print(), not rep->print(). * tc-rep.cc (structure_indent_level): New file-scope variable. (print): New arg, output_buf, is stream to print to. Print values of structure elements too. * user-prefs.h (user_preferences): New field, struct_levels_to_print. * user-prefs.cc (struct_levels_to_print): New function. * variables.cc (install_builtin_variables): Add DEFVAR for new variable struct_levels_to_print. * tree-const.cc (print_as_scalar, print_as_structure): Move here from tree-expr.cc and make extern. * tree-expr.cc (print_as_structure): New function. (print_constant): Use it. * tree-expr.cc (print_constant): New arg, print_padding. (tree_simple_assignment_expression::eval): Use print_constant instead of duplicating code here. (tree_multi_assignment_expression::eval): Likewise. Thu Mar 30 13:24:11 1995 John Eaton * Makefile.in (SOURCES): Add resource.cc. * resource.cc: New file, extracted from timefns.cc. (Fgetrusage): New function. * timefns.cc (cputime): Delete (now implemented in a function file using new getrusage function). Wed Mar 29 22:52:42 1995 John Eaton * Makefile.in (SOURCES): Add strftime.c. * strftime.c: New file, from sh-utils distribution. * timefns.cc (mk_tm_map, extract_tm, Ftime, Fgmtime, Flocaltime, Fmktime, Fstrftime): New basic time functions. (Fclock, Fdate): Delete (now implemented in function files using new time functions). Tue Mar 28 17:51:51 1995 John Eaton * file-io.cc (return_valid_file, do_printf, do_scanf, fclose_internal, feof_internal, ferror_internal, fflush_internal, fgets_internal, fopen_internal, fread_internal, freport_internal, frewind_internal, fseek_internal, ftell_internal, fwrite_internal): Declare static. * file-io.h: Delete extern declarations for them. Fri Mar 24 09:52:50 1995 John Eaton * pr-output.cc (pr_col_num_header): New function. (compact_format): New file-scope variable. (set_format_style): Handle loose and compact formats. (octave_print_internal (ostream&, const ComplexMatrix&, int)): Replace duplicate code with call to pr_col_num_header(). (octave_print_internal (ostream&, const Matrix&, int): Likewise. (octave_print_internal (ostream&, const Range&, int): Likewise. Tue Mar 21 08:44:48 1995 John Eaton * mappers.cc (xgamma): Always use Slatec library function. * (xlgamma): Likewise. * Makefile.in (SOURCES): Don't include lgamma.c. Fri Mar 17 22:38:39 1995 John Eaton * tc-rep.cc (TC_REP::new): Don't try to keep track of newlist_tail. Explicitly initialize newlist to zero. * tree-const.cc (tree_constant::operator new): Likewise. Fri Mar 10 12:40:24 1995 John Eaton * tree-cmd.cc (quit_loop_now): Declare inline. (tree_for_command::do_for_loop_once): Split into two versions, one for the general case and one for when the loop variable is a simple identifier. (DO_LOOP): New macro. Move tests outside of loop. (tree_for_command::eval): Speed up by checking to see if loop variable is a simple identifier and by using DO_LOOP. * tree-const.h: New union of rep and freeptr. The freeptr element is used for our custom memory management functions. * tc-rep.h: Add freeptr element to anonymous union (for our custom memory management functions). * tree-const.cc (newlist, newlist_grow_size, newlist_tail): New static variables. (tree_constant::operator new): Always define to allow more efficient allocation of single tree_constants. (tree_constant::operator delete): Likewise, handle deletion of the memory we allocate. * tc-rep.cc (newlist, newlist_grow_size, newlist_tail): New static variables. (tree_constant::operator new): Always define to allow more efficient allocation of single tree_constants. (tree_constant::operator delete): Likewise, handle deletion of the memory we allocate. Fri Mar 3 14:00:08 1995 John Eaton * error.cc (verror): Terminate output_buf with ends. * statdefs.h: Use C-style comment in first line instead of C++-style comment. Mon Feb 27 10:11:18 1995 John Eaton * parse.y (maybe_convert_to_ans_assign): Only lookup ans once. * variables.cc (bind_ans): New function. * tree-expr.cc (tree_identifier::eval (int)): Use it here. (tree_identifier::eval (int, int, const Octave_object&): And here. * tree-expr.cc (install_nargin_and_nargout): New function. * tree-expr.h (tree_function::tree_function (tree_statement_list *, symbol_table *, int, int)): Call it. * tree-expr.cc (tree_function::bind_nargin_and_nargout): New function. (tree_function::eval): Call it insead of the one from variables.cc. * variables.cc (bind_nargin_and_nargout): #if 0 out. Sun Feb 26 00:17:06 1995 John Eaton * load-save.cc (Fload, Fsave): Free fname returned by tilde_expand(). * dirfns.cc (Fls): Likewise. * tree-expr.cc (tree_multi_assignment_expression::eval (int, int, const Octave_object&)): Call tree_return_list::operator () (Pix) explicitly. * octave.cc (initialize_globals): Put TEXMF in the environment for kpthsea. * Makefile.in (OCTAVE_LIBS): Use @LIBINFO@ and @LIBREADLINE@, substituted by configure. Use kpathsea.a, not libkpathsea, so we don't have to modify the kpathsea Makefile. Sat Feb 25 18:59:26 1995 John Eaton * pathsearch.cc: New file. * pathsearch.h: New file. * Makefile.in (INCLUDES): Include it in the list. * dynamic-ld.cc, help.cc, utils.cc: Use it instead of repeating identical code multiple times. * variables.cc (install_builtin_variables): Only DEFVAR suppress_verbose_help_message if USE_GNU_INFO. * help.cc (Fhelp): Only handle -i if USE_GNU_INFO. (additional_help_message): Only print message if USE_GNU_INFO. (builtin_help): New function. (help_from_info): New function. Print warning if not USE_GNU_INFO. See ChangeLog.1 in the top level directory for earlier changes.