view src/ChangeLog @ 11771:735dfdb92384 release-3-0-x

Treat bool as a scalar in the bit functions
author David Bateman <dbateman@free.fr>
date Tue, 06 May 2008 06:20:36 -0400
parents 1a7ef7a48be1
children ccde8cbe9501
line wrap: on
line source

2008-05-06  David Bateman  <dbateman@free.fr>

	* bitfcns.cc (BITOP): Treat octave_bool types and octave_scalar.

2008-05-06  John W. Eaton  <jwe@octave.org>

	* ov-cell.cc (Fstruct2cell): Handle structure arrays properly.

2008-05-05  David Bateman  <dbateman@free.fr>

	* sysdep.cc (Fputenv): Allow single arg. Alias to setenv.

2008-05-04  John W. Eaton  <jwe@octave.org>

	* ov-fcn-handle.cc (Ffunctions): Pass octave_value object instead
	of Cell in structure field assignment.

2008-04-23  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__qp__.cc (qp): Avoid bounds error when removing
	constraint from active set.

2008-04-21  John W. Eaton  <jwe@octave.org>

	Version 3.0.1 released.

	* version.h (OCTAVE_VERSION): Now 3.0.1.
	(OCTAVE_RELEASE_DATE): Now 2008-04-21.
	(OCTAVE_COPYRIGHT): Update year.

2008-04-20  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_stream::read): Allow single data type
	specification but return double.

2008-04-18  John W. Eaton  <jwe@octave.org>

	* pr-output.cc (Fdisp): If nargout > 0, produce an sq-string
	unless arg is a dq-string.

2008-04-14  Jaroslav Hajek <highegg@gmail.com>

	* oct-stream.cc (octave_scan_1): Ensure digit following X is hex
	digit before reading number as hex.

2008-04-14  John W. Eaton  <jwe@octave.org>

	* file-io.cc (Ffread): Allow SKIP arg to be omitted.
	(Ffwrite): Likewise.  Handle args in a way consistent with Ffread.

2008-04-09  Michael Goffioul  <michael.goffioul@gmail.com>

	* DLD-FUNCTIONS/dispatch.cc: Replace system("echo '...'>...") calls
	with real file writing.

2008-04-04  John W. Eaton  <jwe@octave.org>

	* parse.y (make_constant): Handle escape sequences in dq-strings.

2008-04-03  John W. Eaton  <jwe@octave.org>

	* parse.y (make_constant): Also stash original text for strings.

	* ov-fcn-handle.cc (octave_fcn_handle::subsref):
	Don't call next_subsref here.

2008-04-03  Jaroslav Hajek <highegg@gmail.com>

	* DLD-FUNCTIONS/sort.cc (xabs, ascending_compare, operator <,
	descending_compare, operator >): Move definitions ahead of
	#include "oct-sort.cc".

2008-04-02  John W. Eaton  <jwe@octave.org>

	* graphics.cc, graphics.h.in (class axes):
	New properties, tickdir and tickdirmode.

2008-03-27  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/max.cc: Rename from minmax.cc.
	* Makefile.in (DLD_XSRC): Rename minmax.cc to max.cc.

2008-03-08  Primozz Peterlin  <primozz.peterlin@gmail.com>

	* variables.cc (Fexist): Doc fix.

2008-03-23  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-int.h: Add el_div and el_ldiv operators to the
	binops that were missing them. Added elem_pow functions for mixed
	integer floating point cases. Initialize the mixed integer
	floating point cases.

2008-03-18  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/minmax.cc: 64-bit indexing fix.

2008-03-11  John W. Eaton  <jwe@octave.org>

	* graphics.cc, graphics.h.in (class axes): New property, linewidth.

	* DLD-FUNCTIONS/eig.cc (Feig): Handle possible error from EIG.
	* DLD-FUNCTIONS/qp.cc (qp, Fqp): Likewise.
	* xpow.cc (xpow): Likewise.

2008-03-10  John W. Eaton  <jwe@octave.org>

	* mex.cc (mxCreateLogicalScalar): Argument is now mxLogical.

	* mxarray.h.in (mxLogical): Use unsigned char instead of int.
	From Antwerpen, G. (Gert) van <gert.vanantwerpen@tno.nl>.

2008-03-06  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): Document that
	the initial interpretation of a positive definite return from
	matrix_type is that the matrix is "probably" positive definite and
	not certainly so.

2008-03-06  John W. Eaton  <jwe@octave.org>

	* graphics.cc (line::properties::properties,
	line::properties::factory:defaults, patch::properties::properties, 
	patch::properties::factory:defaults,
	surface::properties::properties,
	surface::properties::factory:defaults):
	Set markersize to 6 by default.

2008-03-06  Alexander Barth  <barth.alexander@gmail.com>

	* DLD-FUNCTIONS/__lin_interpn__.cc (lookup):
	Handle decreasing coordinate values.

2008-02-27  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (do_read): Stop reading if seek fails.

2008-02-26  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/rand.cc (do_rand): Pass name of calling function
	to octave_rand::state.

2008-02-21  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/fsolve.cc (fsolve_user_jacobian):
	Check dimensions of user-supplied Jacobian matrix.
	(fsolve_user_function): Check for non-square systems.

2008-02-12  David Bateman  <dbateman@free.fr?

	* graphics.h.in: Implement the cdatamapping property in patch,
	surface and image objects.
	* graphics.cc: ditto.

2008-02-12  John W. Eaton  <jwe@octave.org>

	* pt-loop.cc (tree_simple_for_command::eval): Compute range
	element with multiplication.

2008-02-08  John W. Eaton  <jwe@octave.org>

	* ov-struct.cc (octave_struct::subsref): Allow Cell::index to resize.

2008-02-07  David Bateman  <dbateman@free.fr>

	* ov-range.h (octave_range::sort): New functions.

2008-01-30  Thomas Weber  <thomas.weber.mail@gmail.com>

	* variables.cc (Fclear): Doc fix.

2008-01-30  Thomas Weber  <thomas.weber.mail@gmail.com>

	* pager.cc (Fmore): Doc fix.

2008-01-28  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (BEGIN_CHAR_CLASS_CONVERSION): Handle width properly.
	(OCTAVE_SCAN) [__GNUG__ && ! CXX_ISO_COMPLIANT_LIBRARY]:
	Delete special case.

2008-01-28  David Bateman  <dbateman@free.fr>

	* ov-mapper.cc (SPARSE_MAPPER_LOOP_2): Use data method instead of
	elem in the case where F(0) is non-zero.

	* DLD-FUNCTIONS/sort.cc (ascending_compare, descending_compare):
	Always instantiate the specialized double versions of these
	functions so that the NaN values are correctly sorted in the
	Sparse<double> sort.

2008-01-24  Pascal Dupuis  <Pascal.Dupuis@worldonline.be>

	* mxarray.h.in: Include <cstring>.

2008-01-14  John W. Eaton  <jwe@octave.org>

	* load-path.cc (load_path::do_initialize): Start with sys_path empty.
	(maybe_add_path_elts): Omit path_sep_str if path is empty.

2008-01-10  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/fsolve.cc (Ffsolve): Doc fix.
	(hybrd_info_to_fsolve_info): Swap return values for -1 and -2 inputs.

	* mex.cc (calc_single_subscript_internal): New static function.
	(mxArray_octave_value::calc_single_subscript): Use it.
	(mxArray_matlab::calc_single_subscript): Use it.

2008-01-07  John W. Eaton  <jwe@octave.org>

	* src/pt-except.cc (tree_try_catch_command::eval):
	Set Vdebug_on_error and Vdebug_on_warning to false while executing
	try block.

	* error.cc (Vdebug_on_error, Vdebug_on_warning): No longer static.
	* error.h: Provide decls.

2008-01-04  John Swensen  <jpswensen@comcast.net>

	* debug.cc (bp_table::do_remove_all_breakpoints_in_file):
	Avoid calling erase on invalid bp_map iterators.
	(bp_table::do_remove_breakpoint): Only try to delete breakpoints
	if some exist.  Avoid calling erase on invalid bp_map iterators.
	(parse_dbfunction_params): Return early if ARGS is empty.
	New arg, WHO.  Change all uses.
	Accept but do nothing with struct args.

2007-12-21  John W. Eaton  <jwe@octave.org>

	Version 3.0.0 released.

	* version.h (OCTAVE_VERSION): Now 3.0.0.
	(OCTAVE_API_VERSION): Now api-v32.
	(OCTAVE_RELEASE_DATE): Now 2007-12-21.

2007-12-19  Thomas Kasper  <ThomasKasper@gmx.net>

	* OPERATORS/op-scm-cs.cc (DEFBINOP (pow)): Extract complex value
	from second arg.

2007-12-12  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/sparse.cc (Fsparse): Check for scalar arguments
	for 2 argument version.

2007-12-12  John W. Eaton  <jwe@octave.org>

	* graphics.h.in (class axes) Add the layer property.
	* graphics.cc (class axes) Ditto.

	* graphics.cc (gh_manager::get_handle): Use ceil instead of trunc.

2007-12-11  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.19+.

2007-12-11  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.19.
	(OCTAVE_API_VERSION): Now api-v31.
	(OCTAVE_RELEASE_DATE): Now 2007-12-11.

	* graphics.cc (make_graphics_object):
	If successful, call __request_drawnow__.

	* input.cc (Vgud_mode): New static variable.
	(F__gud_mode__): New function.
	(get_user_input): If debug and Vgud_mode, print location info in
	format for Emacs GUD mode.

2007-12-11  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-bm-sbm.cc, OPERATORS/op-b-sbm.cc, 
	OPERATORS/op-cm-scm.cc, OPERATORS/op-cm-sm.cc, 
	OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc, 
	OPERATORS/op-m-scm.cc, OPERATORS/op-m-sm.cc, 
	OPERATORS/op-s-scm.cc, OPERATORS/op-s-sm.cc: Privilege 
	conversion to dense matrices for compatibility.

	* DLD-FUNCTIONS/sparse.cc (FSparse): Remove the mutate flag, as
	default bahavior is now to keep matrix sparse always.
	
	* graphics.cc (axes::properties::properties):
	Initialize xcolor, ycolor, and zcolor to (0, 0, 0).

	* graphics.h.in (gh_manager::next_handle): Now double.
	* graphics.cc (gh_manager::get_handle, gh_manager::gh_manager):
	Set fractional part of next_handle to a random value.

2007-12-10  John W. Eaton  <jwe@octave.org>

	* ov-cell.cc (octave_cell::all_strings): Handle empty elements.
	Handle N-d cell arrays.

	* DLD-FUNCTIONS/fsolve.cc (Ffsolve):
	For compatibility, return [x, fval, info] instead of [x, info, msg].
 	Move tests here from test/test_nonlin.m.

	* OPERATORS/op-cm-s.cc: Define function for el_mul with
	DEFNDBINOP_OP, not DEFBINOP_OP.

	* OPERATORS/op-s-cm.cc: Define functions for el_and and el_or
	operators with DEFNDBINOP_FN.

	* oct-hist.cc (default_history_file): Use file_ops::concat.
	* load-path.cc (dir_info::initialize, dir_info::get_file_list,
	load_path::do_find_fcn, load_path::do_find_file, genpath,
	execute_pkg_add_or_del, load_path::do_find_first_of,
	load_path::do_find_all_first_of): Likewise.

	* help.cc (Flookfor): Avoid doubling directory separator.
	* dirfns.cc (Fmkdir): Likewise.

	* pt-mat.cc (tree_matrix::rvalue): Produce sq_string if any
	strings are sq_string objects.

2007-12-10  David Bateman  <dbateman@free.fr>

	* graphics.h.in (data_property::data): Declare as NDArray instead
	of Matrix.  Change all uses.

2007-12-10  Shai Ayal  <shaiay@users.sourceforge.net>

	* graphics.h.in (class figure) Add the color property.
	* graphics.cc (class figure) Ditto.

2007-12-07  David Bateman  <dbateman@free.fr>

	* data.cc (Fnorm): Don't return a scalar stored as a sparse
	matrix. Convert it to a scalar.

	* graphics.cc (check_limit_val): Delete.
	(check_limit_vals): Simplify and no longer use check_limit_val.

2007-12-05  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.18+.

2007-12-05  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.18.
	(OCTAVE_API_VERSION): Now api-v30.
	(OCTAVE_RELEASE_DATE): Now 2007-12-05.

2007-12-04  John W. Eaton  <jwe@octave.org>

	* Makefile.in (INCLUDES): Add builtins.h to the list.

	* src/oct-hist.cc (default_history_file): Use += instead of
	push_back to append character to std::string object.

	* Makefile.in (LIBDLFCN): Delete all uses.

	* toplev.cc (octave_config_info): Remove LIBDLFCN and
	DLFCN_INCFLAGS from the list.
	* oct-conf.h.in (OCTAVE_CONF_DLFCN_INCFLAGS, OCTAVE_CONF_LIBDLFCN):
	Delete. 

	* error.cc (Ferror): Handle error id.

	* load-save.cc (Fsave, Fload): Doc fixes.
	From Marco Caliari <caliari@sci.univr.it>.

2007-12-04  Shai Ayal  <shaiay@users.sourceforge.net>

	* graphics.h.in (base_properties::get_type
        base_properties::get___modified__,
	base_properties::get___myhandle__): New functions.

2007-12-04  Christoph Mayer  <Christoph.Mayer@dlr.de>.

	* toplev.h (clean_up_and_exit, recover_from_exception,
	do_octave_atexit, global_command, curr_parent_function):
	Tag with OCTINTERP_API. 

2007-12-03  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/luinc.cc: Make tests conditional on HAVE_UMFPACK.
	* DLD-FUNCTIONS/spqr.cc: Make tests conditional on HAVE_CXSPARSE.

	* DLD-FUNCTIONS/regexp.cc: Use "%!testif" blocks for conditional
	tests on PCRE.

	* graphics.cc (class axes): Add color and activepositionproperty
	properties to axis objects.
	* graphics.h.in (class axes): ditto.

	* DLD-FUNCTIONS/regexp.cc: Also include sys/types.h for regexp.

2007-11-30  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/sort.cc (operator < (const Complex&, const Complex&),
	operator > (const Complex&, const Complex&)):
	Pass args by const reference, not value.

	* src/data.cc, src/matherr.c, src/pr-output.cc, src/sysdep.cc,
	src/DLD-FUNCTIONS/__dsearchn__.cc, src/DLD-FUNCTIONS/minmax.cc,
	src/DLD-FUNCTIONS/qz.cc, src/DLD-FUNCTIONS/sort.cc,
	src/DLD-FUNCTIONS/tsearch.cc: Include lo-math.h instead of cmath
	or math.h.

2007-11-30  Moritz Borgmann  <octave@moriborg.de>

	* ls-mat5.h (mat5_data_type): Delete trailing comma in enum decl.
	* oct-stream.cc (octave_base_stream::do_printf): Use
	OCTAVE_EMPTY_CPP_ARG to avoid annoying Sun compiler warning.
	* OPERATORS/op-sbm-sbm.cc (DEFDBLCONVFN): Delete useless macro
	invocation.

	* DLD-FUNCTIONS/typecast.cc (typecast): No longer static.

2007-11-30  John W. Eaton  <jwe@octave.org>

	* graphics.cc (updating_axis_limits): New static variable.
	(check_limit_val, check_limit_vals, get_axis_limits): New functions.
	(axes::update_axis_limits): Make it work.
	* graphics.h.in (base_properties::get_children): New function.
	(base_properties::get_xdata, base_properties::get_ydata,
	base_properties::get_zdata, base_properties::get_ldata,
	base_properties::get_udata, base_properties::get_xldata,
	base_properties::get_xudata, base_properties::get_cdata,
	base_properties::get_properties (void) const):
	New virtual functions.
	(graphics_object::get_xdata, graphics_object::get_ydata,
	graphics_object::get_zdata, graphics_object::get_ldata,
	graphics_object::get_udata, graphics_object::get_xldata,
	graphics_object::get_xudata, graphics_object::get_cdata,
	graphics_object::get_properties (void) const,
	root_figure::get_properties (void) const,
	figure::get_properties (void) const,
	axes::get_properties (void) const,
	line::get_properties (void) const,
	text::get_properties (void) const,
	image::get_properties (void) const,
	patch::get_properties (void) const,
	surface::get_properties (void) const)): New functions.
	(radio_property::radio_property (const radio_values&)):
	Provide	default value for argument. 
	(radio_property::radio_property (const radio_values&, const
	std::string&)): Delete.
	(axes::xlimmode, axes::ylimmode, axes::zlimmode, axes::climmode,
	axes::xscale, axes::yscale, axes::zscale): Declare as
	radio_property instead of octave_value values.  Adjust all uses.

2007-11-29  John W. Eaton  <jwe@octave.org>

	* pr-output.cc (octave_print_internal_template (std::ostream&,
	const octave_int<T>&, bool)): Rename from octave_print_internal.
	(PRINT_INT_SCALAR_INTERNAL): New macro.  Use it to define
	non-template functions for printing scalar octave_int values.
	(octave_print_internal_template (std::ostream&, const intNDArray<T>&,
	bool, int)): Rename from octave_print_internal.
	(PRINT_INT_ARRAY_INTERNAL): New macro.  Use it to define
	non-template functions for printing scalar octave_int values.
	* pr-output.h: Declare non-template functions for printing
	octave_int scalar and array values.
	Delete declarations of template funtions for printing octave_int
	scalar and array values.

2007-11-28  John W. Eaton  <jwe@octave.org>

	* graphics.cc (base_properties::update_axis_limits,
	axes::update_axis_limits): New functions.
	* graphics.h.in (class data_property): New class.
	(graphics_object::update_axis_limits): New function.
	(base_graphics_object::update_axis_limits): New virtual function.
	(base_properties::update_axis_limits, axes::update_axis_limits):
	Provide decls.
	(class line, class image, class patch, class surface): Use it
	instead of octave_value for data properties.  Tag data properties
	with "l" modifier.
	(class axes): Tag scale properties with "l" modifier.
	* genprops.awk: Handle "l" modifier.

	* mkbuiltins: Emit #include "builtins.h" for the builtins.cc file.
	From Christoph Mayer <Christoph.Mayer@dlr.de>.

	* TEMPLATE-INST/Array-tc.cc (resize_fill_value<octave_value>):
	Delete.

	* Cell.cc (Cell::Cell (const dim_vector&, const string_vector&, bool)):
	Initialize undefined values to resize_fill_value ().

2007-11-27  John W. Eaton  <jwe@octave.org>

	* TEMPLATE-INST/Array-tc.cc (resize_fill_value<octave_value>):
	Tag inline.  From Moritz Borgmann <octave@moriborg.de>.

	* pt-bp.cc (tree_breakpoint::visit_decl_command): Also check line
	number of cmd.
	* pt-decl.cc (tree_global_command::eval, tree_static_command::eval):
	Insert MAYBE_DO_BREAKPOINT here.

	* error.cc (Fwarning): If setting state "all" to "error", leave
	Octave:matlab-incompatible and Octave:single-quote-string warning
	states unchanged.
	(warning_enabled): Allow individual warning states to override
	"warning error all".

	* octave.cc (execute_eval_option_code, execute_command_line_file):
	Handle interrupts.
	* toplev.cc (recover_from_exception): Now extern.
	* toplev.h (recover_from_exception): Provide decl.

	* pt-idx.cc (tree_index_expression::lvalue): Treat object == []
	the same as undefined.

2007-11-26  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (DO_DOUBLE_CONV): Always use long.

	* oct-stream.cc (do_write): Call float_value and double_value on
	octave_int<T> objects instead of relying on conversion operators.

	* ls-mat5.cc (read_mat5_binary_element, OCTAVE_MAT5_INTEGER_READ): 
	Call double_value on octave_int<T> objects
	instead of relying on conversion operator.
	(read_mat5_binary_file_header): 
	Call char_value on octave_int<T> objects
	instead of relying on conversion operator.
	(read_mat5_binary_element): 
	Call bool_value on octave_int<T> objects
	instead of relying on conversion operator.

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::double_value, 
	OCTAVE_VALUE_INT_MATRIX_T::scalar_value,
	OCTAVE_VALUE_INT_MATRIX_T::matrix_value,
	OCTAVE_VALUE_INT_MATRIX_T::complex_matrix_value,
	OCTAVE_VALUE_INT_MATRIX_T::array_value,
	OCTAVE_VALUE_INT_MATRIX_T::complex_array_value,
	OCTAVE_VALUE_INT_SCALAR_T::double_value, 
	OCTAVE_VALUE_INT_SCALAR_T::scalar_value,
	OCTAVE_VALUE_INT_SCALAR_T::matrix_value,
	OCTAVE_VALUE_INT_SCALAR_T::complex_matrix_value,
	OCTAVE_VALUE_INT_SCALAR_T::array_value,
	OCTAVE_VALUE_INT_SCALAR_T::complex_array_value,
	Call double_value on octave_int<T> objects
	instead of relying on conversion operator.
	(OCTAVE_VALUE_INT_MATRIX_T::bool_array_value,
	OCTAVE_VALUE_INT_SCALAR_T::bool_array_value):
	Call bool_value on octave_int<T> objects
	instead of relying on conversion operator.
	(OCTAVE_VALUE_INT_MATRIX_T::char_array_value,
	OCTAVE_VALUE_INT_SCALAR_T::char_array_value):
	Call char_value on octave_int<T> objects
	instead of relying on conversion operator.

2007-11-26  David Bateman  <dbateman@free.fr>

	* Sparse-op-defs.h (SPARSE_BASE_REDUCTION_OP): Check that the fill
	value is not zero before creating the matrices.

	* graphics.cc (class axes): Add the {x|y|z}color color property.
	* graphics.h.in (class axes): ditto.

	* ov-base.cc (Vsparse_auto_mutate, Fsparse_auto_mutate): New
	internal variable and built-in function to set it.
	* ov-base.h (extern bool Vsparse_auto_mutate): Export internal
	variable to other functions.
	* ov-re-sparse.cc (octave_sparse_matrix::try_narrowing_conversion
	(void)), ov-cx-sparse.cc 
	(octave_sparse_complex_matrix::try_narrowing_conversion (void)), 
	ov-bool-sparse.cc
	(octave_sparse_bool_matrix::try_narrowing_conversion (void)):
	Use Vsparse_auto_mutate flag to determine whether to convert
	sparse matrices to full matrices if that saves space.

	* DLD-FUNCTIONS/minmax.cc (MINMAX_DOUBLE_BODY): New version of
	MINMAX_BODY macro without the initialization.
	(MINMAX_INT_BODY): Macro for min/max for the integer types
	(MINMAX_BODY): New macro that calls the appropriate instantiation
	of the other two macros.

	* graphics.cc (class axes): Add __colorbar__ property.
	* graphics.h.in (class axes): ditto.

	* data.cc (Fnorm): Document the "inf" string argument for matrice
	and vectors and the "fro" argument for vectors.

	* graphics.h.in (class figure): Add __enhanced__ property to cache
	whether the terminal supports enhanced mode. Add interpreter
	property to all text classes, to determine the renderer for the
	text.
	* graphics.cc (class figure): ditto.

2007-11-26  Shai Ayal  <shaiay@users.sourceforge.net>

	* graphics.cc (string_properties): delete class 
	(property_name): rename class to caseless_str. 
	(radio_values::possible_vals): change type to caseless_str.

2007-11-26  Michael Goffioul <michael.goffioul@gmail.com>

	* builtins.h (install_builtins): Tag with OCTINTERP_API.
	* toplev.h (octave_interpreter_ready, octave_initialized): Likewise.

2007-11-14  John W. Eaton  <jwe@octave.org>

	* mex.cc (mex::foreign_memlist): New data member.
	(mex::mark_foreign, mex::unmark_foreign): New functions.
	(mex::free): Don't warn about pointers found in foreign_memlist.
	(maybe_mark_foreign): New function.
	(mxArray_octave_value::get_data, mxArray_octave_value::get_ir,
	mxArray_octave_value::get_jc):
	Call maybe_mark_foreign on returned pointer.

2007-11-14  David Bateman  <dbateman@free.fr>

	* mex.cc (mxArray_sparse::mxArray_sparse (const mxArray_sparse&)):
	Also ensure that pr and pi are correctly copied.

2007-11-14  John W. Eaton  <jwe@octave.org>

	* Makefile.in (@bsd_gcc_kluge_targets_frag@): Delete line for
	Makefrag.bsd substitution.

	* graphics.h.in (base_properties::tag): New property.
	(base_properties::get_tag, base_properties::set_tag): New functions.
	(root_figure::set, root_figure::get, figure::set, figure::get,
	axes::set, axes::get, line::set, line::get, text::set, text::get,
	patch::set, patch::get, surface::set, surface::get): Handle tag.
	
2007-11-14  Joseph P. Skudlarek  <Jskud@Jskud.com>

	* DLD-FUNCTIONS/regexp.cc: Undo previous change.

2007-11-14  John W. Eaton  <jwe@octave.org>

	* mex.cc (mex::mark, mex::unmark): Now public.
	(mex::persistent): Delete.
	(mexMakeArrayPersistent): Call maybe_unmark_array instead of
	mex::persistent.
	(mexMakeMemoryPersistent): Call maybe_unmark instead of
	mex::persistent.
	(maybe_unmark (void *)): New function.
	(mxSetDimensions, mxSetPr, mxSetPi, mxSetData, mxSetImagData,
	mxSetIr, mxSetJc): Use it.  From David Bateman.

2007-11-13  Joseph P. Skudlarek  <Jskud@Jskud.com>

	* DLD-FUNCTIONS/rand.cc (Frand): Update URL reference in doc string.

2007-11-12  David Bateman  <dbateman@free.fr>

	* graphics.h.in, graphics.cc (class text): Add the fontangle and
	fontweight properties. Add string_property class to handle the
	string radio values.

2007-11-12  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.17+.

2007-11-12  David Bateman  <dbateman@free.fr>

	* graphics.h.in, graphics.cc (class text): Add the fontname and
	fontsize properties. 

2007-11-10  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.17.
	(OCTAVE_API_VERSION): Now api-v29.
	(OCTAVE_RELEASE_DATE): Now 2007-11-10.

2007-11-09  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__gnuplot_raw__.l: Don't add atexit ("closeplot")
	to PKG_ADD file.

2007-11-09  David Bateman  <dbateman@free.fr>

	* graphics.cc, graphics.h.in (class patch): Add the field "keylabel".

	* data.cc (Fcputime) [__WIN32__]: Correct scaling of sys and usr times.

	* graphics.cc (is_handle): Handle must be a real scalar.

2007-11-09  Joseph P. Skudlarek  <Jskud@Jskud.com>

	* data.cc (Fislogical): Fix typo in documentation entry.

2007-11-08  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__gnuplot_raw__.l (F__gnuplot_save_data__):
	Note obsolescence in doc string.
	(WARN_OBSOLETE): New macro
	(F__gnuplot_save_data__, Fgnuplot_command_plot,
	Fgnuplot_command_replot, Fgnuplot_command_splot,
	Fgnuplot_command_using, Fgnuplot_command_with,
	Fgnuplot_command_axes, Fgnuplot_command_title,
	Fgnuplot_command_end, Fgnuplot_use_title_option,
	F__clear_plot_window__, Fcloseplot, Fpurge_tmp_files,
	F__gnuplot_raw__, F__gnuplot_send_inline_data__, F__gnuplot_set__,
	F__gnuplot_show__, F__gnuplot_plot__, F__gnuplot_splot__,
	F__gnuplot_replot__): Use WARN_OBSOLETE.

2007-11-07  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/regexp.cc: Handle HAVE_PCRE_PCRE_H.  Check
	HAVE_PCRE_H instead of HAVE_PCRE to decide whether to include pcre.h.

	* DLD-FUNCTIONS/__gnuplot_raw__.l (Fgnuplot_command_plot,
	Fgnuplot_command_replot, Fgnuplot_command_splot,
	Fgnuplot_command_using, Fgnuplot_command_with,
	Fgnuplot_command_axes, Fgnuplot_command_title,
	Fgnuplot_command_end, Fgnuplot_use_title_option,
	F__clear_plot_window__, Fcloseplot, Fpurge_tmp_files,
	F__gnuplot_raw__, F__gnuplot_send_inline_data__, F__gnuplot_set__,
	F__gnuplot_show__, F__gnuplot_plot__, F__gnuplot_splot__,
	F__gnuplot_replot__): Note obsolescence in doc string.

2007-11-06  Kai Habel  <kai.habel@gmx.de>

	* graphics.h.in (class surface::properties): New properties, 
	cdata, facecolor, facealpha, edgecolor, linestyle,
	linewidth, marker, markeredgecolor, markerfacecolor, markersize.
	* graphics.cc (surface::properties::properties,
	surface::properties::set, surface::properties::get,
	surface::properties::factory_defaults): Handle new properities.

2007-11-06  David Bateman  <dbateman@free.fr>

	* data.cc (DATA_REDUCTION): Handle the 'native' and 'double'
	arguments of the Fsum function.
	* OPERATORS/op-bm-bm.cc (matrix_to_bool_matrix,
	scalar_to_bool_matrix): New type conversion functions.
	(install_bm_bm_ops): Install new type conversions functions.

2007-11-06  Michael Goffioul <michael.goffioul@gmail.com>

	* toplev.cc (Fsystem) [__WIN32__ && ! __CYGWIN__]:
	Quote the complete command.

2007-11-06  John W. Eaton  <jwe@octave.org>

	* data.cc (Fnorm): New tests.

	* defun-int.h (DEFINE_FUNX_INSTALLER_FUN3): Don't install function
	if check_version produces an error.

2007-11-05  John W. Eaton  <jwe@octave.org>

	* pt-idx.cc (tree_index_expression::lvalue): Try to do a better
	job of computing the number of elements in lvalue expressions when
	the last indexing element is ".".

2007-11-02  John W. Eaton  <jwe@octave.org>

	* file-io.cc (fopen_mode_to_ios_mode): Use std::ios::app instead
	of std::ios::ate.

2007-11-02  Olli Saarela  <Olli.Saarela@kcl.fi>

	* input.cc, pr-output.cc, bitfcns.cc, DLD-FUNCTIONS/time.cc:
        Fix broken @examples in help texts.

2007-10-31  John W. Eaton  <jwe@octave.org>

	* data.cc (Fnorm): Avoid warning about p_val possibly being used
	uninitialized.

	* version.h (OCTAVE_VERSION): Now 2.9.16+.

2007-10-31  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.16.
	(OCTAVE_API_VERSION): Now api-v28.
	(OCTAVE_RELEASE_DATE): Now 2007-10-31.

2007-10-31  Muthiah Annamalai  <muthuspost@gmail.com>

	* pt-assign.h (tree_simple_assignment::op_type,
	tree_multi_assignment::op_type): New functions.
	* pt-unop.h (tree_unary_expression::op_type): New function.

2007-10-31  John W. Eaton  <jwe@octave.org>

	* graphics.cc (line::properties::get): Fix property name
	(markerface -> markerfacecolor).

	* Makefile.in (INCLUDES): Add debug.h to the list.

2007-10-30  John Swensen  <jpswensen@comcast.net>

	* debug.h: New file.
	* debug.cc (parse_dbfunction_params, do_find_bkpt_list,
	intmap_to_ov): New functions.
	(Fdbstop, Fdbclear): Use parse_dbfunction_params.
	Improve compatibility.
	(Fdbstatus): Improve compatibility.

	* help.cc (do_which): No longer static.
	* help.h: Provide decl.

2007-10-30  David Bateman  <dbateman@free.fr>

	* symtab.cc: Doc fixes for small book format.

2007-10-30  John W. Eaton  <jwe@octave.org>

	* file-io.cc (fopen_mode_to_ios_mode): Handle 'W' as 'w' and 'R'
	as 'r', but warn about them.

2007-10-29  Thomas Treichl <Thomas.Treichl@gmx.net>

	* data.cc: Include sytime.h, sys/types.h, and sys/resource.h.

2007-10-25  John W. Eaton  <jwe@octave.org>

	* graphics.cc (figure::properties::set_currentaxes): 
	Allow currentfigure to be NaN.

2007-10-25  Michael Goffioul <michael.goffioul@gmail.com>

	* DLD-FUNCTIONS/__contourc__.cc: Use unsigned int instead of uint.
	(drawcn): Use 1 << k instead of pow (2, k).

2007-10-25  John W. Eaton  <jwe@octave.org>

	* symtab.h (symbol_record::TYPE): Delete trailing comma in enum decl.

	* ov-base.h (DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Use
	OCTAVE_EMPTY_CPP_ARG to avoid annoying Sun compiler warning.

	* Makefile.in (graphics.h): Use $(AWK) instead of awk.

	* DLD-FUNCTIONS/time.cc (Ftime, Fmktime): Avoid unnecessary cast.

	* data.cc (Ftic, Ftoc): Call double_value on octave_time objects
	instead of relying on conversion operator.
	* ov.cc (octave_value::octave_value (octave_time)): Likewise.

	* variables.cc (symbol_out_of_date): Use explicit conversion to
	time_t instead of relying on conversion operator.
	* ov-fcn-handle.cc (octave_fcn_handle::subsref): Likewise.

	* data.cc (tic_toc_timestamp): Rename from __tic_toc_timestamp__.
	Change all uses.

2007-10-24  David Bateman  <dbateman@free.fr>

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::OCTAVE_VALUE_INT_MATRIX_T
	(const ArrayN<OCTAVE_INT_T>&)): New constructor.
	* ov.cc (octave_value::octave_value(const ArrayN<T>) with T being
	octave_int8, octave_uint8, octave_int16, octave_uint16,
	octave_int32, octave_uint32, octave_int64, octave_uint64): New
	constructors.
	* ov.h (octave_value::octave_value(const ArrayN<T>) with T being
	octave_int8, octave_uint8, octave_int16, octave_uint16,
	octave_int32, octave_uint32, octave_int64, octave_uint64):
	Declare them.
	* DLD-FUNCTIONS/sort.cc (template class octave_sort<T>,
	template class vec_index<T>, template class
	octave_sort<vec_index<T> *>,  with T being
	octave_int8, octave_uint8, octave_int16, octave_uint16,
	octave_int32, octave_uint32, octave_int64, octave_uint64): New
	instantiations of sort template classes.
	(Fsort): Use them.

2007-10-24  John W. Eaton  <jwe@octave.org>

	* graphics.cc (root_figure::properties::set_currentfigure):
	Allow currentfigure to be NaN.

	* pt-idx.cc (tree_index_expression::lvalue): Correctly compute
	number of elements in lvalue expression when last indexing
	element is ".".

2007-10-23  John W. Eaton  <jwe@octave.org>

	* graphics.cc (is_handle (const graphics_handle&)): New function.
	(gh_manager::do_free, reparent, base_properties::set_parent,
	properties::get_title, properties::get_xlabel,
	properties::get_ylabel, properties::get_zlabel,
	properties::remove_child, make_graphics_object, F__go_figure__,
	F__go_delete__, __go_axes_init__): Call OK on graphics handle
	object instead of relying on implicit conversion operator.
	* graphics.h.in (graphics_handle::operator double ()): Delete.
	(graphics_handle::operator bool ()): Delete.
	(gh_manager::do_handle_list, gh_manager::do_figure_handle_list,
	base_properties::adopt): Call VALUE on graphics handle object
	instead of relying on implicit conversion operator.

	* ov-base.h (DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Call
	DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA2 with "( )" as arg list
	instead of "()".

	* mxarray.h.in (mxClassID): Delete trailing comma in enum decl.

	* symtab.h (symbol_table::symbol_table): Reduce default table size
	to 64.

2007-10-22  Kim Hansen  <kimhanse@gmail.com>

	* unwind-prot.cc: Include <cstring>.

2007-10-22  David Bateman  <dbateman@free.fr>

        * data.cc (Ftic, Ftoc, Fcputime): New builtin versions of the
        benchmarking functions for speed.
	* oct-map.cc (Octave_map::squeeze, Octave_map::permute): New methods.
	(Octave_map::index (const octave_value_list&, bool)): Add resize_ok
	argument, define as const and use const_iterator internally.
	(Octave_map::index (idx_vector&, ...), Octave_map::index (Array 
	<idx_vector>&, ...)): New forms of the index function.
	* oct-map.h (squeeze, permute, indx (const octave_value_list&, bool),
	index (idx_vector&, ...), index (Array <idx_vector>&, ...)): Add
	or update declaration.
	* ov-struct.cc (octave_struct::do_index_op (const octave_value_list&,
	bool)): New method.
	* ov-struct.h (do_index_op (const octave_value_list&, bool)): Declare
	it.
	(squeeze (void), permute (const Arra<int>&, bool): New methods.

2007-10-19  Kai Habel  <kai.habel@gmx.de>

	* DLD-FUNCTIONS/__contourc__.cc (add_point): Rename from
	cl_add_point.  Change all uses.
	(end_contour): Rename from cl_end_contour.  Change all uses.
	(start_contour): Rename from cl_start_contour.  Change all uses.
	(drawcn): Rename from cl_drawcn.  New algorithm for locating contours.
	(mark_facets): New function.
	(cntr): Rename from cl_cntr.  Change all uses.  New algorithm for
	locating contours.

2007-10-19  John W. Eaton  <jwe@octave.org>

	* ov-cell.cc (octave_cell::subsasgn): If RHS is cs-list, don't
	fail if shape of LHS is different.
	* ov-struct.cc (octave_struct::subsasgn): Likewise.

2007-10-19  Olli Saarela  <Olli.Saarela@kcl.fi>

	* help.cc (Flookfor): Call print_usage instead of usage.
	* DLD-FUNCTIONS/cellfun.cc (Fmat2cell): Likewise.

2007-10-17  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/spchol.cc (Fsymbfact): Delete special code for METIS.

2007-10-17  Gabriele Pannocchia  <g.pannocchia@ing.unipi.it>

	* DLD-FUNCTIONS/__qp__.cc (qp): Fix check for Wact(j).

2007-10-15  Søren Hauberg  <hauberg@gmail.com>

	* error.cc (Ferror): Make text fit on pages when using smallbook.
	* load-save.cc (Fsave_header_format_string): Ditto.
        * ov-struct.cc (Fcell2struct): Ditto.
        * DLD-FUNCTIONS/besselj.cc (Fairy): Ditto.
        * DLD-FUNCTIONS/urlwrite.cc (Furlwrite, Furlread): Ditto.

2007-10-15  David Bateman  <dbateman@free.fr>

	* graphics.cc (axes::properties::get): Fix typo.

2007-10-13  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.15+.

2007-10-13  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.15.
	(OCTAVE_API_VERSION): Now api-v27.
	(OCTAVE_RELEASE_DATE): Now 2007-10-13.

2007-10-13  David Bateman  <dbateman@free.fr>

	* graphics.h.in (class patch): Add the faces and vertices properties.
	* graphics.cc (patch::properties::properties): Initialize faces
	and vertices.
	(patch::properties::get): Also fetch faces and vertices.
	(patch::properties::factory_defaults): Set faces and vertices.

2007-10-12  John W. Eaton  <jwe@octave.org>

	* Change copyright notices in all files that are part of Octave to
	GPLv3 or any later version.

2007-10-11  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/urlwrite.cc (urlget): Disable use of EPSV mode.

2007-10-11  Brian Gough  <bjg@network-theory.co.uk>

	* DLD-FUNCTIONS/fftn.cc, DLD-FUNCTIONS/regexp.cc, dirfns.cc,
	input.cc: Spelling fixes.

2007-10-10  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-sbm-sbm.cc (bool_matrix_to_double_matrix):
	New conversion function.
	(install_sbm_sbm_ops): Install it.

	* ov-re-mat.cc (double): Handle sparse as a special case.

2007-10-10  Olli Saarela  <Olli.Saarela@kcl.fi>

	* data.cc, debug.cc, dirfns.cc, error.cc, file-io.cc, help.cc,
	load-save.cc, ov-fcn-inline.cc, parse.y, pr-output.cc, symtab.cc,
	syscalls.cc, toplev.cc, variables.cc, DLD-FUNCTIONS/bsxfun.cc,
	DLD-FUNCTIONS/cellfun.cc, DLD-FUNCTIONS/fft.cc,
	DLD-FUNCTIONS/fft2.cc, DLD-FUNCTIONS/fftw.cc,
	DLD-FUNCTIONS/gcd.cc, DLD-FUNCTIONS/lsode.cc,
	DLD-FUNCTIONS/luinc.cc, DLD-FUNCTIONS/matrix_type.cc,
	DLD-FUNCTIONS/rand.cc, DLD-FUNCTIONS/regexp.cc,
	DLD-FUNCTIONS/sparse.cc, DLD-FUNCTIONS/spchol.cc,
	DLD-FUNCTIONS/splu.cc, DLD-FUNCTIONS/spparms.cc: Spelling fixes.

2007-10-10  Kim Hansen  <kimhanse@gmail.com>

	* DLD-FUNCTIONS/lpsolve.cc: Delete.
	* Makefile.in (DLD_XSRC): Remove it from the list.

        * data.cc (Fsqueeze): Document 2d behaviour.
        * ov-range.h (octave_range::squeeze): New function.

2007-10-09  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/urlwrite.cc (urlget_cleanup): New function.
	(urlget): Protect call to curl_easy_perform with
	BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE and
	END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE.

2007-10-09  David Bateman  <dbateman@free.fr>

	* input.cc (accept_line): Drop this function and remove automatic
	insertion of closing quotes as the transpose operator confuses it.
	(initialize_command_input): Remove accept_line from here as well.
	
2007-10-09  John W. Eaton  <jwe@octave.org>

	* ov-mapper.cc (octave_mapper::apply): If possible, use
	d_d_map_fcn to handle complex values which have imag(z) == 0.

	* DLD-FUNCTIONS/urlwrite.cc (Furlwrite, Furlread) [! HAVE_CURL]:
	Throw error instead of returning empty string hiding error message
	in third return value.
	(progress_func): Delete.
	(Furlread): Don't set progress callback for curl.
	(write_data, form_query_string, urlget): Now static.

2007-10-08  David Bateman  <dbateman@free.fr>

	*  input.cc (quoting_filename): Function to add a leading quote to
	a string if needed.
	(accept_line): Function to check if a string needs a closing quote
	before calling the rl_newline function.
	(initialize_command_input): Initialize completer_quote_characters,
	filename_quote_characters, quoting_function,
	user_accept_line_function.

	* data.cc (template <class T> static make_diag (...)): New
	template class version of make_diag. Make other make_diag
	functions depend on it.
	( static octave_value make_diag (const octave_value&, 
	octave_idx_type)): Treat all possible internal Octave types.

2007-10-08  John W. Eaton  <jwe@octave.org>

	* load-save.cc 	(save_vars, dump_octave_core):
	Don't pass INFNAN_WARNED to do_save.
	(do_save): Delete unused arg, INFNAN_WARNED.
	Don't pass INFNAN_WARNED to save_ascii_data.
	* ls-oct-ascii.cc (save_ascii_data_for_plotting):
	Don't pass INFNAN_WARNED to save_ascii.
	(save_ascii_data): Delete unused arg, INFNAN_WARNED.

	* ov.h (octave_value::save_ascii): Delete unused arg, INFNAN_WARNED.
	* ov-base-int.cc (octave_base_int_matrix<T>::save_ascii,
	octave_base_int_scalar<T>::save_ascii): Likewise.
	* ov-base-sparse.cc (octave_base_sparse<T>::save_ascii): Likewise.
	* ov-base.cc (octave_base_value::save_ascii): Likewise.
	* ov-bool-mat.cc (octave_bool_matrix::save_ascii): Likewise.
	* ov-bool.cc (octave_bool::save_ascii): Likewise.
	* ov-cell.cc (octave_cell::save_ascii): Likewise.
	* ov-fcn-handle.cc (octave_fcn_handle::save_ascii): Likewise.
	* ov-fcn-inline.cc (octave_fcn_inline::save_ascii): Likewise.
	* ov-list.cc (octave_list::save_ascii): Likewise.
	* ov-struct.cc (octave_struct::save_ascii): Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::save_ascii): Likewise.
	* ov-range.cc (octave_range::save_ascii): Likewise.

	* ov-scalar.cc (octave_scalar::save_ascii): Remove warning about
	reloading inf/nan values.  Delete unused arg, INFNAN_WARNED.
	* ov-complex.cc (octave_complex::save_ascii): Likewise.
	* ov-re-mat.cc (octave_matrix::save_ascii): Likewise.
	* ov-cx-mat.cc (octave_complex_matrix::save_ascii): Likewise.

	* ov-fcn-inline.cc (Finline): Use DEFUNX instead of DEFUN.

2007-10-08  Michael Goffioul <michael.goffioul@gmail.com>

	* sighandlers.h (can_interrupt): Tag with OCTINERP_API.
	* sysdep.h (raw_mode, octave_popen, octave_pclose,
	same_file_internal): Likewise.

2007-10-06  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_base_stream::do_scanf):
	Always allow MVAL to re resized if NR > 0.
	(FINISH_CHARACTER_CONVERSION): Likewise.

	* mappers.cc (install_mapper_functions): Undo previous change.
	Fix doc string for lgamma.
	(xzlgamma): Delete.

2007-10-05  John W. Eaton  <jwe@octave.org>

	* graphics.h.in (axes::properties): New property, colororder.
	* graphics.cc (default_colororder): New function.
	(axes::properties::properties, axes::properties::get,
	axes::properties::set_defaults,
	axes::properties::factory_defaults, ): Handle colororder.

	* mappers.cc (xzlgamma): New static function.
	(install_mapper_functions): Pass xzlgamma for c_c_map for lgamma
	mapper.  Pass 1 for can_ret_cmplx_for_real and set hi to
	octave_Inf.

2007-10-04  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/symrcm.cc: Move static functions to top of file to
	avoid forward decls.
	(Q_enq): Delete unused arg QH.  Change all uses.
	(Q_deq): Delete unused arg QT.  Change all uses.
	(find_starting_node): Delete unused local variable J.
	(H_heapify_min, H_insert, find_starting_node, Fsymrcm):
	Move local variable decls to point of first use.

	* OPERATORS/op-streamoff.cc (STREAMOFF_COMP_OP):
	Avoid control-reaches-end-of-non-void-function warning.

	* pt-const.cc (tree_constant::dup): Avoid unused parameter warning.

	* pr-output.cc (set_real_format, set_real_matrix_format,
	set_complex_format, set_complex_matrix_format):
	Delete unused arg, SIGN.  Change uses.

	* oct-map.cc (Octave_map::Octave_map): Avoid shadow warning.

	* load-save.cc (write_header): Use reinterpret_cast to avoid
	old-style cast warning.

	* data.cc (do_permute): Delete unused arg, FNAME.  Change all uses.

	* sysdep.cc (w32_set_octave_home, w32_set_quiet_shutdown,
	MINGW_signal_cleanup):
	Only define if defined (__WIN32__) && !	defined (_POSIX_VERSION).

2007-10-04  Jason Riedy  <jason@acm.org>

        * ls-mat5.cc (read_mat5_binary_data): Map miUTF16 to miUINT16,
        miUTF32 to miUINT32.  The matfile format currently states that
        wide UTF formats are in the same byte order as the integers.
        (read_mat5_binary_element): Replace all UTF16 and UTF32
        characters with the high bit set (value >127) by '?' and warn
        that we've done so.

2007-10-04  Michael Goffioul <michael.goffioul@gmail.com>

	* sysdep.cc (w32_set_octave_home): Base OCTAVE_HOME location on
	octinterp, not the main exe.

2007-10-03  John W. Eaton  <jwe@octave.org>

	* data.cc (Fnorm): New function.
	(F__vnorm__): Delete.

2007-10-03  Michael Goffioul <michael.goffioul@gmail.com>

	* DLD-FUNCTIONS/typecast.cc: Include <algorithm>.

2007-10-03  John W. Eaton  <jwe@octave.org>

	* oct-map.cc (Octave_map::Octave_map (const dim_vector&, 
	const string_vector&)): Delete.
	(Octave_map::Octave_map (const dim_vector&, const Cell&)):
	New function.
	* ov-struct.cc (Fstruct): Allow creation of empty struct arrays
	with field names.

2007-10-01  Shai Ayal  <shaiay@users.sourceforge.net>

	* graphics.cc ((color_property::color_property (const
	octave_value& val)): Undo change from 2007-09-26
	(patch::properties::properties): use the "a" modifier to
	face_color & edge_color properties
	(patch::properties::set): Undo change from 2007-09-26
	* graphics.h.in	(color_property::color_property
	(const octave_value& val)): Undo change from 2007-09-26

2007-10-01  Michael Goffioul <michael.goffioul@gmail.com>

	* octave.cc (octave_main): Add "--line-editing" option to force
	readline line editing.

2007-09-28  David Bateman  <dbateman@free.fr>

	* ov-range.h (int8_array_value, int16_array_value, int32_array_value,
	int64_array_value, uint8_array_value, uint16_array_value, 
	int32_array_value, uint64_array_value): New methods

2007-09-28  Kai Habel  <kai.habel@gmx.de>

	* graphics.h.in (color_property::colormap_property (const Matrix&)):
	Use floating point math in calculation of colormap.

2007-09-26  David Bateman  <dbateman@free.fr>

	* graphics.cc (color_values::str2rgb): accept upper, lower and
	mixed-case versions of the string representing the color. Allow
	black defined as "k" and white as "w".
	(color_property::color_property (const octave_value& val, 
	const radio_values &v)): Modify the constructor to also take a
	radio_values argument. Use it.
	(patch::properties::set): Change set_facecolor calls to initialize
	the color_property argument with the available radio_values.
	* graphics.h.in (color_property::color_property 
	(const octave_value& val, const radio_values &v)): Also pass a 
	radio_values argument.

	* ov-range.h (sparse_matrix_value, sparse_complex_matrix_value):
	New methods.

	* mk-pkg-add: Simplfy the autoload commands.
	* parse.y (Fautoload): Allow bare filename if file is in the same
	directory as the script from where the autoload command is run.

2007-09-25  Matthias Drochner  <m.drochner@fz-juelich.de>

	* syscalls.cc (Fpopen2): Doc fix.
	Use "sort -r" instead of "sort -nr" in test.

2007-09-18  John W. Eaton  <jwe@octave.org>

	* input.cc (input_event_hook, Finput_event_hook): Call
	command_editor::add_event_hook and
	command_editor::remove_event_hook intstead of
	command_editor::set_event_hook and
	command_editor::restore_event_hook.

2007-09-17  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.14+.

2007-09-17  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.14.
	(OCTAVE_API_VERSION): Now api-v26.
	(OCTAVE_RELEASE_DATE): Now 2007-09-17.

	* Makefile.in (DISTFILES): Add genprops.awk to the list.

	* ov-typeinfo.h (cat_op_fcn): Third arg in function pointer
	typedef is now Array<octave_idx_type> instead of Array<int>.

	* file-io.cc (do_stream_open): Use binary mode by default.

2007-09-14  Shai Ayal  <shaiay@users.sourceforge.net>

	* genprop.awk: Handle "a" modifier.

2007-09-14  Kai Habel  <kai.habel@gmx.de>

	* graphics.h.in (radio_values::contains): New function.
	(radio_values::validate): Use it.
	* graphics.cc (color_property::operator =): Call it instead of
	validate here.

2007-09-13  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__glpk__.cc (glpk): Pass LPX_FX, not LB_DB, to
	lpx_set_col_bnds when lb[i] == ub[i].
	From: Zhi Wang <zcwang@umich.edu>.

	* graphics.h.in (colormap_property::colormap_property):
	Use jet colormap as default.

2007-09-12  John W. Eaton  <jwe@octave.org>

	* graphics.cc (text::properties::properties): Default color is
	black, not white.
	* graphics.h (text::properties::color): Declare as color_property,
	not octave_value.

	* graphics.h.in (root_figure::defaults, figure::defaults,
	axes::defaults, line::defaults, text::defaults, image::defaults,
	patch::defaults, surface::defaults): New functions.
	* gripes.cc (gripe_not_implemented): New function.
	* gripes.h: Provide decl.

2007-09-10  John W. Eaton  <jwe@octave.org>

	* genprops.awk: Add missing newline character at end of file.
	From Alexander Klimov <alserkli@inbox.ru>.

2007-09-10  David Bateman  <dbateman@free.fr>

	* data.cc (do_cat): Avoid invalid indexing into ra_idx vector.

2007-09-06  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/__delaunay__.cc, DLD-FUNCRIONS/__voronoi__.cc,
	DLD-FUNCTIONS/convhulln.cc: Avoid variables in global scope

2007-09-06  David Bateman  <dbateman@free.fr>

	* Makefile.in (stamp-prereq): Add graphics.h to the dependency list.

2007-08-31  John W. Eaton  <jwe@octave.org>

	* Makefile.in (INCLUDES): Remove graphics.h from the list.
	(DISTFILES): Include graphics.h.in in the list.
	(genprops.awk): New file.
	(graphics.h): New rule.
	(distclean): Remove graphics.h.
	* graphics.h.in: New file, from graphics.h.
	(graphics_handle): Now a class instead of typedef.  Adapt all uses.
	(OCTAVE_GRAPHICS_PROPERTY_INTERNAL, OCTAVE_GRAPHICS_PROPERTY,
	OCTAVE_GRAPHICS_MUTABLE_PROPERTY): Delete macros.
	(class root_figure, class figure, class axes, class line, class
	text, class image, class patch, class surface): Use genprops.awk
	to generate property declarations and set/get functions.
	* graphics.h: Delete.
	* graphics.cc (nan_to_empty, empty_to_nan): Delete.
	(root_figure::properties::set, figure::properties::set,
	axes::properties::set, line::properties::set,
	text::properties::set, image::properties::set,
	patch::properties::set, surface::properties::set): Call
	type-specific set functions to set properties.
	(root_figure::properties::set_currentfigure,
	figure::properties::set_currentaxes, figure::properties::set_visible,
	axes::properties::get_title, axes::properties::get_xlabel,
	axes::properties::get_ylabel,  axes::properties::get_zlabel,
	axes::properties::set_title, axes::properties::set_xlabel,
	axes::properties::set_ylabel,  axes::properties::set_zlabel):
	Define custom versions.

2007-09-06  David Bateman  <dbateman@free.fr>

        * DLD-FUNCTIONS/bsxfun.cc: New function.
        * DLD-FUNCTIONS/typecast.cc: New function.
        * Makefile.in (DLD_XSRC): Add bsxfun.cc and typecast.cc.
        * ov.cc (do_cat_op): Modify use of Array<int> to 
        Array<octave_idx_type> and adjust where necessary.
        * ov.h (do_cat_op): ditto.
        * data.cc (do_cat): ditto.
        * pt-mat.cc (tree_matrix::rvalue): ditto.

2007-09-05  Michael Goffioul <michael.goffioul@gmail.com>

	* oct-stream.cc (octave_base_stream::do_printf): Ignore precision
	portion of format string if printing Inf, NaN, or NA values.

2007-09-05  David Bateman  <dbateman@free.fr>

        * DLD-FUNCTIONS/sort.cc (mx_sort_sparse, mx_sort_sparse_indexed):
        New template classes for sparse sort functions.
        (Fsort): Use them.
        * ov.h (octave_value (const Sparse<double>&, const MatrixType&),
        octave_value (const Sparse<Complex>&, const MatrixType&)): New
        constructors.
        * ov.cc (octave_value::octave_value (const Sparse<double>&, 
        const MatrixType&), octave_value::octave_value (const 
        Sparse<Complex>&, const MatrixType&)): Define them.
        * ov-re-sparse.h (octave_sparse_matrix (const MSparse<double>&,
        const MatrixType&), octave_sparse_matrix (const Sparse<double>&),
        octave_sparse_matrix (const Sparse<double>&, const MatrixType&)):
        New constructors.
        * ov-cx-sparse.h (octave_sparse_complex_matrix (const MSparse<double>&,
        const MatrixType&), octave_sparse_complex_matrix (const 
        Sparse<double>&), octave_sparse_complex_matrix (const
        Sparse<double>&, const MatrixType&)): ditto.

2007-09-04  Gabriele Pannocchia  <g.pannocchia@ing.unipi.it>

	* DLD-FUNCTIONS/__qp__.cc (qp): Use Wact(j) == i - n_eq when
	checking for blocking constraint.  Don't resize lambda_tmp.  Only
	compute Y = Aact.pseudo_inverse () if it is needed.

2007-08-31  Michael Goffioul <michael.goffioul@gmail.com>

	* ls-mat-ascii.cc (get_lines_and_columns): Check beg variable for
	NPOS to avoid segmentation fault. 

	* load-path.cc (load_path::do_find_file): Do not assume paths
	use forward slashes.

2007-08-30  John W. Eaton  <jwe@octave.org>

	* sysdep.cc (Fpause): Doc fix.

2007-08-30  Gabriele Pannocchia  <g.pannocchia@ing.unipi.it>

	* DLD-FUNCTIONS/__qp__.cc (qp): Resize Wact to n_act-neq, not n_act.

2007-08-29  John W. Eaton  <jwe@octave.org>

	* graphics.cc (class root_figure::properties):
	Rename from root_figure::root_figure_properties.
	(class figure::properties): Rename from figure::figure_properties.
	(class axes::properties): Rename from axes::axes_properties.
	(class line::properties): Rename from line::line_properties.
	(class text::properties): Rename from text::text_properties.
	(class image::properties): Rename from image::image_properties.
	(class patch::properties): Rename from patch::patch_properties.
	(class surface::properties): Rename from surface::surface_properties.

	* base-list.h (octave_base_list::remove): Implement our own
	remove_if function here.

2007-08-28  John W. Eaton  <jwe@octave.org>

	* graphics.h (base_properties): Move class definition before
	definition of base_graphics_object class.  Provide forward
	declaration of base_graphics_object prior to definition of
	base_properties.
 	(base_graphics_object::get_properties): New virtual function.
	(graphics_object::get_properties, root_figure::get_properties,
	figure::get_properties, axes::get_properties,
	line::get_properties, text::get_properties, image::get_properties,
	patch::get_properties, surface::get_properties): New functions.
	(root_figure::properties, figure::properties, axes::properties,
	line::properties, text::properties, image::properties,
	patch::properties, surface::properties): Data member now private.

2007-08-27  John W. Eaton  <jwe@octave.org>

	* load-path.cc (load_path::do_find_file): Also files with non
	rooted relative names.
	* load-save.cc (find_file_to_load): Likewise.  Also handle
	appending .mat to files with relative names.

	* graphics.cc (base_properties::mark_modified,
	base_properties::override_defaults,
	base_properties::delete_children, figure::get_default,
	axes::get_default): Move definitions here, from graphics.h.
	* graphics.h (class gh_manager): Move decl to end of file.

	* Cell.h (Cell::Cell (const octave_value_list&)): Create row
	vector instead of column vector.

	* pt-idx.cc (tree_index_expression::lvalue): Handle [x.a] =
	... style assignments.
	* ov-struct.cc (octave_struct::subsasgn): Handle case of RHS as
	comma-separated list.

	* ov-cell.cc (gripe_failed_assignment): New function.
	(octave_cell::subsasgn): Call gripe_failed_assignment if assign
	methods fail.

2007-08-24  David Bateman  <dbateman@free.fr>

	* symtab.cc (void symbol_table::clear (void)): If the record in
	the symbol table to clear is a user function that is a sub
	function with a static parent or if the parent is the current
	parent function, don't delete the record.
	(void symbol_table::clear_functions (void)): ditto.
	(void symbol_table::clear (const std::string&)): ditto.
	(void symbol_table::clear_function (const std::string&)): ditto.

	* graphics.h (class text): Add property color.
	* graphics.cc (text::text_properties::text_properties) ditto.
	(text::text_properties::set): ditto.
	(text::text_properties::get): ditto.
	(text::text_properties::factory_defaults): ditto.

2007-08-24  John W. Eaton  <jwe@octave.org>

	* mappers.cc (dummyp): New function.
	(install_mapper_functions): Use it to handle character data in
	finite, isinf, isna, and isnan functions.

	* load-path.cc (load_path::do_remove): Call remove_hook function
	before removing directory from list.

2007-08-24  David Bateman  <dbateman@free.fr>

        * ov-bool-sparse.cc (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Class
        is now logical.
        * ov-re-sparse.cc, ov-cx-sparse.cc 
        (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Class is now double.
        * ov-mapper.cc (octave_mapper::apply): Use is_sparse_type method
        rather than comparing class name.
        * ls-mat5.cc (save_mat5_element_length, save_mat5_binary_element):
        ditto.
        * pt-mat.cc (tree_matrix:rvalue): sparse matrices are now of class
        "double" or "logical", create new single type concat clause for
        them.
        * mex.cc (get_class_id): No longer need to special case sparse
        matrices.

        * DLD-FUNCTIONS/__delaunayn__.cc, DLD-FUNCTIONS/convhulln.cc, 
        DLD-FUNCTIONS/tsearch.cc, DLD-FUNCTIONS/__voronoi__.cc: New
        functions ported from octave-forge.
        * DLD-FUCTIONS/__dsearchn__.cc: New file.
        * DLD-FUNCTIONS/__voronoi__.cc: Return point at infinity and
        include it in the polygrons of the Voronoi diagram for
        compatibility.
        * Makefile.in: Add specific build targets for __delanayn__.cc,
        convhulln.cc and __voronoi__.cc to link to Qhull.
        (DLD_SRC): Add new functions.
        (OCTAVE_LIBS): Add QHULL_LIBS

2007-08-22  David Bateman  <dbateman@free.fr>

	* variables.cc (Fmunlock): Call munlock and not mlock.
	* symtab.cc (symbol_record::mark_as_formal_parameter): Typo. 

2007-08-10  John W. Eaton  <jwe@octave.org>

	* pt-idx.cc (tree_index_expression::get_struct_index): Improve
	error message.
	* ov-struct.cc (Fstruct, Fcell2struct): Trap invalid field names here.

2007-08-10  Peter A. Gustafson  <petegus@umich.edu>

	* graphics.h, graphics.cc (axes::axes_properties): New properties,
	xaxislocation and yaxislocation.

2007-08-10  Kai Habel  <kai.habel@gmx.de>

	* graphics.cc, graphics.h (patch): New class.
	(axes::axes_properties): New properties, clim and climmode.
	(surface::surface_properties::surface_properties): Handle patch.
	(F__go_patch__): New function.

2007-07-30  John W. Eaton  <jwe@octave.org>

	* mex.cc (mxArray_number::mxArray_number (int, const char **)):
	First arg is now mwSize.
	(max_str_len): Return mwSize value, not int.
	* mxarray.h.in (mxArray::mxArray (int, const char **)):
	First arg is now mwSize.
	(mxArray::mxArray (mxClassID, mwSize, mwSize, int, mxComplexity)):
	Third arg is now mwSize.
	(mxArray::get_string (char *, int)): Second arg is now mwSize.

2007-07-26  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__glpk__.cc: Include glpk/glpk.h if
	HAVE_GLPK_GLPK_H is defined.

2007-07-26  David Bateman  <dbateman@free.fr>

	* pr-output.cc (Frats): Return character array with same number of
	rows as original value.

2007-07-26  John W. Eaton  <jwe@octave.org>

	* pt-bp.h (MAYBE_DO_BREAKPOINT): Rename cur_fcn to xfcn.

	* version.h (OCTAVE_VERSION): Now 2.9.13+.

2007-07-25  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.13
	(OCTAVE_API_VERSION): Now api-v25.
	(OCTAVE_RELEASE_DATE): Now 2007-07-25.

	* pt-bp.h (MAYBE_DO_BREAKPOINT): Rename fcn to curr_fcn.

2007-07-25  David Bateman  <dbateman@free.fr>

	* Makefile.in: 	Adjust DISTFILES to allow out of tree "make dist" 
	to work.

2007-07-24  Shai Ayal  <shaiay@users.sourceforge.net>

	* graphics.cc (color_property::operator = (const octave_value&)):
	New method.
	* graphics.h: Provide decl.

2007-07-24  Rafael Laboissiere  <rafael@debian.org>

	* oct-conf.h.in (OCTAVE_CONF_RUNTEST): Delete definition.
	* toplevel.cc (Foctave_config_info): Remove RUNTEST from struct.

2007-07-23  David Bateman  <dbateman@free.fr>

	* pr-output.cc (rat_format, rat_string_len): Global variable
	controlling behavior of rational approximation. Use throughout.
	(class pr_rational_float): New class for rational approximation of
	floats, specifically with the << operator defined.
	(std::ostream& operator << (std::ostream&, const
	pr_rational_float&)): Operator to print rational approximations of
	double values.
	(std::string rational_approx (double, int)): Function to convert a
	double value to a string of maximum length giving the rational
	approximation.
	(pr_any_float): Include the output of rational approximations.
	(Fformat): Add the "rat" format as an option.
	(Frats): New function.

2007-07-23  Aquil H. Abdullah  <aquil.abdullah@gmail.com>

	* mex.cc (mxCreateStructArray): Declare second arg as const.
	* mexproto.h (mxCreateStructArray): Ditto.

2007-07-20  David Bateman  <dbateman@free.fr>

        * zfstream.cc (BUFSIZE): Increase default buffer size to 256kB
        (gzfilebuf::underflow): Stash the last 16 characters read, so as
        to avoid calling pbackfail as much as possible.

2007-07-18  David Bateman  <dbateman@free.fr>

         * zfstream.cc (int_type gzfilebuf::pbackfail (int_type)): New
         method to putback a character when the putback position in the
         internal buffer doesn't exist.
         * zfstream.h (int_type pbackfail (int_type)): Declaration it.

2007-07-14  Michael Goffioul  <michael.goffioul@swing.be>

	* src/ov-bool-sparse.cc (octave_sparse_bool_matrix:load_hdf5):
	Use OCTAVE_LOCAL_BUFFER for temporary boolean value.
	
2007-06-27  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/sparse.cc (Fspdiag): Ensure spdiag(zeros(1,0)) returns
	0x0 matrix. Doc update.
	* data.cc (Fdiag): Doc update.

2007-06-28  John W. Eaton  <jwe@octave.org>

	* ov-cell.cc (octave_cell::subsasgn): Given x = {}, convert to
	struct for assignments like x(1).f = val;

	* oct-stream.cc (octave_scan_1): New function
	(octave_scan): Use it.  Handle fmt.width.

	* graphics.h (axes::axes_properties::visible): New data member.
	* graphics.cc (axes::axes_properties::axes_properties, 
	axes::axes_properties::set, axes::axes_properties::get, 
	axes::axes_properties::factory_defaults): Handle visible property.

2007-06-27  Kai Habel  <kai.habel@gmx.de>

	* graphics.h (color_values::color_values): Arg is now std:string
	instead of char.  Call str2rgb, not c2rgb.
	* graphics.h, graphics.cc: (color_values::str2rgb): Rename from
	c2rgb.  Handle long color names, not just single char abbreviations.

2007-06-27  David Bateman  <dbateman@free.fr>
	
	* src/load-save.cc (Fsave): Ensure header is written for non
	existent file with "-append".
	* src/ls-hdf5.h: First steps towards having append work for hdf5.
	
2007-06-26  John W. Eaton  <jwe@octave.org>

	* src/load-save.cc (Fsave): Open files correctly for -append.
	Don't write file headers if appending.  Error for -append -hdf5.

2007-06-25  Olaf Till  <i7tiol@t-online.de>

	* oct-stream.h (octave_stream_list::list): Use std::map.
	(octave_stream_list::curr_len): Delete data member.
	(octave_stream_list::octave_stream_list): Fix initializations.
 
	* oct-stream.cc (octave_steam_list::do_insert,
	octave_steam_list::do_lookup, octave_steam_list::do_remove,
	octave_steam_list::do_clear, octave_steam_list::do_list_open_files, 
	octave_steam_list::do_open_file_numbers,
	octave_steam_list::do_get_file_number):
 	Use new octave_stream_list::list type.
	(octave_stream_list::do_insert): Insert octave_stream with key
	corresponding to file-descriptor.
	(octave_stream_list::do_insert, octave_steam_list::insert):
	Remove const qualifier of argument.

2007-06-18  Søren Hauberg  <hauberg@gmail.com>

        * DLD-FUNCTIONS/__lin_interpn__.cc: Replace octave_NaN with octave_NA.

2007-06-15  Shai Ayal  <shaiay@users.sourceforge.net>

	* graphics.h (OCTAVE_GRAPHICS_PROPERTY_INTERNAL,
	OCTAVE_GRAPHICS_PROPERTY, OCTAVE_GRAPHICS_MUTABLE_PROPERTY):
	New macros. Use them to declare individual properties and define
	accessor methods for each property in the property classes.

2007-06-15  Kai Habel  <kai.habel@gmx.de>

	* graphics.cc (Fget, Fset): Handle vectors of handles.

2007-06-14  John W. Eaton  <jwe@octave.org>

	* sysdep.cc (octave_popen, octave_pclose): New functions.
	* sysdep.h: Provide decls.

	* oct-procbuf.cc (procbuf::open): Use octave_popen.
	(procbuf::close): Use octave_pclose.
	* oct-prcstrm.cc (octave_oprocstream::octave_oprocstream, 
	octave_iprocstream::ictave_oprocstream): Likewise.

	* graphics.h (text::text_properties::rotation): New data member.
	* graphics.cc (text::text_properties::text_properties, 
	text::text_properties::set, text::text_properties::get, 
	text::text_properties::factory_defaults): Handle rotation property.

2007-06-14  Kai Habel <kai.habel@gmx.de>

	* graphics.cc (color_values::c2rgb): Also accept 'k' for black.

2007-06-14  David Bateman  <dbateman@free.fr>

	* ov-ch-mat.h (idx_vector index_vector (void) const): Remove
	definition.
	* ov-ch-mat.cc (idx_vector index_vector (void) const): Move it
	here. Special case ":" case for compatibility.

2007-06-13  John W. Eaton  <jwe@octave.org>

	* ov-re-mat.cc (octave_matrix::load_ascii):
	Do a better job of handling read errors and empty matrices.
	* ov-cx-mat.cc (octave_complex_matrix::load_ascii): Likewise.
	* ov-bool-mat.cc (octave_bool_matrix::load_ascii): Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::load_ascii): Likewise.

2007-06-13  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/minmax.cc (MINMAX_BODY): Don't treat as single
	argument if arg2 is empty and nargin=2.

2007-06-13  Shai Ayal  <shaiay@users.sourceforge.net>

	* graphics.h, graphics.cc: Move class declarations to graphics.h.
	Move larger functions outside of class declarations in graphics.cc.

2007-06-12  Benjamin Lindner  <lindnerben@gmx.net>

	* DLD-FUNCTIONS/cellfun.cc: Use fullfile to generate filenames
	instead of assuming / will work as directory separator.

2007-06-12  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/interpn.cc: Remove it.
	* DLD-FUNCTIONS/__lin_interpn__.cc: Move it. This is now a support
	function of interpn.m.
	* Makefile.in (DLD_XSRC): Remove interpn.cc and add __lin_interpn__.cc.

2007-06-07  David Bateman  <dbateman@free.fr>

	* ov-fcn-handles.cc (octave_fcn_handle::save_hdf5): More care that
	all open HDF5 descriptors are closed.
	(octave_fcn_handle::load_hdf5): Ditto.

2007-06-06  Benjamin Lindner  <lindnerben@gmx.net>

	* utils.cc [__MINGW32__]: Don't define HAVE_C99_VSNPRINTF.

2007-06-06  Michael Goffioul  <michael.goffioul@swing.be>

	* defaults.h.in, ls-hdf5.h, ov-complex.h, ov-cx-mat.h, ov-intx.h,
	sysdep.h: Sprinkle with OCTINTERP_API as needed.

2007-06-05  John W. Eaton  <jwe@octave.org>

	* help.h (raw_help): Tag with OCTINTERP_API.

	* Makefile.in (INCLUDES): Remove mxarray.h from the list so that
	it is not distributed.
	(EXTRAS): Add mxarray.h to the list so that it is installed.

	* sysdep.cc (same_file_internal) [OCTAVE_USE_WINDOWS_API]:
	Avoid leaking file handles.

2007-05-08 Michael Weitzel <michael.weitzel@uni-siegen.de>

	* DLD-FUNCTIONS/symrcm.cc: Fix for queuing error that might cause
	an infinite loop.

2007-06-04  John W. Eaton  <jwe@octave.org>

	* data.cc (Fislogical): Rename from Fisbool.
	Make isbool an alias for islogical.

2007-06-03  David Bateman  <dbateman@free.fr>

	* Makefile.in (DISTFILES): Add mxarray.h.in
	(install-inc): Modify target so that mxarray.h is installed
	correctly.
	(distclean): Remove mxarray.h on distclean.
	* mex.cc: Use mwSize for dimensions and mwIndex for indexing
	throughout, with the exception of struct key indexes.
	* mexproto.h: ditto.
	* mxarray.h: remove.
	* mxarray.h.in: Copy here and define mwSize, mwIndex, and use
	throughout. 
	* ov-bool-mat.cc (octave_bool_matrix::as_mxArray): Use mwSize and
	mwIndex.
	* ov-bool-sparse (octave_sparse_bool_matrix::as_mxArray): ditto.
	* ov-cell.cc (octave_cell:as_mxArray): ditto.
	* ov-ch-mat.cc (octave_char_matrix:as_mxArray): ditto.
	* ov-cx-mat.cc (octave_complex_matrix::as_mxArray): ditto.
	* ov-cx-sparse.cc (octave_sparse_complex_matrix::as_mxArray): ditto.
	* ov-int.h (as_mxArray): ditto.
	* ov-range.cc (octave_range:as_mxArray): ditto.
	* ov-re-mat.cc (octave_matrix:as_mxArray): ditto.
	* ov-re-sparse.cc (octave_sparse_matrix::as_mxArray): ditto.
	* ov-struct.cc (octave_struct::as_mxArray): ditto.

2007-06-02  David Bateman  <dbateman@free.fr>

	* graphics.cc (color_property class): g++ doesn't like anonymous
	enums. Give type to color_type enum.

2007-05-31  Shai Ayal  <shaiay@users.sourceforge.net>

	* graphics.cc (radio_values, radio_property, color_values):
	New classes.
	(color_property class): Handle both color and radio values.

2007-05-31  John W. Eaton  <jwe@octave.org>

	* toplev.cc (main_loop): Improve bad_alloc error message.

	* octave.cc (execute_command_line_file, execute_eval_option_code):
	Likewise.

2007-05-31  Michael Goffioul  <michael.goffioul@swing.be>

	* toplev.cc (octave_atexit_functions):
	Now std::list instead of std::stack.
	(do_octave_atexit): Adapte to octave_atexit_functions as list.
	(Fatexit): Allow second arg of false to remove element from list.

	* DLD-FUNCTIONS/symrcm.cc: Use ! instead of "not".

	* sysdep.cc (same_file_internal) [OCTAVE_USE_WINDOWS_API]:
	Use INVALID_HANDLE_VALUE, not INVALID_FILE_HANDLE.

2007-05-28  G. D. McBain  <geordie_mcbain@yahoo.com.au>

	* ov-list.cc (append): Doc fix.

2007-05-28  John W. Eaton  <jwe@octave.org>

	* pt-loop.cc (DO_ND_LOOP): Avoid parser problem with obsolete g++.

2007-05-23  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.12+.

2007-05-23  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.12.
	(OCTAVE_RELEASE_DATE): Now 2007-05-23.

	* parse.y (make_anon_fcn_handle): Don't build assignment expression.
	* ov-fcn-handle.cc (octave_fcn_handle::print_raw):
	Don't split assignment expression.
	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Special case for inline function body evaluation.

2007-05-22  John W. Eaton  <jwe@octave.org>

	* pt-fcn-handle.cc (tree_anon_fcn_handle::rvalue):
	Set current function as parent of anonymous function handle.

	* Makefile.in (uninstall): Also remove
	$(DESTDIR)$(octincludedir)/octave, $(DESTDIR)$(octincludedir),
	$(DESTDIR)$(octlibdir), and $(DESTDIR)$(octfiledir).

2007-05-22  Thomas Weber  <thomas.weber.mail@gmail.com>

	* debug.cc, error.cc, load-save.cc, oct-hist.cc, sighandlers.cc,
	symtab.cc: Fix typos.

2007-05-22  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.11+.

2007-05-22  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.11.
	(OCTAVE_API_VERSION): Now api-v24.
	(OCTAVE_RELEASE_DATE): Now 2007-05-22.

2007-05-21  David Bateman  <dbateman@free.fr>

	* debug.cc (Fdbstop): handle integer, vector and multiple line
	arguments.
	(Fdbclar): ditto. Eliminate extraneous debugging messages.

2007-05-21  Søren Hauberg  <hauberg@gmail.com>

        * load-path.cc (Fpath, Frehash): Replace "LOADPATH" with "load
	path" in doc strings.

        * parse.y (Feval): Add example.

2007-05-21  David Bateman  <dbateman@free.fr>

	* error.cc (rethrow_error): Use NULL name so that "error:" is not
	added to the message
	(Frethrow): Correctly treat empty stack.

2007-05-21  John W. Eaton  <jwe@octave.org>

	* oct-map.h (Octave_map::numel): Return number of array elements,
	not number of map elements.
	(Octave_map::nfields): Rename from length.
	(Octave_map::empty): Delete.
	Change all uses of empty to check nfields () == 0 instead.

2007-05-21  Søren Hauberg  <soren@hauberg.org>

	* help.cc (Fautoload): Doc fix.
	* variables.cc (Fiscommand): Doc fix.

2007-05-19  David Bateman  <dbatemna@free.fr>

	* ov-fcn-inline.cc (Fvectorize): Doc fix.

2007-05-16  Søren Hauberg  <soren@hauberg.org>

	* ov.cc (Fsubsref, Fsubsasgn): Doc fix.

2007-05-16  John W. Eaton  <jwe@octave.org>

	* load-path.h (load_path::sys_path): New static data member.
	(load_path::system_path): New static function.
	(load_path::do_system_path): New function.
	* load-path.cc (Vsystem_path): Delete.
	(load_path::do_initialize): Use sys_path, not Vsystem_path.
	(Fpathdef): Call load_path::system_path instead of using Vsystem_path.
	* ls-mat5.cc (read_mat5_binary_element): Likewise.
	* ov-fcn-handle.cc (octave_fcn_handle::set_fcn): Likewise.

2007-05-16  David Bateman  <dbateman@free.fr>

	* load_pathc.cc (std::string octave_system_path (void)): New
        function.
        * load-path.h (std::string octave_system_path (void)): Declare it.

        * load-save.cc (static load_save_format get_file_format
        (std::istream&, const std::string&)): Add filename argument, and
        pass it to read_mat5_binary_header. Use new format throughout file.
        (Fload): Don't allow gzip of matlab v7 files as the files
        themselves include compression.

        * ls-mat5.cc (arrayclsstype:MAT_FILE_WORKSPACE_CLASS): New class
        type.
        (read_mat5_binary_element): Workspaces, don't have dimensions, so
        don't read them. Implement read of matlab objects, but only use
        them for inline functions. Implement reading of function and
        workspace classes.
        (read_mat5_binary_header): Add filename argument. Read sub-system
        specific data block given as an offset in bytes 117 to 124.
        (save_mat5_binary_element): Include saving of inline functions.

        * ls-mat5.h (read_mat5_binary_header): Include filename.

        * ov-fcn-handle.cc (octave_fcn_handle_save_ascii,
        octave_fcn_handle::load_ascii, octave_fcn_handle::save_binary, 
        octave_fcn_handle::load_binary, octave_fcn_handle::save_hdf5, 
        octave_fcn_handle::load_hdf5): Save and reload the local symbol
        table of the user function associated with anonymous function
        handles. Save and load the absolute path and the exec_prefix for
        normal function handles and use then to find equivalent functions
        between different installations of Octave. Attempt to maintain
        backward and forward compatibility.
        (Ffunctions): Additional outputs, including the workspace of
        anonymous functions, and more compatiable outputs.

        * ov-fcn-handle.h (user_function_value): Expose the user function
        value of a function handle.

        * ov-fcn-inline.cc (Octave_map octave_fcn_inline::map_value
        (void) const): Return a structure compatiable with matlab's class
        implementation of inline functions.

        * ov-fcn-inline.h (map_value): Declare it.

2007-05-14  Bob Weigel  <rweigel@gmu.edu>

	* DLD-FUNCTIONS/svd.cc: Doc fix.

2007-05-14  Thomas Weber  <thomas.weber.mail@gmail.com>

	* DLD-FUNCTIONS/fft.cc (do_fft): Handle empty matrices.  New tests.

2007-05-14  Søren Hauberg  <soren@hauberg.org>

	* toplev.cc (Fatexit): Simplify example in doc string.
	* help.cc (Flookfor): Doc fix.
	* DLD-FUNCTIONS/cellfun.cc (Fcellfun):
	Reformat to avoid long lines in doc string example.

2007-05-13  Søren Hauberg  <soren@hauberg.org>

	* toplev.cc (Fquit): Doc fix.
	* help.cc (Fhelp): Doc fix.
	* oct-hist.cc (Fsaving_history): Doc fix.

2007-05-11  John W. Eaton  <jwe@octave.org>

	* variables.cc (symbol_out_of_date):
	Always check for files that have gone missing.

2007-05-08 Michael Weitzel <michael.weitzel@uni-siegen.de>

	* DLD-FUNCTIONS/symrcm.cc: New function for Reverse Cuthill-McKee
	permutation.
	
2007-05-07  John W. Eaton  <jwe@octave.org>

	* oct-map.cc (Octave_map::resize): Handle case of no keys.
	(keys_ok): Rename from equiv_keys.  Return value is now status.
	Pass key names as string_vector reference arg.
	(Octave_map::assign (const octave_value_list&, const Octave_map&)):
	Call keys_ok, not equiv_keys.  Handle case of no keys.

2007-04-30  John W. Eaton  <jwe@octave.org>

	* Makefile.in (%.df : %.cc): Use mv instead of
	$(simple-move-if-change-rule).

2007-04-30  David Bateman  <dbateman@free.fr>
	
	* pt-loop.cc (DO_ND_LOOP): New args, CONV and ARG.
	Use octave_idx_type instead of int for loop counters.
	Remove redundant assignments to variable "quit" as it is
	always defined in quit_loop_now.
	Special case rows = 0 and 1 cases in loops over arrays.
	Include some of the code that was separate from the macro
	DO_ND_LOOP in the macro itself
	(tree_simple_for_command::eval): USE DO_ND_LOOP for all loops.
	(DO_LOOP): Delete.

2007-04-30  John W. Eaton  <jwe@octave.org>

	* mex.cc (mex::cleanup): Don't call unmark for elements of the set
	inside the loop.  From Laurent Mazet <laurent.mazet@motorola.com>.

2007-04-30  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-int-conv.cc: Define sq and dq string conversion
	operators.  Delete old char_matrix_str conversions.
	* OPERATORS/op-int-conv.cc (install_int_conv_ops): Install them.

2007-04-27  Benjamin Lindner  <lindnerb@users.sourceforge.net>.

	* octave.cc (execute_startup_files): Call same_file to check for
	already executed init files.

2007-04-27  John W. Eaton  <jwe@octave.org>

	* sysdep.cc (same_file_internal): New function.  POSIX code
	from same_file in utils.cc.  Windows code from
	Benjamin Lindner  <lindnerb@users.sourceforge.net>.
	Don't canonicalize file names.
	Also return false if stat calls fail.
	* sysdep.h: Provide decl.
	* utils.cc (same_file): Use same_file_internal.

2007-04-27  David Bateman  <dbateman@free.fr>

	* graphic.cc (get_property_form_handle, set_property_in_handle):
	New functions.
	* grahics.h: New file.
	* mex.cc (mexGet, mexSet): use the above to implement mexGet
	and mexSet.
	* Makefile.in (INCLUDES): Add graphics.h

2007-04-26  John W. Eaton  <jwe@octave.org>

	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Only deal with varargout if ret_list->takes_varargs () is true.

2007-04-26  Søren Hauberg  <soren@hauberg.org>

	* DLD-FUNCTIONS/urlwrite.cc: Doc fix.

2007-04-26  David Bateman  <dbateman@free.fr>

	* pt-loop.cc (tree_simple_for_command::eval (void)): Correct
	reshaping of dim_vector in for loop for multi-dimensional array.

2007-04-26  John W. Eaton  <jwe@octave.org>

	* load-save.cc (find_file_to_load): Only consider regular files.

2007-04-24  Shai Ayal  <shaiay@users.sourceforge.net>

	* graphics.cc (color_property): Eliminate alpha channel from RGB
	color spec.

2007-04-23  Shai Ayal  <shaiay@users.sourceforge.net>

	* src/graphics.cc (color_property::color_property):
	New arg A for alpha channel.  Set rgba instead of red, green, blue.
        (color_property::color_property (char)): New constructor.
        (color_propery::rgba): New data member.
	(color_property::red, color_property::green, color_property::blue):
	Delete.
        (color_property::validate): Use rgba.
        (color_property::c2rgba): New function.

2007-04-23  Søren Hauberg  <soren@hauberg.org>

	* data.cc (Fsize_equal): Allow more than two arguments.

2007-04-20  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__gnuplot_raw__.l (deftypefn): 
	(Vautomatic_replot): Delete static variable.
	(Fautomatic_replot): Delete function.

	* toplev.cc (Fcasesen): Delete obsolete function.

	* DLD-FUNCTIONS/__gnuplot_raw__.l (gnuplot::makeplot): Check
	whether caller is "splot", not "gsplot".

2007-04-19  John W. Eaton  <jwe@octave.org>

	* lex.l (is_keyword_token): Delete all_va_args_kw switch case.
	* octave.gperf: Remove all_va_args_kw from the list.

2007-04-19  Daniel J. Sebald  <daniel.sebald@ieee.org>

	* syscalls.cc: Fix popen2 test to stop trying after 100 times
	throught the loop.

2007-04-16  Geordie McBain  <geordie.mcbain@aeromech.usyd.edu.au>

	* ov-fcn-inline.cc (Fargnames): Doc fix.

2007-04-13  Geordie McBain  <geordie.mcbain@aeromech.usyd.edu.au>

	* DLD-FUNCTIONS/find.cc (Ffind): Doc fix.

2007-04-11  John W. Eaton  <jwe@octave.org>

	* Makefile.in (DOCSTRINGS): Don't echo commands.
	(doc-files): Use mv, not $(simple-move-if-change-rule).

	* data.cc (Fnot, Fuplus, Fuminus, Ftranspose, Fctranspose, Fplus,
	Fminus, Fmtimes, Fmrdivide, Fmpower, Fmldivide, Flt, Fle, Feq,
	Fge, Fgt, Fne, Ftimes, Frdivide, Fpower, Fldivide, Fand, For):
	New functions.

2007-04-09  John W. Eaton  <jwe@octave.org>

	* graphics.cc (line::line_properties::markeredgecolor,
	line::line_properties::markerfacecolor): New properties.

2007-04-06  John W. Eaton  <jwe@octave.org>

	* data.cc (F__vnorm__): New function.

	* pt-fcn-handle.cc (tree_anon_fcn_handle::param_list, 
	tree_anon_fcn_handle::cmd_list,	tree_anon_fcn_handle::ret_list,
	tree_anon_fcn_handle::sym_tab): Delete.  Remove all uses.
	(tree_anon_fcn_handle::fcn): New data member.
	(tree_anon_fcn_handle::tree_anon_fcn_handle): Initialize it.
	(tree_anon_fcn_handle::rvalue, tree_anon_fcn_handle::dup):
	Extract parameter list, return list, function body, and symbol
	table from fcn.
	(tree_anon_fcn_handle::parameter_list, tree_anon_fcn_handle::body):
	Forward request to fcn.

	* ov-usr-fcn.h (octave_user_function::local_sym_tab): Rename from
	sym_tab.  Change all uses.
	(octave_user_function::sym_tab): New function.

	* octave.cc (execute_command_line_file): 

2007-04-05  David Bateman <dbateman@free.fr>

	* DLD-FUNCTIONS/regexp.cc (Fregexprep): Correct iteration over 
	cell arrays so that the source and pattern are iterated seperately 
	in the same manner as matlab.

2007-04-05  Laurent Mazet <laurent.mazet@motorola.com>

	* mex.cc (mxArray_octave_value::get_string): Copy nel elements,
	not buflen elements.

2007-04-05  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (DO_DOUBLE_CONV): New macro.
	(do_printf): Use it.

2007-04-04  John W. Eaton  <jwe@octave.org>

	* input.cc (octave_yes_or_no): Force interactive_input to use readline.

	* octave.cc (execute_eval_option_code): Catch bad::alloc here.

2007-04-03  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/urlwrite.cc (Furlwrite, Furlread):
	Use && for logical, not &.

	* DLD-FUNCTIONS/qr.cc (Fqr): Clarify nargin check.

	* error.cc (Frethrow): Add braces to avoid ambiguous if/else.
	* oct-stream.cc (octave_scan<>): Likewise.
	* DLD-FUNCTIONS/colamd.cc (Fetree): Likewise.
	* DLD-FUNCTIONS/sort.cc (mx_sort, mx_sort_indexed): Likewise.

	* ov-fcn-handle.cc (make_fcn_handle): Pass ultimate parent
	function name to lookup_function.

2007-03-29  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/filter.cc (filter): Fix typo in doc string.
	From Utkarsh Upadhyay <musically.ut@gmail.com>.

2007-03-28  Rafael Laboissiere  <rafael@debian.org>

	* DLD-FUNCTIONS/__glpk__.cc: Fix #ifdef logic around GLPK_PRE_4_14.

2007-03-27  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.10+

2007-03-27  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.10.
	(OCTAVE_API_VERSION): Now api-v23.
	(OCTAVE_RELEASE_DATE): Now 2007-03-27.

	* version.h (OCTAVE_COPYRIGHT): Update for 2007.  Add "and others".
	(X_OCTAVE_WARRANTY_STATEMENT): Rename from OCTAVE_WARRANTY_STATEMENT.
	Accept arg.
	(OCTAVE_WARRANTY_STATEMENT): Define using X_OCTAVE_WARRANTY_STATEMENT.
	(OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY): Define using
	X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY.
	(X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY): Rename
	from OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY.
	Accept arg and pass to X_OCTAVE_WARRANTY_STATEMENT.
	(OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY): Pass empty
	arg to X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS.
	(OCTAVE_STARTUP_MESSAGE): Put info about news last.

2007-03-27  John W. Eaton  <jwe@octave.org>

	* Makefile.in (dist, conf-dist): Use ln, not $(LN_S).

2007-03-26  Juhani Saastamoinen  <juhani@cs.joensuu.fi>

	* file-io.cc (do_stream_open) [! HAVE_ZLIB]:
	Call fopen with mode, not tmode.

2007-03-26  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-str-str.cc (DEFCHARNDBINOP): New macro.  Use it to
	define functions for eq and ne ops.  Also define lt, le, ge, and
	gt ops.

2007-03-23  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/rand.cc: Make more statistical tests optional.

2007-03-23  John W. Eaton  <jwe@octave.org>

	* bitfcns.cc (Fbitshift): Error if third argument is not a scalar.

2007-03-23  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/rand.cc: Make statistical tests optional and 
	add tests for fixed sequences.

2007-03-22  John W. Eaton  <jwe@octave.org>

	* graphics.cc (base_graphics_object::mark_modified):
	New virtual function.
	(base_properties::__modified__): New data member.
	(base_properties::base_properties): Initialize it.
	(graphics_object::mark_modified, base_properties::mark_modified, 
	root_figure::mark_modified, figure::mark_modified,
	axes::mark_modified, line::mark_modified, text::mark_modified,
	image::mark_modified, surface::mark_modified,
	root_figure::root_figure_properties::mark_modified,
	figure::figure_properties::mark_modified,
	axes::axes_properties::mark_modified,
	line::line_properties::mark_modified,
	text::text_properties::mark_modified,
	image::image_properties::mark_modified,
	surface::surface_properties::mark_modified): New functions.
	(figure::figure_properties::set, figure::figure_properties::get,
	axes::axes_properties::set, axes::axes_properties::get,
	line::line_properties::set, line::line_properties::get,
	text::text_properties::set, text::text_properties::get,
	image::image_properties::set, image::image_properties::get,
	surface::surface_properties::set, surface::surface_properties::get):
	Handle __modified__ property.

	* parse.y (Fautoload): Use warning_with_id.

2007-03-21  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__qp__.cc (ABS): Delete.  Use std::abs instead.
	(null): Set elements of retval with magnitudes less than eps to 0.

	* error.cc (Fwarning): Allow setting options with struct.
	If setting options, return previous state.

	* graphics.cc (axes::axes_properties::set_defaults): Reverse sense
	of mode test for setting outerposition property.
	(figure::figure_properties::set): If setting visible property,
	make this figure the current figure.
	(gh_manager::figure_handle_list, gh_manager::do_figure_handle_list):
	New functions.
	(F__go_figure_handles__): New function.

	* sysdep.cc (Fpause): Also call drawnow if nargin == 0.
	(Fkbhit, Fsleep, Fusleep): Also call drawnow here.

2007-03-20  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/cellfun.cc (Fcellfun): Correct for shape of return
	matrix for the case of UniformOutput being true.

2007-03-20  John W. Eaton  <jwe@octave.org>

	* sysdep.cc (Fpause): Call drawnow.

2007-03-15  John W. Eaton  <jwe@octave.org>

	* variables.cc (F__lock_global__): Delete.

2007-03-14  John W. Eaton  <jwe@octave.org>

	* graphics.cc: New file.
	* Makefile.in (DIST_SRC): Add it to the list.

2007-03-13  John W. Eaton  <jwe@octave.org>

	* file-io.cc (do_stream_open): Use binary mode if 't' is not
	specified in mode, but don't add 'b' if it is already present.

2007-03-09  David Bateman  <dbateman@free.fr>

	* data.cc (do_cat):  Also treat case of all empty matrices.

2007-03-08  John W. Eaton  <jwe@octave.org>

	* mex.cc (mxArray_octave_value::set_dimensions,
	mxArray_octave_value::set_m, mxArray_octave_value::set_n, 
	mxArray_octave_value::set_class_name,
	mxArray_octave_value::set_ir, mxArray_octave_value::set_jc,
	mxArray_octave_value::remove_field,
	mxArray_octave_value::set_field_by_number):
	Don't panic; request mutation instead.
	(class mxArray_octave_value): 

	* mxarray.h (mxArray::set_m, mxArray::set_n,
	mxArray::set_dimensions): Wrap method call call with
	DO_VOID_MUTABLE_METHOD.

2007-03-08  David Bateman  <dbateman@free.fr>

	* data.cc (do_cat): Ignore leading empty matrices.

2007-03-07  Bob Weigel  <rweigel@gmu.edu>

	* urlwrite.cc (urlget): Allow URL redirects.

2007-03-05  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/md5sum.cc (Fmd5sum): Treat both files and strings.

2007-03-05  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Check GLPK_PRE_4_14, not
	GLPK_PRE_4_15.

2007-03-02  John W. Eaton  <jwe@octave.org>

	* parse.y (Fautoload): Undo previous change.
	Warn if FILE is not an absolute file name.

	* utils.cc (make_absolute): Make copy of arg before 

2007-03-01  John W. Eaton  <jwe@octave.org>

	* ov-base-mat.h	(octave_base_matrix::octave_base_matrix (const MT&), 
	(octave_base_matrix::octave_base_matrix (const MT&, const MatrixType&)):
	Use common definition with default argument value.
	* ov-base-scalar.h (octave_base_scalar<T>::typ): New data member.
	Initialize in constructors.
	(octave_base_scalar<T>::matrix_type): New funtions.

2007-03-01  David Bateman  <dbateman@free.fr>

        * DLD-FUNCTIONS/md5sum.cc: New file.
        * Makefile.in (DLD_XSRC): Add md5sum.cc

2007-03-01  Olli Saarela  <Olli.Saarela@kcl.fi>

	* input.cc (FPS1): Fix @seealso.

2007-03-01  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): Special case scalar
	types and always return "Full" matrix type.

2007-02-28  John W. Eaton  <jwe@octave.org>

	* input.cc (interactive_input): Also call flush_octave_stdout
	after calling drawnow.

2007-02-27  John W. Eaton  <jwe@octave.org>

	* Makefile.in (uninstall): Also remove octave-$(version)$(EXEEXT), 
	oct-gperf.h, and all .oct files.  Remove PKG_ADD.
	From Thomas Treichl <Thomas.Treichl@gmx.net>.

	* load-path.h, (load_path::initialize, load_path::do_initialize):
	New arg, set_initial_path.
	* load-path.cc (load_path::do_initialize): Don't add system
	directories to apth if set_initial_path is false.
	* octave.cc (set_initial_path): New static variable.
	(NO_INITIAL_PATH_OPTION): New define.
	(usage_string): Include --no-initial-path in message.
	(long_opts): Include no-initial-path/NO_INITIAL_PATH_OPTION here.
	(octave_main): Handle NO_INITIAL_PATH_OPTION.
	Pass set_initial_path to load_path::initialize.

	* parse.y (Fautoload): Warn about duplicate entries.  Only insert
	the first found.

2007-02-27  David Bateman  <dbateman@free.fr>

	* error.cc (Vlast_error_file, Vlast_erro_name, Vlast_error_row,
	Vlast_error_column): New static variables.
	(verror): Use them to store the location of last error.
	(rethrow_error, Frethrow, Flasterror): New functions.

        * DLD-FUNCTIONS/regexp.cc (octcellregexp): Wrapper to octregexp
        function for cases when string or pattern are cell arrays
        (Fregexp, Fregexpi): Use them.
        (octregexprep): New function with functionality of old Fregexprep.
        (Fregexprep): Treat cell arguments.

2007-02-26  Michael Goffioul  <michael.goffioul@swing.be>

	* Makefile.in: Use $(LN_S) instead of ln or ln -s.

	* DLD-FUNCTIONS/getrusage.cc: Undef min after including windows.h.

2007-02-25  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/interpn.cc: Include dNDArray.h, not dMatrix.cc.

	* error.h: Include cstdarg.
	From Juhani Saastamoinen <juhani@cs.joensuu.fi>.

2007-02-23  John W. Eaton  <jwe@octave.org>

	* variables.cc (lookup_function): Don't dereference NULL
	curr_parent_fucntion pointer.
	* ov-fcn-handle.cc (make_fcn_handle): Call lookup_function with
	parent set to empty string if call_stack is empty.

	* DLD-FUNCTIONS/dispatch.cc (Fbuiltin): Also adjust argument list
	in calls to functions that are not overloaded.  Call
	lookup_by_name to find function instead of searching fbi_symtab
	directly.

	* help.cc (do_which): Return empty string if file not found.

2007-02-22  John W. Eaton  <jwe@octave.org>

	* mex.cc (mxArray_cell::mxArray_cell (const mxArray_cell&),
	mxArray_struct::mxArray_struct (const mxArray_struct&)):
	Avoid calling clone on 0 elements.

	* variables.cc (symbol_out_of_date): If checking nested function,
	look for file using parent function name.  Delete unused
	variable NAMES.

	* src/oct-stream.cc (octave_stream::do_gets): If no limit or not
	at limit, read ahead one character at end of line for compatibility.
	(octave_stream::gets, octave_stream::getl): Set max_len to -1 if
	tc_max_len is not defined.
	* file-io.cc (Ffgets, Ffgetl): If no limit specified, pass
	undefined octave_value object as max_len in call to
	octave_stream::gets.

2007-02-21  John W. Eaton  <jwe@octave.org>

	* mex.cc (mexErrMsgIdAndTxt, mexWarnMsgIdAndTxt): Handle second
	arg as format and accept variable number of arguments.
	* mexproto.h: Fix decls.

	* error.h, error.cc (vmessage, vusage, vwarning, verror,
	vparse_error, vmessage_with_id, vusage_with_id, vwarning_with_id,
	verror_with_id, vparse_error_with_id): Provide va_list versions of
	variadic error, warning, and message functions.
	(message, usage, warning, error, parse_error, message_with_id,
	usage_with_id, warning_with_id, error_with_id,
	parse_error_with_id): Call va_list versions.

	* DLD-FUNCTIONS/urlwrite.cc (Furlwrite, Furlread): Return error
	code and message instead of throwing error if functionality is
	missing.

	* oct-obj.h (octave_value_list::splice): Set default for
	replacement list argument.

2007-02-20  Rafael Laboissiere  <rafael@laboissiere.net>

	* DLD-FUNCTIONS/__glpk__.cc: Adapt code for changes in the GLPK
	API for version 4.15 or later.

2007-02-20  John W. Eaton  <jwe@octave.org>

	* mxarray.h (mxArray::get_scalar): New function.
	* mex.cc (mxArray_base::get_scalar): New pure virtual function.
	(mxArray_octave_value::get_scalar, mxArray_matlab::get_scalar,
	mxArray_number::get_scalar): New functions.
	(mxGetScalar): Call get_scalar here.

	* mex.cc (mxArray_octave_value::get_dimensions): Cache ndims here.
	(mxArray_octave_value::get_number_of_dimensions):
	Call get_dimensions here to cache both ndims and dims.

2007-02-17  John W. Eaton  <jwe@octave.org>

	* variables.cc (symbol_out_of_date): Don't exit early if looking
	at nested function.

2007-02-16  John W. Eaton  <jwe@octave.org>

	* dynamic-ld.cc (octave_dynamic_loader::do_load_oct): Clear
	function if original was loaded from relative path and the name
	can no longer be found in path.  Mark files found from relative
	path as relative.
	(clear): Only warn if there is more than one function to clear.

	* variables.cc (symbol_out_of_date): Don't ignore return value in
	call to octave_env::make_absolute.
	(symbol_out_of_date): Clear symbol if original was loaded from
	relative path and name can no longer be found in path.

	* dynamic-ld.cc (octave_dynamic_loader::do_load_oct):
	Also check whether new file is same as the old file.

	* utils.cc (same_file): Move here from variables.cc.
	* utils.h: (same_file): Provide decl.

	* parse.y (frob_function): Stash parent function name if parsing
	nested function.

	* ov-fcn-handle.cc (make_fcn_handle): Pass current function name
	as parent in call to lookup_function.

	* ov-fcn.h (octave_function::parent_fcn_name): New virtual function.

	* ov-usr-fcn.h (octave_user_function::parent_name): New data member.
	(octave_user_function::stash_parent_function_name,
	octave_user_function::parent_function_name): New methods.
	* ov-usr-fcn.cc (octave_user_function::octave_user_function):
	Initialize parent_name.

	* variables.h, variables.cc (lookup_function): New arg, parent.
	If not empty, try this first for lookup.

	* dynamic-ld.cc (octave_dynamic_loader::do_load_mex): If doing
	path lookup, check relative status. Pass relative to oct_file_in_path.
	(octave_dynamic_loader::do_load_mex): Likewise, for mex_file_in_path

	* defun-int.h, defun.cc (install_mex_function): New arg, relative.
	(install_dld_function): Likewise.
	(octave_dld_fcn_installer): Likewise.
	(DEFINE_FUNX_INSTALLER_FUN3): Pass relative to install_dld_function.

	* dynamic-ld.h (octave_dynamic_loader::load_oct,
	octave_dynamic_loader::load_mex,
	octave_dynamic_loader::do_load_oct
	octave_dynamic_loader::do_load_mex): New arg, relative.

	* dirfns.h (Vcurrent_directory): Delete unused variable.

	* variables.cc (symbol_out_of_date): Also compare function time
	stamp to Vlast_chdir_time if function is from relative lookup.

	* dirfns.cc (Vlast_chdir_time): New variable.
	(octave_change_to_directory): Update it if chdir succeeds.
	* dirfns.h (Vlast_chdir_time): Provide decl.

	* ov-fcn.h (octave_function::relative): New data member.
	(octave_function::mark_relative, octave_function::is_relative):
	New functions.

	* parse.y (fcn_file_from_relative_lookup): New static variable.
	(load_fcn_from_file): Note whether function file was found from
	relative path element.
	(frob_function): Maybe mark function as relative.

	* parse.y (lookup_autoload): Don't call octave_env::make_absolute
	on return value.
	* variables.cc (symbol_out_of_date): Make name absolute after call
	to lookup_autoload.

	* input.cc (interactive_input): New arg, DEBUG.  Don't call
	drawnow if debugging.
	(get_user_input): Pass DEBUG to interactive_input.

2007-02-16  Michael Goffioul  <michael.goffioul@swing.be>

	* syscalls.cc (Fpopen2): New function.
	(pipe): Modify to return input and output file descriptor
	seperately rather than in a list.
	
2007-02-16  Muthiah Annamalai  <muthuspost@gmail.com>

	* debug.cc (Fdbtype): Improve compatibility.

2007-02-16  John W. Eaton  <jwe@octave.org>

	* toplev.cc (wait_for_input): New function.
	(run_command_and_return_output): Use it instead of napping.

	* oct-procbuf.h (octave_procbuf::pid): Now const.
	* procstream.h (procstreambase::pid): Now const.
	(procstreambase::file_number): New function.

2007-02-15  John W. Eaton  <jwe@octave.org>

	* mxarray.h (mxChar): Use char instead of unsigned short.

	* toplev.cc (Foctave_config_info): Remove
	OCTAVE_CONF_MKOCTFILE_INCFLAGS and OCTAVE_CONF_MKOCTFILE_LFLAGS
	from the list.
	* oct-conf.h.in (OCTAVE_CONF_MKOCTFILE_INCFLAGS,
	OCTAVE_CONF_MKOCTFILE_LFLAGS): Don't define.
	(OCTAVE_CONF_INCLUDEDIR, OCTAVE_CONF_OCTINCLUDEDIR,
	OCTAVE_CONF_OCTLIBDIR, OCTAVE_CONF_PREFIX): New definitions.

2007-02-14  Alexander Barth  <abarth@marine.usf.edu>

	* DLD-FUNCTIONS/interpn.cc: New file.
	* Makefile.in (DLD_XSRC): Add it to the list.

2007-02-14  John W. Eaton  <jwe@octave.org>

	* input.cc (interactive_input): Check error_state after call to feval.

2007-02-10  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_stream::rewind): Call seek (0, SEEK_SET)
	instead of rep->rewind.
	(octave_base_stream::rewind): Delete Function.
	* oct-stream.h (octave_base_stream::rewind): Delete decl.

2007-02-09  John W. Eaton  <jwe@octave.org>

	* ls-mat5.cc (PAD): Adjust to change in write_mat5_tag.
	(TAGLENGTH): Delete unused macro.

	* ov-struct.cc (octave_struct::load_ascii,
	octave_struct::load_binary, octave_struct::load_hdf5):
	Delete obsolete attempt at backward compatibility.

	* ls-mat5.cc (read_mat5_binary_element): Don't attempt to read
	fieldnames if there are no fields.
	(write_mat5_tag): Don't use small data element format if bytes == 0.

	* ls-mat5.cc (read_mat5_binary_element): Always create a structure
	that is at least 1x1.
	* ov-struct.cc (octave_struct::load_ascii,
	octave_struct::load_binary, octave_struct::load_hdf5): Likewise.

2007-02-08  Michael Goffioul  <michael.goffioul@swing.be>

	* DLD-FUNCTIONS/__glpk__.cc: Include glplib.h if glpk.h does not.
	Provide definitions for lib_set_fault_hook and lib_set_print_hook
	if they are not defined.

2007-02-07  John W. Eaton  <jwe@octave.org>

	* defaults.cc (subst_octave_home):
	Only substitute at beginning of string.

	* ls-hdf5.cc (save_hdf5_empty): Use OCTAVE_LOCAL_BUFFER.
	* ov-bool-mat.cc (octave_bool_matrix::save_hdf5,
	octave_bool_matrix::load_hdf5): Likewise.
	* ov-bool-sparse.cc (octave_sparse_bool_matrix::save_hdf5,
	octave_sparse_bool_matrix::load_hdf5): Likewise.

2007-02-07  Michael Goffioul  <michael.goffioul@swing.be>

	* ov-cell.cc (octave_cell::save_hdf5): Correct test for H5Dwrite
	return value.

2007-02-07  John W. Eaton  <jwe@octave.org>

	* zfstream.cc (gzfilebuf::open_mode): Always append "b" to c_mode.

	* toplev.cc (Foctave_config_info): Use struct for conf_info.
	Call subst_octave_home on selected values when initializing map.
	* defaults.cc (subst_octave_home): Now extern.
	* defaults.h.in: Provide decl.

2007-02-05  John W. Eaton  <jwe@octave.org>

	* mex.cc (mxArray_number::as_octave_value): Fake mxSINGLE_CLASS
	by returning double-precision values.
	(mxArray_sparse::as_octave_value): Clarify error message.

	* ov-complex.h (octave_complex): Use std instead of OCTAVE_STD
	since the latter was unconditionally defined to be std anyway.

2007-02-05  Michael Goffioul  <michael.goffioul@swing.be>

	* ov-complex.h: Tag octave_complex class with OCTINTERP_API.

2007-01-30  John W. Eaton  <jwe@octave.org>

	* Merge of changes from graphics-branch:

	2007-01-26  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__contourc__.cc: New function.
	* Makefile.in (DLD_XSRC): Add it to the list.

	2007-01-25  John W. Eaton  <jwe@octave.org>

	* input.cc (Vdrawnow_requested): New static variable.
	(F__request_drawnow__): New function.
	(interactive_input): New function.  Update Vlast_prompt_time here.
	(octave_gets, get_user_input, octave_yes_or_no):
	Call interactive_input instead of gnu_readline.

	* symtab.h (symbol_record::eternal): New data member.
	(symbol_record::symbol_record): Initialize it.
	(symbol_record::make_eternal, symbol_record::is_eternal):
	Don't forward to symbol_def functions.
	(symbol_record::symbol_def::make_eternal,
	symbol_record::symbol_def::is_eternal): Delete.
	(symbol_record::symbol_def::eternal): Delete data member.
	(symbol_record::symbol_def::symbol_def): Delete initialization.

	* pt-id.cc (tree_identifier::link_to_global): Include variable
	name in warning message.

	* variables.cc (F__lock_global__): New function.

	2007-01-11  John W. Eaton  <jwe@octave.org>

	* ls-oct-ascii.cc (save_ascii_data_for_plotting, save_three_d):
	Set precision to 6 instead of 4.

2007-01-29  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): Don't panic if
	nargout is greater than 3.

2007-01-24  John W. Eaton  <jwe@octave.org>

	* pt-assgn.cc (former_built_in_variables): New static data.
	(maybe_warn_former_built_in_variable): New static function.
	(tree_simple_assignment::tree_simple_assignment,
	tree_multi_assignment::tree_multi_assignment):
	Move definition here from pt-assign.h
	Maybe warn about assignment to obsolete built-in variables.

	* version.h (OCTAVE_STARTUP_MESSAGE): Mention "news" function.

	* pt-stmt.cc (tree_statement::eval): Use dynamic_cast, not
	static_cast.

	* help.cc (help_from_file): Show .oct or .mex file name if one
	exists in the same directory as the .m file.

2007-01-23  Luis F. Ortiz  <lortiz@interactivesupercomputing.com>

	* strfns.cc (Fstrncmp): New function.

2007-01-17  John W. Eaton  <jwe@octave.org>

	* help.cc (help_from_file, help_from_symbol_table, help_from_list):
	Rewrite using raw_ versions.

2007-01-17  David Bateman  <dbateman@free.fr>

	* help.cc (raw_help, raw_help_from_file,
	raw_help_from_symbol_table, raw_help_from_list): New functions.
	* help.h (raw_help): Provide decl.

2007-01-16  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__pchip_deriv__.cc: Fix dpchim decl for --enable-64.
	(F__pchip_deriv__): Fix call to dpchim for --enable-64.

	* DLD-FUNCTIONS/fftw.cc: Delete decl for fftw_planner.

2007-01-11  Michael Goffioul  <michael.goffioul@swing.be>

	* load-path.h (class load_path): Tag with OCTINTERP_API.

	* ls-oct-binary.cc (read_binary_data): Use unsigned char, not
	char, for reading flags and data types.

2007-01-10  Luis F. Ortiz  <lortiz@interactivesupercomputing.com>

	* parse.y (load_fcn_from_file): Delete unused variable NAMES.
	If NM is absolute, strip directory and extension parts.

2007-01-10  Michael Goffioul  <michael.goffioul@swing.be>

	* DLD-FUNCTIONS/getrusage.cc: Use #ifdef __WIN32__, not __MINGW32__.

2007-01-10  John W. Eaton  <jwe@octave.org>

	* parse.y (load_fcn_from_file): Only compare last two characters
	when looking for ".m".

2007-01-06  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_CONFIG_STATEMENT): New macro
	(OCTAVE_NAME_AND_VERSION): Remove config info.
	(OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY):
	Use OCTAVE_CONFIG_STATEMENT here.

2007-01-05  David Bateman  <dbateman@free.fr>

	* Makefile.in (DLD_XSRC): Add fftw.cc and remove fftw_wisdom.cc
	* DLD-FUNCTIONS/fftw.cc: New file.
	* DLD-FUNCTIONS/fftw_wisdom.cc: Delete.
	* defaults.cc (Vfftw_wisdom_program): Delete variable.
	(set_default_fftw_wisdom_prog): Delete function that sets it.
	(install_defaults): Delete set_default_fftw_prog from defaults.
	(Ffftw_wisdom_program): Delete.

2007-01-04  David Bateman  <dbateman@free.fr>

	* ov-fcn-handle.cc (octave_fcn_handle::load_ascii,
	octave_fcn_handle::load_binary):
	Throw error if handle can't be created.

2007-01-04  Luis F. Ortiz  <lortiz@interactivesupercomputing.com>

	* mex.cc (mxArray_number::mxArray_number (int, const char **)):
	Correctly index LHS in assignment.

2007-01-03  John W. Eaton  <jwe@octave.org>

	* data.cc (Fisinteger): New function.
	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::is_integer_type,
	OCTAVE_VALUE_INT_SCALAR_T::is_integer_type): New function.
	* ov.h (octave_value::is_integer_type): New function.
	* ov-base.h (octave_base_value::is_integer_type): New virtual function.

2007-01-03  Michael Goffioul  <michael.goffioul@swing.be>

	* toplev.cc (Fsystem): Handle async calls on Windows systems.

2007-01-03  David Bateman  <dbateman@free.fr>

	* (OPERATORS/op-cm-scm.cc, OPERATORS/op-cm-sm.cc, 
	OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc, 
	OPERATORS/op-m-scm.cc, OPERATORS/op-m-sm.cc, 
	OPERATORS/op-scm-cm.cc, OPERATORS/op-scm-cs.cc, 
	OPERATORS/op-scm-m.cc, OPERATORS/op-scm-s.cc, 
	OPERATORS/op-scm-scm.cc, OPERATORS/op-scm-sm.cc, 
	OPERATORS/op-sm-cm.cc, OPERATORS/op-sm-cs.cc, 
	OPERATORS/op-sm-m.cc, OPERATORS/op-sm-s.cc, 
	OPERATORS/op-sm-scm.cc, OPERATORS/op-sm-sm.cc, 
	OPERATORS/op-s-scm.cc, OPERATORS/op-s-sm.cc):
	Modify div and ldiv functions so that scalars stored as sparse 
	matrices are special cased.

	* ov-re-sparse.cc (double_value, complex_value): Scalar can be
	stored as a sparse matrix and so don't warn on implicit conversion
	to a scalar.
	* ov-cx-sparse.cc (double_value, complex_value): ditto.
	* ov-bool-sparse.cc (double_value, complex_value): ditto.

2007-01-03  John W. Eaton  <jwe@octave.org>

	* dynamic-ld.cc (octave_dynamic_loader::do_load_mex): Also check
	for _mexFunction.

2006-12-30  John W. Eaton  <jwe@octave.org>

	* ov-fcn-inline.cc: For compatibility, class id is
	"function_handle", not "inline function".

2006-12-27  John W. Eaton  <jwe@octave.org>

	* Makefile.in (%.df : %.cc): Insert a "do not edit" notice in the
	.df files.

	* mex.cc (mxArray_matlab::get_class_name,
	mxArray_octave_value::get_class_id): Use "function_handle", not
	"function handle".

2006-12-14  John W. Eaton  <jwe@octave.org>

	* pt-decl.cc (tree_decl_elt::eval): New function.
	* pt-decl.h (tree_decl_elt::eval): Provide decl.
	(tree_decl_elt::is_defined, tree_decl_elt::lvalue_ok, 
	tree_decl_elt::mark_as_formal_parameter, tree_decl_elt::rvalue,
	tree_decl_elt::lvalue): New functions.

	* pt-misc.h (class tree_parameter_list): Derive from
	octave_base_list<tree_decl_elt *> instead of
	octave_base_list<tree_identifier *>.
	(tree_parameter_list::tree_parameter_list (tree_identifier *)): Delete.
	(tree_parameter_list::tree_parameter_list (tree_decl_elt *)):
	New function.
	* pt-misc.cc (tree_parameter_list::mark_as_formal_parameters,
	tree_parameter_list::initialize_undefined_elements,
	tree_parameter_list::undefine, tree_parameter_list::dup,
	tree_parameter_list::convert_to_const_vector,
	tree_parameter_list::is_defined): Handle argument list elements
	as tree_decl_list objects instead of tree_identifier objects.
	(tree_parameter_list::define_from_arg_vector): Likewise.
	Always process entire list, setting default values if possible.
	Accept ":" to mean "use default argument".

	* parse.y (param_list2): Use decl2 to recognize
	"identifier '=' expression" in addition to "identifier".

	* parse.y (return_list1, make_anon_fcn_handle, finish_function):
	Adapt to new definition of tree_parameter_list.
	* pt-bp.cc (tree_breakpoint::visit_parameter_list): Likewise.
	* pt-check.cc (tree_checker::visit_parameter_list): Likewise.
	* pt-pr-code.cc (tree_print_code::visit_parameter_list): Likewise.

2006-12-08  John W. Eaton  <jwe@octave.org>

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::array_value, 
	OCTAVE_VALUE_INT_MATRIX_T::complex_array_value, 
	OCTAVE_VALUE_INT_MATRIX_T::bool_array_value, 
	OCTAVE_VALUE_INT_MATRIX_T::char_array_value):
	Use fortran_vec to avoid expensive indexing operator.

2006-12-08  David Bateman  <dbateman@free.fr>

	* ov-intx.h (OCTAVE_VALUE_INT_SCALAR_T::matrix_value,
	OCTAVE_VALUE_INT_SCALAR_T::complex_matrix_value, 
	OCTAVE_VALUE_INT_MATRIX_T::matrix_value, 
	OCTAVE_VALUE_INT_MATRIX_T::comlex_matrix_value): New functions.
	(OCTAVE_VALUE_INT_MATRIX_T::array_value, 
	OCTAVE_VALUE_INT_MATRIX_T::comlex_array_value):
	Use octave_idx_type instead of int for indexing.

2006-12-04  David Bateman  <dbateman@free.fr>

	* xpow.cc (xpow (const Matrix&, double)): Add matrix type probing
        to matrix inverse.
        (xpow (const ComplexMatrix&, double)): ditto.
        * DLD-FUNCTIONS/inv.cc (Finv): Add matrix type probing.

2006-12-06  John W. Eaton  <jwe@octave.org>

	* sysdep.cc: Include "Cell.h" here.
	* input.h: Include "oct-obj.h", not "ov-list.h".

2006-12-06  Michael Goffioul  <michael.goffioul@swing.be>

	* mappers.cc (install_mapper_functions): Undefine isascii before
	the DEFUN_MAPPER for it.

	* input.cc (get_user_input): Prevent out of bounds array access
	when checking for EOL.

2006-12-05  John W. Eaton  <jwe@octave.org>

	* ls-oct-ascii.cc (extract_keyword): If no match and looking for
	more, skip to end of line before trying another match.

	* pt-mat.cc (tm_row_const::empty): New function.
	(tm_const::init): Don't append anything if tmp tm_row_const object
	is empty.
	(tree_matrix::rvalue): Default return value is Matrix().
	Don't do anything if tmp tm_const object is empty.

	* dirfns.cc (Fmkdir): Fix thinko in previous change.

2006-12-05  Paul Kienzle  <pkienzle@users.sf.net>

	* DLD-FUNCTIONS/rand.cc: Test for Poisson generator with lambda > 1e8.

2006-12-04  David Bateman  <dbateman@free.fr>

	* data.cc (Fdata): If ndims is greater than nargout and
	nargout is greater than 1, then collect size of trailing
	dimensions into retval(end).

	* load-path.cc (load_path::do_find_fcn): Return empty string if
	tests fail.

        * ov-base-mat.cc (void octave_base_matrix<MT>::assign (const
	octave_value_list&, const MT&)): Invalidate matrix type on
	assignment.

2006-11-30  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/fftw_wisdom.cc (Ffftw_wisdom):
	Accept "r" or "w" for second argument.

2006-11-29  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/fftw_wisdom.cc (Ffftw_wisdom): Look in load-path
	if reading wisdom file, but not if writing.

2006-11-28  John W. Eaton  <jwe@octave.org>

	* mex.cc (mxArray_struct::get_field_by_number):
	Return 0 if key_num is out of range.
	(mxArray_struct::set_field_by_number):
	Do nothing if key_num is out of range.
	(mxArray_cell::get_cell, mxArray_cell::set_cell):
	Avoid out-of-bounds indexing

2006-11-28  Luis F. Ortiz  <lortiz@interactivesupercomputing.com>

	* mex.cc (mxArray_matlab::get_n, mxArray_octave_value::get_n):
	Return product of last N-1 dims.

2006-11-28  John W. Eaton  <jwe@octave.org>

	* lex.l (eat_whitespace): Also handle CRLF as EOL.

	* dirfns.cc (Fmkdir): Handle "mkdir (parent, dir)".

2006-11-21  John W. Eaton  <jwe@octave.org>

	* load-path.cc (load_path::do_find_file,
	load_path::do_find_first_of, load_path::do_find_all_first_of): 
	Call rooted_pathname instead of absolute_pathname.
	* utils.cc (fcn_file_in_path, oct_file_in_path, mex_file_in_path):
	Likewise.

2006-11-16  Michael Goffioul  <michael.goffioul@swing.be>

	* oct-hist.cc (default_history_file): Instead of appending
	"/.octave_hist", append directory separator (but only if
	necessary), then ".octave_hist".

2006-11-16  John W. Eaton  <jwe@octave.org>

	* data.cc (Fresize): Fix doc string.

2006-11-15  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__gnuplot_raw__.l (write_data, write_inline_data):
	New functions.
	(save_in_tmp_file): Use write_data.
	(gnuplot::send_inline_data, gnuplot_do_send_inline_data):
	New functions.
	(F__gnuplot_send_inline_data__, F__gnuplot_save_data__):
	New functions.

	* ls-oct-ascii.cc (save_ascii_data_for_plotting):
	Call save_ascii_data with precision = 4.
	(save_three_d): Temporarily set precision to 4 for output stream.

2006-11-15  Michael Goffioul  <michael.goffioul@swing.be>

	* Cell.h (Cell): Tag class with OCTINTERP_API.

2006-11-13  John W. Eaton  <jwe@octave.org>

	* octave.cc (maximum_braindamage): Disable
	Octave:fopen-file-in-path and Octave:load-file-in-path warnings.

	* load-save.cc (find_file_to_load): New function.
	(Fload): Call find_file_to_load to search load path for file.

	* file-io.cc (Ffopen): Search load path for file.

	* load-path.cc (path::do_find_first_of, path::do_find_file):
	Break out of all loops once file is found, not just innermost one.

	* data.cc (Fsize_equal): New function.

2006-11-13  Michael Goffioul  <michael.goffioul@swing.be>

	* ov.cc (check_subsref_elements, Fsubsref, Fsubsasgn):
	New functions.

	* ov-re-mat.h, ov-scalar.h, pr-output.h:
	Sprinkle with OCTINTERP_API as needed.

2006-11-11  John W. Eaton  <jwe@octave.org>

	* Makefile.in (parse.cc): Avoid creating empty files.
	(%.df : %cc, builtins.cc, mkbuiltins, PKG_ADD, DOCSTRINGS,
	doc-files, gendoc.cc, ops.cc, $(OPT_HANDLERS), oct-errno.cc,
	oct-gperf.h): Use $(simple-move-if-change-rule) here.
	(lex.cc, __gnuplot_raw__.cc):
	Use $(destdir-move-if-change-rule) here.
	(ifndef omit_deps): Don't include stamp-prereq here.
	($(DEF_FILES), $(MAKEDEPS)): Also depend on stamp-prereq.

2006-11-10  John W. Eaton  <jwe@octave.org>

	* ov-str-mat.cc (octave_char_matrix_str::load_ascii,
	octave_char_matrix_str::load_binary):
	Use chMatrix as buffer instead of C string.

2006-11-09  John W. Eaton  <jwe@octave.org>

	* ov-usr-fcn.h (octave_user_function::inline_function):
	 New data member.
	(octave_user_function::mark_as_inline_function): Set it.
	(octave_user_function::is_inline_function): Check it.
	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Also skip setting curr_parent_fucntion if evaluating an inline
	function.
	(octave_user_function::octave_user_function):
	 Initialize inline_function.
	* pt-fcn-handle.cc (tree_anon_fcn_handle::rvalue):
	Mark user function as inline here.

2006-11-09  Michael Goffioul  <michael.goffioul@swing.be>

	* load-path.cc (load_path::move): Don't use reference to file_info
	object that will be erased.

2006-11-07  John W. Eaton  <jwe@octave.org>

	* utils.cc (file_in_path): Don't unconditionally return "".

	* pager.cc (default_pager): Don't append options here.
	(pager_command): New function.
	(do_sync): Use it.
	(VPAGER_FLAGS): New variable.
	(FPAGER_FLAGS): New function.

2006-11-06  John W. Eaton  <jwe@octave.org>

	* oct-hist.cc (default_history_file): If env_file is not empty,
	just accept it rather than checking to see if it exists.

2006-11-03  Bill Denney  <denney@seas.upenn.edu>

	* help.cc (keywords): Document try and unwind_protect.

2006-11-03  John W. Eaton  <jwe@octave.org>

	* Makefile.in (DLL_CXXDEFS): Rename from XTRA_CXXDEFS.
	(DLL_CDEFS): Rename from XTRA_CDEFS.
	Substitute OCTINTERP_DLL_DEFS, not XTRA_OCTINTERP_DEFS.

2006-11-02  Michael Goffioul  <michael.goffioul@swing.be>

	* sysdep.cc (MSVC_init): Also cal w32_sigint_init and
	w32_set_quiet_shutdown.

2006-11-01  John W. Eaton  <jwe@octave.org>

	* ov.h (octave_value::idx_type_value): New function.
	* data.cc (fill_matrix, Flinspace, Freshape): Use idx_type_value
	instead of int_value to extract size args.

2006-10-31  John W. Eaton  <jwe@octave.org>

	* ov-range.h (octave_range::empty_clone): Return octave_matrix
	object instead of octave_range.

2006-10-29  Juhani Saastamoinen  <juhani@cs.joensuu.fi>

	* ls-mat5.cc (read_mat5_tag): Declare bytes as int32_t, not just int. 

2006-10-28  John W. Eaton  <jwe@octave.org>

	* toplev.cc (Fatexit): Push function names on the stack even if we
	don't have atexit or on_exit.

2006-10-28  Michael Goffioul  <michael.goffioul@swing.be>

	* mappers.cc (install_mapper_functions): Undefine toascii before
	the DEFUN_MAPPER for it.

2006-10-27  John W. Eaton  <jwe@octave.org>

	* mexproto.h: Include oct-dlldefs.h.

	* pr-output.cc (SPECIALIZE_UABS): New macro.
	Use it to generate specializations of abs for unsigned int types.
	Instantiate abs for signed int types.

	* load-path.cc (load_path::do_initialize):
	Use dir_path::path_sep_str instead of ":".
	Don't append ":::" to xpath when calling do_set.

	* dirfns.cc (Fls, cleanup_iprocstream): Delete.

	* sysdep.cc (Ftilde_expand): If arg is cellstr, return cellstr.

	* ov.h (octave_value::is_cellstr): New function.
	* ov-base.h (octave_base_value::is_cellstr): New function.
	* ov-cell.h (octave_cell::is_cellstr): New function.
	* ov-cell.cc (Fiscellstr): Implement with is_cellstr.
	* Cell.cc (Cell::Cell (const dim_vector&, const string_vector&, bool)): 
	New constructor.
	(Cell::is_cellstr): New function.
	* Cell.h: Provide decls.

	* defaults.cc (subst_octave_home): If dir_sep_char is not '/',
	replace before returning.
	From Michael Goffioul <michael.goffioul@swing.be>.

2006-10-26  John W. Eaton  <jwe@octave.org>

	* cutils.c (octave_strcasecmp, octave-strncasecmp):
	Move to liboctave/lo-cutils.c.
	* utils.h: Delete decls.
	* strcasecmp.c: Move to liboctave/strcasecmp.c.
	* strncase.c: Move to liboctave/strncase.c.
	* Makefile.in (DIST_SRC): Delete them from the list.

	* bitfcns.cc (bitshift): If A < 0, return -bitshift (-A, N, MASK).

2006-10-26  Michael Goffioul  <michael.goffioul@swing.be>

	* help.cc (display_help_text): Quote sed patterns with ".

	* file-io.cc: Include file-io.h.

	* TEMPLATE-INST/Array-os.cc, TEMPLATE-INST/Array-sym.cc,
	TEMPLATE-INST/Array-tc.cc, defun-int.h, error.h, file-io.h,
	gripes.h, ls-oct-ascii.h, mexproto.h, oct-map.h, oct-obj.h,
	oct-stream.cc, oct-stream.h, octave.h, ov-base.h,
	ov-bool-sparse.cc, ov-bool-sparse.h, ov-cx-sparse.cc,
	ov-cx-sparse.h, ov-fcn.h, ov-re-sparse.cc, ov-re-sparse.h,
	ov-str-mat.h, ov-typeinfo.cc, ov-typeinfo.h, ov.h, pager.h,
	parse.h, pr-output.cc, pr-output.h, procstream.h, sighandlers.h,
	symtab.h, unwind-prot.h, utils.h, variables.h:
	Sprinkle with OCTINTERP_API as needed.

2006-10-26  John W. Eaton  <jwe@octave.org>

	* ov-bool.h (octave_bool::sparse_matrix_value,
	octave_bool::sparse_complex_matrix_value
	octave_bool::sparse_bool_matrix_value): New functions.

2006-10-25  John W. Eaton  <jwe@octave.org>

	* sighandlers.cc: Check defined (RETSIGTYPE_IS_VOID) instead of
	RETSIGTYPE == void.

	* oct-procbuf.cc (BUFSIZ): Define if not already defined.
	(octave_procbuf::open): Pass BUFSIZ as size argument to setvbuf.

2006-10-25  Michael Goffioul  <michael.goffioul@swing.be>

	* Makefile.in (XTRA_CDEFS, XTRA_CXXDEFS): Substitute here.

	* oct-procbuf.cc [_MSC_VER]: Define W32POPEN and W32PCLOSE the
	same as for __MINGW32__.
	(octave_procbuf::open, octave_procbuf::close) [_MSC_VER]:
	Use the same code as for __MINGW32__ and __CYGWIN__.

	* oct-prcstrm.cc [_MSC_VER]: Define popen and pclose.

2006-10-25  John W. Eaton  <jwe@octave.org>

	* sysdep.cc (w32_set_octave_home): Correctly initialize bin_dir.
	Fill it with '\0' instead of ' '.

2006-10-24  Michael Goffioul  <michael.goffioul@swing.be>

	* Makefile.in: Filter out $(XTRA_CXXDEFS) from $(ALL_CXXFLAGS) for
	$(DLD_PICOBJ).

2006-10-24  John W. Eaton  <jwe@octave.org>

	* sysdep.cc (MSC_init): New function.
	(sysdep_init): Call it.
	(w32_set_octave_home): New function, based on code from Michael
	Goffioul <michael.goffioul@swing.be>.
	(MINGW_init): Call w32_set_octave_home here too.

2006-10-23  John W. Eaton  <jwe@octave.org>

	* symtab.cc (symbol_table::clear_mex_functions): New function.
	* symtab.h: Provide decl.
	* vriables.cc (clear_mex_functions): New function.
	* variables.h Provide decl.
	* toplev.cc: Call clear_mex_functions instead of delete_symbol_tables.

	* variables.cc (delete_symbol_tables): Delete.
	* variables.h: Delete decl.

	* mex.cc (mex::unmark_array): New function.
	(mex::persistent): Define with unmark_array.
	(maybe_unmark_array): New function.
	(mxArray_struct::set_field_by_number, mxArray_cell::set_cell):
	Call maybe_unmark_array on val to avoid freeing val twice on exit
	from mex function.
	(mxFree): Call xfree, not free.

2006-10-21  John W. Eaton  <jwe@octave.org>

	* ov-intx.h
	(OCTAVE_VALUE_INT_MATRIX_T::OCTAVE_TYPE_PREDICATE_FUNCTION,
	(OCTAVE_VALUE_INT_SCALAR_T::OCTAVE_TYPE_PREDICATE_FUNCTION):
	Function is now const, so it properly overloads method in base
	class.

	* mex.cc (mxArray_octave_value::is_uint32):
	Call val.is_uint32_type, not val.is_int32_type.
	(mxArray_octave_value::is_uint64):
	Call val.is_uint64_type, not val.is_int64_type.
	(mxArray_octave_value::is_uint8):
	Call val.is_uint8_type, not val.is_int8_type.

2006-10-20  Paul Kienzle  <pkienzle@users.sf.net>

	* ov-mex-fcn.h (octave_mex_function::atexit): New function.
	(octave_mex_function::exit_fcn_ptr): New data member.
	* ov-mex-fcn.cc (octave_mex_function::exit_fcn_ptr): New data member.
	(octave_mex_function::octave_mex_function): Initialize it.
	(octave_mex_function::~octave_mex_function):
	If we have an exit function, call it.

2006-10-20  John W. Eaton  <jwe@octave.org>

	* variables.cc (delete_symbol_tables): New function.
	* variables.h: Provide decl.
	* toplev.cc (do_octave_atexit): Call it.

	* mex.cc (mex::mex): New arg, a pointer to the current mex function.
	(mex::curr_mex_fcn): New data member.
	(mex::current_mex_function): New function.
	(mexAtExit): Set exit function pointer in current mex file object.

2006-10-20  Paul Kienzle  <pkienzle@users.sf.net>

	* mex.cc (enum callstyle): Delete enum definition.
	(Fortran_mex, C_mex): Delete functions.
	(call_mex): First arg is now bool.
	* ov-mex-fcn.cc (call_mex): Fix decl to match new definition.
	(Fortran_mex, C_mex): Delete decls.
	(octave_mex_function::do_multi_index_op): Simplify call to call_mex.

2006-10-20  John W. Eaton  <jwe@octave.org>

	* lex.l (handle_identifier): If a command name is found, skip
	starting command mode if parsing an object index.

2006-10-20  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTION/spqr.cc (dmperm_internal): New function with core
	of Fdmperm.
	(Fdmperm): Call dmperm_internal rather then calculating loally.
	(Fsprank): New function to calculate the strutural rank also using
	dmperm_internal.

2006-10-19  John W. Eaton  <jwe@octave.org>

	* ov-struct.cc (octave_struct::as_mxArrary):
	Use OCTAVE_LOCAL_BUFFER to allocate tempoarary array of field names.

	* mxarray.h (mxArray::persistent): Delete var and all uses.
	(mxArray::mark_persistent, mxArray::unmark_persistent,
	mxArray::is_persistent): Delete functions.
	* mex.cc (mex::function_name): Use mxArray::strsave, not strsave.
	(mex::mark_array): New function.
	(mex::make_value): Use it.
	(mex::free_value): Return true if we found ptr in arraylist.
	(mex::persistent (mxArray *)): Remove ptr from arraylist instead
	of marking it as persistent.
	(mxArray::malloc): Call ::malloc instead of malloc.
	(mxArray::calloc): Call ::calloc instead of calloc.
	(maybe_mark_array): New function.
	(mxCreateCellArray, mxCreateCellMatrix, mxCreateCharArray,
	mxCreateCharMatrixFromStrings, mxCreateDoubleMatrix,
	mxCreateDoubleScalar, mxCreateLogicalArray, mxCreateLogicalMatrix,
	mxCreateLogicalScalar, mxCreateNumericArray,
	mxCreateNumericMatrix, mxCreateSparse,
	mxCreateSparseLogicalMatrix, mxCreateString, mxCreateStructArray,
	mxCreateStructMatrix, mxDuplicateArray): Use it.
	(mxDestroyArray): No need to check persistence now.
	Also delete ptr if mex_context->free_value does not.
	(call_mex): No need to delete elements of argout now.

2006-10-18  John W. Eaton  <jwe@octave.org>

	* dynamic-ld.cc (octave_shlib_list::remove,
	octave_shlib_list::do_remove, octave_mex_file_list::remove,
	octave_mex_file_list::do_remove): New arg, cl_hook.
	(octave_shlib_list::do_remove): Pass cl_hook to octave_shlib close
	function.
	(octave_dynamic_loader::do_load_oct): Don't call close on shl
	directly.  Pass do_clear_function to octave_shlib_list::remove.  

	* mex.cc (mexUnlock): Don't warn if unlocking a function that is
	not locked.

	* pt-fcn-handle.cc (tree_anon_fcn_handle::dup):
	Correctly duplicate symbol table info.

2006-10-17  Michael Goffioul  <michael.goffioul@swing.be>

	* oct-map.h: Include <algorithm>.

2006-10-16  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_stream_list::do_remove): Handle "all" as a
	special case.

2006-10-13  Michael Goffioul  <michael.goffioul@swing.be>

	* Makefile.in: Adapt rules to use $(LIBPRE).

2006-10-11  John W. Eaton  <jwe@octave.org>

	* mex.h (UINT64_T, uint64_T, INT64_T, int64_T, UINT32_T, uint32_T,
	INT32_T, int32_T, UINT16_T, uint16_T, INT16_T, int16_T, UINT8_T,
	uint8_T, INT8_T, int8_T): Conditionally define.
	From Andy Adler <adler@site.uottawa.ca>.

2006-10-09  John W. Eaton  <jwe@octave.org>

	* oct-conf.h.in (OCTAVE_CONF_CURL_LIBS): Substitute.
	* toplev.cc (octave_config_info): Add CURL_LIBS to the list.

2006-10-09  Alexander Barth  <abarth@marine.usf.edu>

	* DLD-FUNCTIONS/urlwrite.cc: New file providing urlwrite and urlread.

2006-10-09  John W. Eaton  <jwe@octave.org>

	* pt-mat.cc (tree_matrix::dup): Append new elements to new matrix.
	* pt-cell.cc (tree_cell::dup): Append new elements to new cell array.

2006-10-04  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.9+.

	* DLD-FUNCTIONS/__gnuplot_raw__.l (F__clear_plot_window__):
	Rename from Fclearplot.  Only clear plot window.

2006-10-03  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/luinc.cc (Fluinc): Avoid crash if SparseLU or
	SparseComplexLU constructor fails.

	* DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx):
	Delete unused variable.

2006-10-03  David Bateman  <dbateman@free.fr>

	* Makefile.in (OCT_LINK_DEPS) Include $(CAMD_LIBS) in the list.
	(octave$(EXEEXT)): Include $(CAMD_LIBS) in link command.

2006-10-02  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.9.
	(OCTAVE_API_VERSION): Now api-v22.
	(OCTAVE_RELEASE_DATE): Now 2006-10-02.

	* pr-output.cc (pr_plus_format): Use "inline" instead of "static
	inline" for template functions to avoid problems when not
	compiling with 	g++.

	* mex.cc (call_mex): Delete elements of argout.
	From Kai Labusch <labusch@inb.uni-luebeck.de>.

2006-09-29  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/spfind.cc (sparse_find_non_zero_elem_idx):
	Leading dimension is NR, not NC.

	* Makefile.in (DEP_5): Include oct-errno.cc in the list.

2006-09-27  John W. Eaton  <jwe@octave.org>

	* pr-output.cc (abs): New template function.  Instantiate for
	unsigned types.

2006-09-27  David Bateman  <dbateman@free.fr>

	* file-io.cc (Fsprintf): If fmt is an sq_string, return an sq_string.

	* DLD-FUNCTIONS/sparse.cc (spfind, sparse_find): Delete.
	* DLD-FUNCTIONS/spfind.cc: New file implementating compatible
	sparse find function.
	* Makefile.in (DLD_XSRC): Add spfind.cc.
	
2006-09-26  Bill Denney  <bill@givebillmoney.com>

	* DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx, Ffind):
	Handle direction and limit on number of elements to find.

2006-09-26  John W. Eaton  <jwe@octave.org>

	* error.cc (warning_1): Call error_2, not error.

2006-09-15  John W. Eaton  <jwe@octave.org>

	* ops.h (DEFSTRDBLCONVFN): New arg, TFROM.
	* OPERATORS/op-double-conv.cc: Declare and install sq_string
	conversions too.

	* ov-base-int.cc (octave_base_int_scalar<T>::convert_to_str_internal,
	octave_base_int_matrix<T>::convert_to_str_internal):
	New functions.
	* ov-base-int.h: Provide decls.

2006-09-15  Søren Hauberg  <soren@hauberg.org>.

	* data.cc (Fsize): If nargout > ndims, fill with 1.

2006-09-15  John W. Eaton  <jwe@octave.org>

	* octave.cc: Fix xerbla decl.

2006-09-13  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/cellfun.cc: Improve error message for uniform
	output case when results are not scalars.  Avoid shadow decls.

2006-09-13  David Bateman <dbateman@free.fr>

	* ov-scalar.h (octave_scalar::sparse_matrix_value,
	octave_scalar::sparse_complex_matrix_value): New extractor functions.
	* ov-complex.h (octave_complex::sparse_matrix_value,
	octave_complex::sparse_complex_matrix_value): Ditto.
	* DLD-FUNCTIONS/spkron.cc (Fspkron): Change example in help.

2006-09-12  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/cellfun.cc (Fcellfun): Allow matlab compatiable
	'UniformOutput' and 'ErrorHandler' options.  Change output when
	called with function handler or inline function to by default have
	'UniformOutput' set to true.  Allow functions with multiple inputs
	and outputs. Add test code.  Replace some int with octave_idx_type.
	(Fnum2cell): Replace some int with octave_idx_type.  Add test code.
	
2006-09-11  Yozo Hida  <yozo@cs.berkeley.edu>

	* DLD-FUNCTIONS/gcd.cc (Fgcd): Extend range by using std::floor
	instead of converting to int.

2006-09-05  John W. Eaton  <jwe@octave.org>

	* mex.cc (mxArray_sparse::as_octave_value): Cast nzmax to
	octave_idx_type for sparse matrix constructors.

2006-09-01  John W. Eaton  <jwe@octave.org>

	* dirfns.cc: Don't handle nargout == 0 as a special case.
	(octave_change_to_directory): Perform tilde expansion on directory
	name here.

2006-08-30  John W. Eaton  <jwe@octave.org>

	* load-save.cc (get_file_format): Fix misplaced #endif.

2006-08-29  John W. Eaton  <jwe@octave.org>

	* load-path.cc (execute_pkg_add_or_del):
	Source PKG_ADD or PKG_DEL in base workspace.
	* parse.y (source_file): New optional arg, context.
	* parse.h (source_file): Fix decl.

2006-08-25  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.8+.

2006-08-24  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.8.
	(OCTAVE_API_VERSION): Now api-v21.
	(OCTAVE_RELEASE_DATE): Now 2006-08-24.

2006-08-23  John W. Eaton  <jwe@octave.org>

	* ov.h (octave_value::save_ascii): Delete strip_nan_and_inf arg.
	* ov-base.h, ov-base.cc (octave_base_value::save_ascii): Likewise.
	* ov-base-int.h, ov-base-int.cc	(octave_base_int_matrix<T>::save_ascii,
	octave_base_int_scalar<T>::save_ascii, ): Likewise.
	* ov-base-sparse.cc, ov-base-sparse.h
	(octave_base_sparse<T>::save_ascii): Likewise.
	* ov-bool-mat.cc, ov-bool-mat.h (octave_bool_matrix::save_ascii):
	Likewise.
	* ov-bool.cc, ov-bool.h (octave_bool::save_ascii): Likewise.
	* ov-cell.cc, ov-cell.h (octave_cell::save_ascii): Likewise.
	* ov-complex.cc, ov-complex.h (octave_complex::save_ascii): Likewise.
	* ov-fcn-handle.cc, ov-fcn-handle.h (octave_fcn_handle::save_ascii):
	Likewise.
	* ov-fcn-inline.cc, ov-fcn-inline.h (octave_fcn_inline::save_ascii):
	Likewise.
	* ov-list.cc, ov-list.h (octave_list::save_ascii): Likewise.
	* ov-range.cc, ov-range.h (octave_range::save_ascii): Likewise.
	* ov-scalar.cc, ov-scalar.h (octave_scalar::save_ascii): Likewise.
	* ov-str-mat.cc, ov-str-mat.h (octave_char_matrix_str::save_ascii):
	Likewise.
	* ov-struct.cc, ov-struct.h (octave_struct::save_ascii): Likewise.
	* ov-re-mat.cc, ov-re-mat.cc (octave_matrix::save_ascii): Likewise.
	* ov-cx-mat.cc, ov-cx-mat.cc (octave_complex_matrix::save_ascii):
	Likewise.
	* ov-cx-mat.cc, ov-cx-mat.cc (octave_complex_matrix::save_ascii):
	Likewise.
	* ov-re-mat.cc, ov-re-mat.cc (octave_matrix::save_ascii): Likewise.

	* ls-oct-ascii.cc, ls-oct-ascii.h (save_ascii_data):
	Delete strip_nan_and_inf arg.
	(save_ascii_data_for_plotting): Delete strip_nan_and_inf arg from
	call to save_ascii_data.

	* DLD-FUNCTIONS/__gnuplot_raw__.l (handle_using): Accept "(EXPR)"
	as components of using clauses.
	(enum _toktype): New element DOLLAR.
	Accept "$" in lexer.

	* ls-oct-ascii.cc (save_ascii_data): Delete arg strip_nan_and_inf.
	Change all uses.

	* ls-oct-ascii.h (save_three_d): Provide decl.
	* load-save.h (save_ascii_data_for_plotting, save_three_d):
	Delete decls.

2006-08-22  John W. Eaton  <jwe@octave.org>

	* ov.h (octave_value::save_ascii): strip_nan_and_inf is now int,
	not bool.
	* ov-base.h, ov-base.cc (octave_base_value::save_ascii): Likewise.
	* ov-base-int.h, ov-base-int.cc	(octave_base_int_matrix<T>::save_ascii,
	octave_base_int_scalar<T>::save_ascii, ): Likewise.
	* ov-base-sparse.cc, ov-base-sparse.h
	(octave_base_sparse<T>::save_ascii): Likewise.
	* ov-bool-mat.cc, ov-bool-mat.h (octave_bool_matrix::save_ascii):
	Likewise.
	* ov-bool.cc, ov-bool.h (octave_bool::save_ascii): Likewise.
	* ov-cell.cc, ov-cell.h (octave_cell::save_ascii): Likewise.
	* ov-complex.cc, ov-complex.h (octave_complex::save_ascii): Likewise.
	* ov-fcn-handle.cc, ov-fcn-handle.h (octave_fcn_handle::save_ascii):
	Likewise.
	* ov-fcn-inline.cc, ov-fcn-inline.h (octave_fcn_inline::save_ascii):
	Likewise.
	* ov-list.cc, ov-list.h (octave_list::save_ascii): Likewise.
	* ov-range.cc, ov-range.h (octave_range::save_ascii): Likewise.
	* ov-scalar.cc, ov-scalar.h (octave_scalar::save_ascii): Likewise.
	* ov-str-mat.cc, ov-str-mat.h (octave_char_matrix_str::save_ascii):
	Likewise.
	* ov-struct.cc, ov-struct.h (octave_struct::save_ascii): Likewise.
	* ov-re-mat.cc, ov-re-mat.cc (octave_matrix::save_ascii): Likewise.
	* ov-cx-mat.cc, ov-cx-mat.cc (octave_complex_matrix::save_ascii):
	Likewise.

	* ov-cx-mat.cc, ov-cx-mat.cc (octave_complex_matrix::save_ascii):
	Don't strip Inf and NaN here.  Call ComplexMatrix::save_ascii to
	do the real work.
	* ov-re-mat.cc, ov-re-mat.cc (octave_matrix::save_ascii):
	Don't strip Inf and NaN here.  Call Matrix::save_ascii to do the
	real work.

	* ov-re-mat.cc, ov-cx-mat.cc (strip_infnan): Delete.
	* ls-oct-ascii.cc, ls-oct-ascii.h (save_ascii_data):
	strip_nan_and_inf is now int, not bool.
	(strip_infnan): Delete.
	(save_ascii_data_for_plotting): Call save_ascii_data with
	strip_nan_and_inf = 2.

	* Makefile.in (INCLUDES): Remove matrix.h from the list.

2006-08-22  David Bateman  <dbateman@free.fr>

	* sparse-xpow.cc: Replace all uses of pow by std::pow.
	(elem_pow): Simplify for two sparse matrices arguments.

2006-08-22  John W. Eaton  <jwe@octave.org>

	* ls-oct-ascii.cc: Increase default value of save_precision to 16.

	* ls-mat-ascii.cc (save_mat5_ascii_data): Use scientific format.

2006-08-21  John W. Eaton  <jwe@octave.org>

	* ls-mat5.cc (read_mat5_binary_data, read_mat5_integer_data,
	write_mat5_array): Unconditionally enable code for 64-bit int types.

	* ov-fcn-handle.cc (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA):	
	For compatibility, set class to function_handle.

2006-08-18  John W. Eaton  <jwe@octave.org>

	* pr-output.cc (set_real_matrix_format): Also always include space
	for sign if values are int, inf, or nan.
	(set_complex_format, set_complex_matrix_format): Always include
	space for sign in real format, but never in imaginary format.

	* gripes.cc (gripe_logical_conversion): New function.
	* gripes.h: Provide decl.
	* ov.h (octave_value::bool_value, octave_value::bool_matrix_value,
	octave_value::bool_array_value): New arg, warn.
	* ov-base.cc, ov-base.h (octave_base_value::bool_value,
	octave_base_value::bool_matrix_value, 
	octave_base_value::bool_array_value): Likewise.
	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::bool_array_value,
	OCTAVE_VALUE_INT_SCALAR_T::bool_array_value): Likewise.
	* ov-range.h (octave_range::bool_array_value): Likewise.
	* ov-re-mat.cc, ov-re-mat.h (octave_matrix::bool_array_value):
	Likewise.
	* ov-re-sparse.cc, ov-re-sparse.h
	(octave_sparse_matrix::bool_array_value): Likewise.
	* ov-scalar.h (octave_scalar::bool_value,
	octave_scalar::bool_array_value): Likewise.
	* OPERATORS/op-bm-b.cc (oct_assignop_conv_and_assign):
	Ask for warning from bool_array_value.
	* OPERATORS/op-bm-bm.cc (oct_assignop_conv_and_assign): Likewise.
	* ov-bool.h (octave_bool::bool_value,
	octave_bool::bool_matrix_value, octave_bool::bool_array_value):
	Likewise.
	* ov-bool-mat.h (octave_bool_matrix::bool_matrix_value,
	octave_bool_matrix::bool_array_value): Likewise.
	* ov-bool-sparse.cc, ov-bool-sparse.h
	(octave_sparse_bool_matrix::bool_matrix_value,
	octave_sparse_bool_matrix::bool_array_value): Likewise.

2006-08-18  Benjamin Lindner  <lindnerben@gmx.net>

	* ls-mat5.cc (read_mat5_tag): Declare type as int32_t, not int.
	(read_mat5_binary_element): Likewise, for len and element_length.

2006-08-18  John W. Eaton  <jwe@octave.org>

	* load-save.h (enum load_save_format): New element, LS_MAT_ASCII_LONG.
	* load-save.cc (Fload, Fsave): Make -ascii Matlab compatible.
	(do_save): Handle LS_MAT_ASCII.
	* ls-mat-ascii.cc (save_mat_ascii_data): New function.
	* ls-mat-ascii.h: Provide decl.

2006-08-17  John W. Eaton  <jwe@octave.org>

	* ls-mat5.cc (save_mat5_element_length): Correctly compute element
	length for character data.  Handle N-d character data
	(save_mat5_binary_element): Handle N-d character data.

2006-08-16  John W. Eaton  <jwe@octave.org>

	* parse.y (gobble_leading_white_space): New arg, SKIP_CODE.
	Change all uses.

2006-08-15  John W. Eaton  <jwe@octave.org>

	* help.cc (help_from_file): Call get_help_from_file with new file
	arg.  Print file info here.

	* parse.y (get_help_from_file): Delete include_file_info arg.
	Provide two versions, one that returns the file found in a
	reference arg and one that does not.

	* variables.cc (do_isglobal): New function.
	(Fisglobal): Use it.
	(Fis_global): New function.

2006-08-14  John W. Eaton  <jwe@octave.org>

	* variables.cc (symbol_record_name_compare): Fix casts.

	* ov-cell.cc (octave_cell::subsasgn): Call empty_conv for 0x0
	objects, not just empty objects.

	* oct-map.h (Octave_map::clear): Also clear key_list.

	* load-path.cc (load_path::find_dir_info, load_path::do_add,
	load_path::do_remove): Perform tilde expansion on directory here.

2006-07-29  John W. Eaton  <jwe@octave.org>

	* matrix.h: Delete to avoid conflict with liboctave/Matrix.h on
	case-insensitive filesystems.

	* version.h (OCTAVE_VERSION): Now 2.9.7+.

2006-07-28  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.7.
	(OCTAVE_API_VERSION): Now api-v20.
	(OCTAVE_RELEASE_DATE): Now 2006-07-28.

	* load-path.cc (path::do_add): Warn for trailing "//".

	* strfns.cc: Comment out some tests for snapshot.

2006-07-27  John W. Eaton  <jwe@octave.org>

	* defaults.cc (Vlocal_api_arch_lib_dir): New variable.
	(set_default_local_api_arch_lib_dir): New function.
	(install_defaults): Call it.
	(set_exec_path): Put Vlocal_api_arch_lib_dir in the list.
	* toplev.cc (localapiarchlibdir): Include it in the list.
	* defaults.h.in (OCTAVE_LOCALAPIARCHLIBDIR): Substitute here.

2006-07-26  John W. Eaton  <jwe@octave.org>

	* mex.cc (mxArray::as_octave_value (mxArray *)): New static function.
	(call_mex, mexPutVariable, mexCallMATLAB,
	mxArray_cell::as_octave_value, mxArray_struct::as_octave_value):
	Use static version of as_octave_value here.
	(mxArray_sparse::mxArray_sparse (const mxArray_sparse&)):
	Check pr, ir, and jc before calling memcpy.
	(mxArray_number::mxArray_number): Check pr before calling memcpy

	* mxarray.h (mxArray::as_octave_value (mxArray *)): Provide decl.
	(mxArray::as_octave_value): Now protected.

	* file-io.cc (Ffeof, Fferror): Use DEFUNX instead of DEFUN.

	* mex.cc (xfree): New function.
	(mex::free): Use it.
	(mxArray_struct::~mxArray_struct, mxArray_cell::~mxArray_cell):
	Delete elements with delete, not mxDestroyArray.
	(mex::cleanup): Don't call mex::free or mex::free_value.
	(mex::free_value): Add debug warning.
	(mex::mark, mex::unmark): Fix debug warning.
	(call_mex): Use unwind_protect frame.
	(mexUnlock): Use iterator to remove item from mex_lock_count.

	* octave.cc (maximum_braindamage): Use disable_warning instead of
	bind_internal_variable to disable function-name-clash warning.
	* error.cc (disable_warning): No longer static.
	* error.h: Provide decl.

2006-07-25  David Bateman  <dbateman@free.fr>

	* mex.cc (mxArray_octave_value::get_class_id): Handle sparse.
	(class mxArray_sparse): Derive from mxArray_matlab, not
	mxArray_number.
	(mxArray_sparse::as_octave_value): Implement function.
	* ov-bool-sparse.cc (octave_sparse_bool_matrix::as_mxArray):
	Implement function.
	* ov-cx-sparse.cc (octave_sparse_complex_matrix::as_mxArray):
	Implement function.	
	* ov-re-sparse.cc (octave_sparse_matrix::as_mxArray):
	Implement function.

2006-07-25  John W. Eaton  <jwe@octave.org>

	* mex.cc (mxArray_struct::as_octave_value, call_mex,
	mexCallMATLAB, mxArray_cell::as_octave_value):
	Convert NULL mxArray* pointers to empty matrix values.
	(mxArray_octave_value:get_ir): Fix typo.

2006-07-22  John W. Eaton  <jwe@octave.org>

	* mxarray.h: New file.
	* mex.h, mexproto.h, mex.cc: New implementation of mxArray and MEX
	interface.

	* ov.h (octave_value::mex_get_ir, octave_value::mex_get_jc):
	New functions.
	* ov-base.h (octave_base_value::mex_get_ir,
	octave_base_value::mex_get_jc): New virtual functions.
	* ov-base-sparse.h (octave_base_sparse<T>::mex_get_ir,
	octave_base_sparse<T>::mex_get_jc): New functions.

	* ov-intx.h (OCTAVE_VALUE_INT_SCALAR_T::as_mxArray,
	OCTAVE_VALUE_INT_MATRIX_T::as_mxArray): New functions.
	* ov-int8.h, ov-int16.h, ov-int32.h, ov-int64.h, ov-uint8.h,
	ov-uint16.h, ov-uint32.h, ov-uint64.h: Define OCTAVE_INT_MX_CLASS
	before including ov-intx.h.  Undef it after.
	* ov-range.cc (octave_range::as_mxArray): New function.
	* ov-range.h: Provide decl.
	* ov-scalar.cc (octave_scalar::as_mxArray): New function.
	* ov-scalar.h: Provide decl.
	* ov-complex.cc (octave_complex::as_mxArray): New function.
	* ov-complex.h: Provide decl.
	* ov-re-mat.cc (octave_matrix::as_mxArray): New function.
	* ov-re-mat.h: Provide decl.
	* ov-cx-mat.cc (octave_complex_matrix::as_mxArray): New function.
	* ov-cx-mat.h: Provide decl.
	* ov-ch-mat.cc (octave_char_matrix::as_mxArray): New function.
	* ov-ch-mat.h: Provide decl.
	* ov-bool-mat.cc (octave_bool_matrix::as_mxArray): New function.
	* ov-bool-mat.h: Provide decl.
	* ov-bool.cc (octave_bool::as_mxArray): New function.
	* ov-bool.h: Provide decl.

	* ov-struct.h (octave_struct::numel): New function.

	* ls-mat5.cc (arrayclasstype): Use "MAT_FILE_" instead of "mx" as
	prefix for element names.

	* ov.h (octave_value::as_mxArray): New function.
	* ov-base.cc (octave_base_value::as_mxArray): New function.
	* ov-base.h: Provide decl.

	* ov.h (octave_value::mex_get_data): New function.
	* ov-base.h (octave_base_value::mex_get_data): New function.
	* ov-base-scalar.h (octave_base_scalar<ST>::mex_get_data): New function.
	* ov-base-matrix.h (octave_base_matrix<MT>::mex_get_data): New function.
	* ov-intx.h (OCTAVE_VALUE_INT_SCALAR_T::mex_get_data): New function.

	* ov.h (octave_value::nfields): New function.
	* ov-base.cc (octave_base_value::nfields): New virtual function.
	* ov-base.h: Provide decl.
	* ov-struct.h (octave_struct::nfields): New function.

2006-07-19  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-bm-bm.cc (oct_assignop_conv_and_assign): New function.
	(install_bm_bm_ops): Install it for various types.
	* OPERATORS/op-bm-b.cc (oct_assignop_conv_and_assign): New function.
	(install_bm_b_ops): Install it for various types.
	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::bool_array_value,
	OCTAVE_VALUE_INT_SCALAR_T::bool_array_value): New functions.
	* ov-range.h (octave_range::bool_array_value): New function.
	* ov-re-sparse.cc (octave_sparse_matrix::bool_array_value):
	New function.
	* ov-re-sparse.h: Provide decl.
	* ov-re-mat.cc (octave_matrix::bool_array_value): New function.
	* ov-re-mat.h: Provide decl.

	* ov-base.cc (octave_base_value::numeric_assign):
	Avoid memory leak when converting LHS.

2006-07-18  John W. Eaton  <jwe@octave.org>

	* ov.h (octave_value::is_int8_type, octave_value::is_int16_type,
	octave_value::is_int32_type, octave_value::is_int64_type,
	octave_value::is_uint8_type, octave_value::is_uint16_type,
	octave_value::is_uint32_type, octave_value::is_uint64_type):
	New functions. 
	* ov-base.h (octave_base_value::is_int8_type,
	octave_base_value::is_int16_type,
	octave_base_value::is_int32_type,
	octave_base_value::is_int64_type,
	octave_base_value::is_uint8_type,
	octave_base_value::is_uint16_type,
	octave_base_value::is_uint32_type,
	octave_base_value::is_uint64_type): New functions.
	* ov-int8.h, ov-int16.h, ov-int32.h, ov-int16.h, ov-uint8.h,
	ov-uint16.h, ov-uint32.h, ov-uint16.h: Define OCTAVE_BASE_INT_T.
	* ov-intx.h: Use OCTAVE_BASE_INT_T to define type-specific predicate.

	* ov.h (octave_value::is_double_type, octave_value::is_single_type):
	New functions.
	* ov-base.h (octave_base_value::is_double_type,
	octave_base_value::is_single_type): New functions.
	* ov-re-mat.h (octave_matrix::is_double_type): New function.
	* ov-cx-mat.h (octave_matrix::is_double_type): New function.
	* ov-scalar.h (octave_scalar::is_double_type): New function.
	* ov-complex.h (octave_complex::is_double_type): New function.
	* ov-range.h (octave_range::is_double_type): New function.
	* ov-re-sparse.h (octave_sparse_matrix::is_double_type): New function.
	* ov-cx-sparse.h (octave_sparse_complex_matrix::is_double_type):
	New function.
	
2006-07-15  John W. Eaton  <jwe@octave.org>

	* ov-typeinfo.cc: Also instantiate arrays of assignany_ops.

	* oct-errno.cc.in (octave_errno::octave_errno): VALUE field in
	errno_struct no longer const.

	* DLD-FUNCTIONS/dispatch.cc (octave_dispatch::do_index_op):
	Declare	resize_ok arg as bool, not int.
	Provide default value for resize_ok.

2006-07-14  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (do_write): Include explicit instantiations.

	* ov-str-mat.h (octave_char_matrix_sq_str::resize):
	Include fill arg to match base class.
	* ov-struct.h (octave_struct::resize): Likewise.

	* ov-base-mat.cc, ov-base-mat.h, ov-base-sparse.cc,
	ov-base-sparse.h, ov-base.cc, ov-base.h, ov-bool.cc,
	ov-bool.h, ov-complex.cc, ov-complex.h, ov-intx.h, ov-list.cc,
	ov-list.h, ov-range.cc, ov-range.h, ov-scalar.cc, ov-scalar.h,
	ov-str-mat.cc, ov-str-mat.h, ov.h (do_index_op):
	Declare	resize_ok arg as bool, not int.
	Provide default value for resize_ok.

	* c-file-ptr-stream.h (c_file_ptr_stream::c_file_ptr_stream):
	Qualify init.

2006-07-13  John W. Eaton  <jwe@octave.org>

	* oct-map.h (Octave_map::del): Add missing std:: qualifier to use
	of find template.

2006-07-07  John W. Eaton  <jwe@octave.org>

	* ov.h (octave_value::is_bool_scalar): New function.
	* ov-base.h (octave_base_value::is_bool_scalar): New function.
	* ov-bool.h (octave_bool::is_bool_scalar): New function.

	* oct-map.cc (Octave_map::keys): Use assert.
	(Octave_map::assign): Avoid inserting new key in map unless
	assignment to cell succeeds.

	* oct-map.h (Octave_map::del): Only touch key_list if map contains key.
	Assert that key_list contains key.

	* oct-map.h (Octave_map::maybe_add_to_key_list): For efficiency,
	check map, not key_list.  From Paul Kienzle  <pkienzle@users.sf.net>.

2006-07-06  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Declare mrowsc volatile.

	* ov-struct.cc (octave_struct::print_raw): Print keys in key_list
	order.

	* oct-map.h (Octave_map::key_list): New data member.
	(Octave_map::maybe_add_to_key_list): New function.
	(Octave_map::key_list_iterator, Octave_map::const_key_list_iterator):
	New typedefs.
	(Octave_map::del): Also delete key from key_list.
	* oct-map.cc (Octave_map::keys): Compute return value from
	key_list instead of map.
	(Octave_map::assign, Octave_map::contents): Call maybe_add_to_key_list.
	* oct-map.h, oct-map.cc (Octave_map::Octave_map):
	Insert keys in key_list.

	* oct-map.h (Octave_map::Octave_map (const dim_vector&,
	const string_vector&)): New arg, key_list_arg.
	* oct-map.cc: Move definition here.

2006-07-05  John W. Eaton  <jwe@octave.org>

	* mex.cc (mexGetVariable): Rename from mexGetArray, swap arguments.
	(mexGetVariablePtr): Rename from mexGetArrayPtr, swap arguments.
	(mexErrMsgIdAndTxt, mexWarnMsgIdAndTxt): New functions.
	* mexproto.h: Provide decls.
	Include decls for as yet unsupported functions.
	* mex.h: Add enum for class ids.
	(mexGetArray): Define using mexGetVariable.
	(mexGetArrayPtr): Define using mexGetVariablePtr.

2006-07-02  John W. Eaton  <jwe@octave.org>

	* ov-str-mat.cc (CHAR_MATRIX_CONV): Omit "warn-" from label.
	* parse.y (maybe_warn_variable_switch_label): Likewise.

2006-07-01  John W. Eaton  <jwe@octave.org>

	* parse.y (finish_cell): Use finish_matrix to do constant folding.

2006-06-30  John W. Eaton  <jwe@octave.org>

	* ov-base.cc (octave_base_value::numeric_assign):
	Avoid memory leak when converting LHS.

	* oct-hist.cc (do_history, initialize_history, Fhistory_file):
	Don't perform tilde expansion on history file name.

	* syscalls.cc (Flstat, Fstat): Don't perform tilde expansion on arg.
	* input.cc (Fread_readline_init_file): Likewise.
	* dirfns.cc (Fcd, Freaddir): Likewise.

	* load-path.cc (genpath): Don't perform tilde expansion on name.
	(load_path::do_add): Don't warn about moving "." to front of list.

2006-06-28  John W. Eaton  <jwe@octave.org>

	* load-path.cc (Faddpath): Don't treat "." specially here.
	Don't check directory status here.
	(Fpath): Handle all args.  Don't treat "." specially here.
	(Faddpath, Frmpath): Delete unused variable xpath.
	(load_path::do_add): New function.
	(load_path::do_prepend, load_path::do_append): Use it.
	(load_path::do_remove): Really prevent removal of ".".
	(load_path::do_clear): Clearing doesn't remove ".".
	(load_path::append, load_path::prepend, load_path::do_append,
	load_path::do_prepend): New arg, warn.

	* load-path.h: Fix decls.

	* DLD-FUNCTIONS/regexp.cc (octregexp_list):
	Avoid bug in older versions of g++.

2006-06-27  John W. Eaton  <jwe@octave.org>

	* Makefile.in (clean): Also remove $(DLD_OBJ).

	* sighandlers.cc (install_signal_handlers): Don't handle SIGPROF.
	From Geoffrey Knauth <geoff@knauth.org>.

2006-06-25  John W. Eaton  <jwe@octave.org>

	* mk-pkg-add: Avoid apparently non-portable sed patterns.

2006-06-21  John W. Eaton  <jwe@octave.org>

	* variables.cc (do_who): Handle mex.

	* symtab.cc (SYMBOL_DEF::type_as_string, SYMBOL_DEF::which,
	symbol_table::clear_functions, table::clear_function,
	symbol_table::clear_function_pattern): 
	Handle mex.
	* symtab.h (symbol_record::is_mex_function,
	symbol_record::symbol_def::is_mex_function): New functions.
	(symbol_record::TYPE): New value, MEX_FUNCTION.
	(symbol_record::is_function, symbol_table::user_function_name_list,
	SYMTAB_ALL_TYPES): Handle MEX_FUNCTION.

	* ov-fcn.h (octave_function::octave_function):
	Provide default for doc string arg.

	* defun.cc (install_mex_function): New function.
	* defun-int.h: Provide decl.

	* ov-builtin.cc (any_arg_is_magic_colon): Delete.
	(octave_builtin::do_multi_index_op): Call has_magic_colon method
	for args instead of any_arg_is_magic_colon.

	* ov-base.h (octave_base_value::is_mex_function): New function.
	* ov.h (octave_value::is_mex_function): New function.

	* ov-mex-fcn.h, ov-mex-fcn.cc: New files.

	* parse.y (load_fcn_from_file): Also handle .mex files.

	* dynamic-ld.cc (octave_dynamic_loader::load_oct): Rename from load.
	(octave_dynamic_loader::do_load_oct): Rename from do_load.
	* dynamic-ld.h: Fix decls.

	* utils.cc (mex_file_in_path): New function.
	* utils.h: Provide decl.

	* variables.cc (symbol_out_of_date): Also handle mex files.

	* load-path.cc (load_path::dir_info::get_file_list,
	load_path::dir_info::get_private_function_map,
	load_path::do_find_fcn, load_path::add_to_fcn_map,
	load_path::do_display): Also handle mex files.
	* load-path.h (load_path::find_mex_file): New static function.
	(load_path::MEX_FILE): New static data member.
	(load_path::do_find_fcn): By default, also look for mex files.

	* matrix.h, mex.h, mex.cc: New files from Octave Forge
	* mexproto.h: New file, extracted from mex.h.
	* Makefile.in: Add them to the appropriate lists.

2006-06-20  John W. Eaton  <jwe@octave.org>

	* ov-re-mat.cc (octave_matrix::convert_to_str_internal):
	Don't lose empty dimensions on conversion to char.

	* strfns.cc (Fstrcmp): Handle comparison of cellstr and empty string.

2006-06-16  John W. Eaton  <jwe@octave.org>

	* parse.y (%union): New type, anon_fcn_handle_type.
	(anon_fcn_handle): Now anon_fcn_handle_type, not tree_constant_type.
	(make_anon_fcn_handle):	Return tree_anon_fcn_handle, not tree_constant.

	* comment-list.cc (octave_comment_list::dup): New function.
	* comment-list.h: Provide decl.

	* pt-cmd.cc (tree_no_op_command::dup): New function.
	* pt-cmd.h: Provide decl.
	(tree_command::dup): New pure virtual function.

	* pt-loop.cc (tree_while_command::dup, tree_do_until_command::dup,
	tree_simple_for_command::dup, tree_complex_for_command::dup):
	New functions.
	* pt-loop.h: Provide decls.

	* pt-jump.cc (tree_break_command::dup, tree_continue_command::dup,
	tree_return_command::dup): New functions.
	* pt-jump.h: Provide decls.

	* pt-except.cc (tree_try_catch_command::dup,
	tree_unwind_protect_command::dup): New functions.
	* pt-except.h: Provide decls.

	* pt-select.cc (tree_if_clause::dup, tree_if_command_list::dup,
	tree_if_command::dup, tree_switch_case::dup,
	tree_switch_case_list::dup, tree_switch_command::dup):
	New functions.
	* pt-select.h: Provide decls.

	* pt-decl.cc (tree_decl_elt::dup, tree_decl_init_list::dup,
	tree_global_command::dup, tree_static_command::dup): New functions.
	* pt-decl.h: Provide decls.
	
	* pt-exp.h (tree_expression::copy_base): New function.
	(tree_expression::dup): New pure virtual function.
	
	* pt-fcn-handle.cc, pt-fcn-handle.h (tree_anon_fcn_handle): New class.

	* pt-fcn-handle.cc (tree_function_handle::dup): New function.
	* pt-fcn-handle.h: Provide decl.

	* pt-colon.cc (tree_colon_expression::dup): New function.
	* pt-colon.h: Provide decl.
	(tree_colon_expression::tree_colon_expression (tree_expression *,
	tree_expression *, tree_expression *, int, int)): New constructor.
	
	* pt-const.cc (tree_constant::dup): New function.
	(tree_constant::tree_constant (const octave_value&, const
	std::string&, int, int)): New constructor.
	* pt-const.h: Provide decls.

	* pt-idx.cc (tree_index_expression::dup): New functoin.
	(tree_index_expression::tree_index_expression (int, int)):
	New constructor.
	* pt-idx.h: Provide decls.

	* pt-arg-list.cc (tree_argument_list::dup): New function.
	* pt-arg-list.h: Provide decl.

	* pt-id.cc (tree_identifier::dup): New function.
	* pt-id.h: Provide decl.

	* pt-cell.cc (tree_cell::dup): New function.
	* pt-cell.h: Provide decl.

	* pt-mat.cc (tree_matrix::dup): New function.
	* pt-mat.h: Provide decl.

	* pt-assign.cc (tree_simple_assignment::dup,
	tree_multi_assignment::dup): New functions.
	* pt-assign.h: Provide decls.

	* pt-binop.cc (tree_binary_expression::dup,
	tree_boolean_expression::dup): New functions.
	* pt-binop.h: Provide decls.
	
	* pt-unop.cc (tree_prefix_expression::dup,
	tree_postfix_expression::dup): New functions.
	* pt-unop.h: Provide decls.

	* pt-stmt.cc (tree_statement::dup, tree_statement_list::dup):
	New functions.
	* pt-stmt.h: Provide decls.

	* pt-misc.cc (tree_parameter_list::dup,
	tree_return_list::dup): New functions.
	* pt-misc.h: Provide decls.

	* symtab.cc (symbol_table::dup, symbol_table::inherit,
	symbol_record:is_automatic_variable): New functions.
	* symtab.h: Provide decls.
	(symbol_record::automatic_variable): New data member.
	(symbol_record::symbol_record): Initialize it.
	(symbol_record::mark_as_automatic_variable): New function.

	* pt-walk.h (tree_walker::visit_anon_fcn_handle):
	New pure virtual function.
	* pt-pr-code.cc (tree_print_code::visit_anon_fcn_handle): New function.
	* pt-pr-code.h: Provide decl.
	* pt-bp.cc (tree_breakpoint::visit_anon_fcn_handle): New function.
	* pt-bp.h: Provide decl.
	* pt-check.cc (tree_checker::visit_anon_fcn_handle): New function.
	* pt-check.h: Provide decl.

2006-06-13  John W. Eaton  <jwe@octave.org>

	* pt-stmt.cc (tree_statement_list::eval): Revise previous change
	to preserve return-last-value-computed semantics.

	* DLD-FUNCTIONS/fsolve.cc (hybrd_info_to_fsolve_info):
	Warn about invalid values of INFO from MINPACK instead of calling
	panic_impossible.

	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Don't assign values returned by evaluation of cmd_list to
	temporary variable.  Delete unused variable last_computed_value.  

	* pt-stmt.cc (tree_statement_list::eval):
	Clear retval before each statement is evaluated.

2006-06-12  John W. Eaton  <jwe@octave.org>

	* unwind-prot.h (unwind_protect_fptr): New macro.
	* load-path.cc (load_path::do_set): Use it instead of
	unwind_protect_ptr when protecting add_hook function pointer.
	* dynamic-ld.cc (octave_dynamic_loader::do_load): Use FCN_PTR_CAST
	here instead of reinterpret_cast.

2006-06-09  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.6+.

2006-06-09  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.6.
	(OCTAVE_API_VERSION): Now api-v19.
	(OCTAVE_RELEASE_DATE): Now 2006-06-09.

	* ov-cell.cc (cell::save_hdf5): Use leading zeros to keep elements
	correctly sorted in the HDF file.
	From Stephen Fegan <sfegan@astro.ucla.edu>.

2006-06-08  John W. Eaton  <jwe@octave.org>

	* ov-usr-fcn.cc (function::do_multi_index_op): Append contents of
	varargout to ret_list before calling convert_to_const_vector.

	* pt-arg-list.cc (tree_argument_list::convert_to_const_vector):
	No need to handle all_va_args here.

	* ov-va-args.h, ov-va-args.cc: Delete files.
	* Makefile.in (OV_INCLUDES, OV_SRC): Delete from the lists.

	* ov.cc (install_types): Don't register octave_all_va_args type.
	* ov.h, ov.cc (octave_value::octave_value (octave_value::all_va_args)):
	Delete.
	* ov.h (octave_value::is_all_va_args): Delete.
	(octave_value::enum all_va_args): Delete.

	* pt-pr-code.cc	(tree_print_code::visit_octave_user_function_header):
	Print "varargout" and "varargin" instead of "...".

	* pt-misc.h, pt-misc.cc	(tree_parameter_list::convert_to_const_vector):
	Arg is now const Cell& instead of tree_va_return_list*.

	* ov-usr-fcn.h, ov-usr-fcn.cc (octave_user_function::vr_list,
	octave_user_function::curr_va_arg_number):
	Delete variables and all uses.
	(octave_function::octave_va_start, octave_function::octave_va_arg,
	octave_function::octave_vr_val,	octave_function::has_varargout):
	Delete functions and all uses.

	* ov-fcn.h (octave_function::octave_va_start,
	octave_function::octave_va_arg, octave_function::octave_vr_val,
	octave_function::has_varargout): Delete.

	* ov-usr-fcn.cc (Fva_arg, Fva_start, Fvr_val): Delete.

	* lex.l ({EL}): Don't handle "..." as varargin or varargout.
	* octave.gperf (all_va_args, ALL_VA_ARGS, all_va_args_kw): Delete.
	* parse.y (ALL_VA_ARGS): Delete token and all uses.

	* defaults.h.in (OCTAVE_DATAROOTDIR): Substitute here.
	* toplev.cc (octave_config_info): Add datarootdir to the struct.

2006-06-07  John W. Eaton  <jwe@octave.org>

	* ov-cell.cc (octave_cell::subsasgn): Handle c-s list object on
	RHS if last index is '{'.
	* pt-assign.cc (tree_multi_assignment::rvalue): Compute all LHS
	lvalues before evaluating RHS.  If LHS lvalue expects more than
	one output, pass octave_cs_list object to assign method.
	* pt-idx.cc (tree_index_expression::lvalue): Compute expected
	number of values if '{' index appears last.
	* pt-arg-list.cc (tree_argument_list::lvalue_list): New function.
	* pt-arg-list.h (tree_argument_list::lvalue_list): Provide decl.
	* oct-lvalue.h (octave_lvalue::nel): New data member.
	(octave_lvalue::numel): New functions
	* oct-obj.cc (octave_value_list::has_magic_colon): New function.
	* oct-obj.h (octave_value_list::has_magic_colon): Provide decl.
	* pt-arg-list.cc (tree_argument_list::nargout_count): Delete function.
	* pt-arg-list.h (tree_argument_list::nargout_count): Delete decl.

2006-06-06  John W. Eaton  <jwe@octave.org>

	* sighandlers.cc (generic_sig_handler, sigint_handler):
	Use strsignal instead of accessing sys_siglist directly.
	* siglist.h: Use HAVE_DECL_SYS_SIGLIST instead of SYS_SIGLIST_DECLARED.
	* siglist.c: Update sys_siglist.
	(init_signals, strsignal): New functions.
	* octave.cc (octave_main): Call init_signals here.

	* toplev.cc (Foctave_config_info): Delete LIBPLPLOT from struct.

2006-06-05  John W. Eaton  <jwe@octave.org>

	* pt-assign.cc (Vprint_rhs_assign_val): Delete variable.
	(Fprint_rhs_assign_val): Delete function.
	tree_simple_assignment::rvalue, tree_multi_assignment::rvalue):
	No special case for Vprint_rhs_assign_val.

2006-06-02  John W. Eaton  <jwe@octave.org>

	* pt-arg-list.h (tree_argument_list::mark_as_simple_assign_lhs,
	tree_argument_list::is_simple_assign_lhs): New functions.
	(tree_argument_list::simple_assign_lhs): New data member.
	* parse.y (assign_lhs): Classify LHS here.
	(make_assign_op): Create simple or multi assign op based on
	classification of LHS, not its length.

2006-06-01  John W. Eaton  <jwe@octave.org>

	* Makefile.in (DLD_XSRC): Add __pchip_deriv__.cc to the list.

2006-06-01  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/__pchip_deriv__.cc: New file.

2006-05-31  John W. Eaton  <jwe@octave.org>

	* load-path.h (load_path::set_command_line_path): Make it
	additive.

2006-05-26  John W. Eaton  <jwe@octave.org>

	* load-path.cc (genpath, maybe_add_path_elts, Fgenpath, Frehash,
	Fpath, Fpathdef): Move here from defaults.cc.
	* load-path.cc, load-path.h: New files.
	* Makefile.in (INCLUDES, DIST_SRC): Add them to the lists.
	* help.cc (make_name_list, simple_help): Use load_path instead of
	octave_fcn_file_name_cache.
	(Flookfor): Use load_path instead of Vload_path_dir_path.
	* octave.cc (octave_main):  Likewise.
	* parse.y (load_fcn_from_file): Likewise.
	* utils.cc (Ffile_in_loadpath, file_in_path, fcn_file_in_path,
	oct_file_in_path): Likewise.
	* variables.cc (symbol_exist, symbol_out_of_date): Likewise.
	* DLD-FUNCTIONS/fftw_wisdom.cc (Ffftw_wisdom): Likewise.
	* utils.cc (Ffind_first_of_in_loadpath): Delete.
	* input.cc (octave_gets): Call load_path::update here.
	* dirfns.cc (octave_change_to_directory): Likewise.
	* defaults.cc (VLOADPATH, VDEFAULT_LOADPATH, Vload_path_dir_path,
	maybe_add_or_del_packages, update_load_path_dir_path,
	execute_default_pkg_add_files, set_load_path): Delete.
	* defaults.h.in (Vload_path_dir_path,
	execute_default_pkg_add_files, maybe_add_default_load_path,
	set_load_path): Delete decls.

	* fn-cache.h, fn-cache.cc: Delete.
	* Makefile.in (INCLUDES, DIST_SRC): Remove them from the lists.

	* input.cc (octave_gets): Only update Vlast_prompt_time if we are
	interactive and actually printing a prompt.  Don't print prompt if
	reading startup files or command line files.  Initialize
	Vlast_prompt_time to 0.

	* pr-output.cc (set_format): Always include space for sign.
	
2006-05-23  John W. Eaton  <jwe@octave.org>

	* load-save.cc (Fsave): Use tellp instead of pubseekoff to
	determine whether we are at beginning of file.

	* ov-intx.h (OCTAVE_VALUE_INT_SCALAR_T::increment, 
	OCTAVE_VALUE_INT_SCALAR_T::decrement,
	OCTAVE_VALUE_INT_MATRIX_T::increment,
	OCTAVE_VALUE_INT_MATRIX_T::decrement): New functions.
	* OPERATORS/op-int.h (OCTAVE_INSTALL_M_INT_UNOPS,
	OCTAVE_INSTALL_S_INT_UNOPS, OCTAVE_M_INT_UNOPS,
	OCTAVE_S_INT_UNOPS): Uncomment increment and decrement ops.

2006-05-19  John W. Eaton  <jwe@octave.org>

	* symtab.cc (SYMBOL_DEF::document): If definition is a function,
	also pass doc string to function object.
	* ov-fcn.h (octave_function::document): New function.
	* defun.cc (print_usage (octave_function *)): New function.
	(print_usage (void)): New function.
	(print_usage (const std::string&)): Provide for backward
	compatibility.  Ignore arg.
	(Fprint_usage): Don't accept arg.
	* defun-int.h (print_usage (void)): Provide decl.
	(print_usage (const std::string&)): Tag with GCC_ATTR_DEPRECATED.

2006-05-04  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/conv2.cc: New file from Octave Forge.
	* Makefile.in (DLD_XSRC): Add it to the list

2006-05-17  Bill Denney  <bill@givebillmoney.com>

	* help.cc (keywords): Improve and Texinfoize.

2006-05-17  John W. Eaton  <jwe@octave.org>

	* symtab.cc (Vwhos_line_format): Show class instead of type.
	(symbol_table::parse_whos_line_format):
	Use 't' for "Type" and 'c' for "Class".
	(symbol_record::print_symbol_info_line): Likewise.
	(maybe_list_cmp_fcn): Fix casts.

2006-05-11  John W. Eaton  <jwe@octave.org>

	* octave.cc (IMAGE_PATH_OPTION): New macro.
	(usage_string, verbose_usage): Include --image-path option.
	(long_opts): Include --image-path.
	(octave_main): Handle IMAGE_PATH_OPTION.

	* toplev.cc (Foctave_config_info): Delete fcnfilepath, imagepath,
	localfcnfilepath, and localoctfilepath from the struct.
	* defaults.h.in (OCTAVE_FCNFILEPATH, OCTAVE_IMAGEPATH,
	OCTAVE_LOCALFCNFILEPATH, OCTAVE_LOCALOCTFILEPATH): Delete variables.

	* octave.cc (octave_main): Call set_exec_path and set_load_path
	instead of bind_internal_variable.

	* defaults.cc (Fpathdef): Rename from FDEFAULT_LOADPATH.
	Don't allow default path to be set.
	(Fpath): Rename from FLOADPATH.  Make Matlab-compatible.
	(update_load_path_dir_path): No need to pass VDEFAULT_LOADPATH to
	dir_path constructor now.
	(update_exec_path, FDEFAULT_EXEC_PATH,
	set_default_default_exec_path, set_default_exec_path,
	maybe_add_default_load_path): Delete functions.
	(VDEFAULT_EXEC_PATH): Delete variable.
	(FEXEC_PATH): Leading and trailing colons no longer special.
	(set_exec_path, set_load_path, set_image_path,
	maybe_add_path_elts): New functions.
	(install_defaults): Call set_exec_path and set_load_path instead
	of set_default_exec_path and set_default_path.  Don't call
	set_default_default_exec_path.  Do call set_image_path.
	* defaults.cc (genpath, Fgenpath): New functions.
	(Vlocal_ver_oct_file_dir, Vlocal_api_oct_file_dir,
	Vlocal_oct_file_dir, Vlocal_ver_fcn_file_dir,
	Vlocal_api_fcn_file_dir, Vlocal_fcn_file_dir, Vimage_dir):
	New variables.
	(set_default_local_ver_oct_file_dir,
	set_default_local_api_oct_file_dir,
	set_default_local_oct_file_dir,
	set_default_local_ver_fcn_file_dir,
	set_default_local_api_fcn_file_dir,
	set_default_local_fcn_file_dir, set_default_image_dir):
	New functions.
	(install_defaults): Call them.
	* defaults.h.in (set_exec_path, set_load_path, set_image_path,
	Vlocal_ver_oct_file_dir, Vlocal_api_oct_file_dir,
	Vlocal_oct_file_dir, Vlocal_ver_fcn_file_dir,
	Vlocal_api_fcn_file_dir, Vlocal_fcn_file_dir,
	Vlocal_fcn_file_dir, Vimage_dir): Provide decls.

2006-05-10  John W. Eaton  <jwe@octave.org>

	* ov-cell.cc (Fcellstr): Trim trailing blanks.
	* Cell.h (Cell::Cell (const string_vector&)): New arg, TRIM.

	* oct-hist.cc (initialize_history, Fhistory_size):
	Also call command_history::set_size here.

	* defun.cc (Fprint_usage): New function.
	* help.cc (display_usage_text): New function.

2006-05-09  Keith Goodman  <kwgoodman@gmail.com>

	* DLD-FUNCTIONS/rand.cc: Doc string fix.

2006-05-09  Jorge Barros de Abreu  <ficmatin01@solar.com.br>

	* data.cc (FInf, FNaN): Fix typo in doc string.

2006-05-08  John W. Eaton  <jwe@octave.org>

	* Makefile.in (DEFUN_PATTERN): Match DEFUNX_DLD.
	* mkbuiltins: Handle XDEFUNX_DLD_INTERNAL.
	* mkgendoc: Likewise.
	* mk-pkg-add: Likewise.  Do all the matching with sed.
	* defun-int.h 	(DEFINE_FUNX_INSTALLER_FUN, DEFINE_FUNX_INSTALLER_FUN2,
	DEFINE_FUNX_INSTALLER_FUN3): New macros.
	(DEFINE_FUN_INSTALLER_FUN3): Define using DEFINE_FUNX_INSTALLER_FUN3.
	(DEFUNX_DLD_INTERNAL): New macro.
	* defun-dld.h (DEFUNX_DLD): New macro.

	* DLD-FUNCTIONS/__gnuplot_raw__.l: Mark __gnuplot_set__ as a
	command, not a rawcommand.

	* load-save.cc: No need to handle built-in variables.
	* help.cc (simple_help): No need to handle built-in variables.

	* variables.cc (is_builtin_variable, builtin_string_variable,
	builtin_real_scalar_variable, builtin_any_variable):
	Delete functions.
	(Fexist, Fdocument, do_who, Fwho, link_to_builtin_or_function): 
	No need to handle built-in variables.
	* variables.h (is_builtin_variable, builtin_string_variable,
	builtin_real_scalar_variable, builtin_any_variable): Delete decls.

	* symtab.h (symbol_record::symbol_def::is_builtin_variable,
	symbol_record::is_builtin_variable): Delete.
	(symbol_record::TYPE): Remove BUILTIN_VARIABLE from enum.
	(symbol_record::symbol_def::is_variable, SYMTAB_ALL_TYPES,
	SYMTAB_VARIABLES): No need to handle built-in variables now.
	(symbol_record::define_builtin_variable,
	symbol_record::link_to_builtin_variable): Delete decls.
	* symtab.cc (record::define, SYMBOL_DEF::type,
	SYMBOL_DEF::type_as_string): No need to handle built-in variables.
	(symbol_record::define_builtin_variable): Delete.
	(symbol_record::variable_reference): No need to attemp to link to
	built-in variable.

	* utils.cc (check_preference, warn_old_style_preference): Delete.
	* utils.h (check_preference): Delete decl.

	* defun-int.h: Delete all DEFVAR macros.

	* Makefile.in, mkbuiltins: No need for VAR_FILES.

	* parse.y (current_script_file_name): Delete all uses.
	(clear_current_script_file_name): Delete function.

	* variables.cc (symbols_of_variables): Delete DEFVAR and function.
	(bind_ans): Lookup ans in curr_sym_tab, not fbi_sym_tab.
	SR is no longer static, so we insert value in local scope.

	* defun.cc (bind_builtin_variable): Delete function.
	* defun-int.h: Delete decl.

	* defaults.cc (fftw_wisdom_program): Rename from fftw_wisdom_prog.
	Change all uses.
	(VDEFAULT_LOADPATH): Rename from Vdefault_load_path.  Change all uses.
	(VLOADPATH): Rename from Vload_path.  Change all uses.
	(VDEFAULT_EXECPATH): Rename from Vdefault_exec_path.  Change all uses.
	(VEXECPATH): Rename from Vexec_path.  Change all uses.
	(VEDITOR): Rename from Veditor.  Change all uses.
	(Ffftw_wisdom_program, FDEFAULT_LOADPATH, FLOADPATH,
	FDEFAULT_EXEC_PATH, FEXEC_PATH, FEDITOR, FIMAGEPATH): New functions.
	(fftw_wisdom_program, default_load_path, loadpath,
	default_exec_path, exec_path, editor, image_path): Delete functions.
	(symbols_of_defaults): Delete DEFVARs and function.

	* pr-output.cc (set_output_prec_and_fw): Set Voutput_precision and
	Voutput_max_field_width directly instead of calling
	bind_builtin_variable.

	* octave.cc (octave_main, maximum_braindamage):
	Call bind_internal_variable instead of bind_builtin_variable.

	* pager.cc (Fmore): Set Vpage_screen_output directly instead of
	calling bind_builtin_variable.

	* error.cc (Fwarning): Set Vdebug_on_warning directly instead of
	calling bind_builtin_variable.

	* error.cc (initialize_warning_options): Now static.
	(disable_warning, initialize_default_warning_state): New functions.

	* error.h (initialize_warning_options): Delete decl.
	(initialize_default_warning_state): Provide decl.
	* octave.cc (octave_main): Call initialize_default_warning_state
	instead initialize_warning_options.

	* lex.l (warn_matlab_incompatible, warn_separator_insert,
	warn_single_quote_string): Delete functions.
	(symbols_of_lex): Delete DEFVARS.
	(Vwarn_matlab_incompatible, Vwarn_separator_insert,
	Vwarn_single_quote_string): Delete variables.
	(maybe_warn_separator_insert, gripe_single_quote_string,
	gripe_matlab_incompatible): Call warning_with_id instead of warning.

	* variables.h (SET_NONEMPTY_INTERNAL_STRING_VARIABLE,
	SET_INTERNAL_VARIABLE_WITH_LIMITS): New macros.

	* ls-oct-ascii.cc (Fsave_precision): New function.
	(save_precision): Delete function.
	(symbols_of_ls_oct_ascii): Delete DEFVAR and function.

	* oct-hist.cc (initialize_history): New function.
	* oct-hist.h: Provide decl.
	* octave.cc (octave_main): Call initialize_history instead of
	command_history::read.

	* oct-hist.cc (Fhistory_size, Fhistory_file,
	Fhistory_timestamp_format_string, Fsaving_history): New functions.
	(history_size, history_file, history_timestamp_format_string,
	saving_history): Delete functions.
	(symbols_of_oct_hist): Delete DEFVARs and function.

	* pt-mat.cc (Fstring_fill_char): New function.
	(string_fill_char): Delete function.
	(symbols_of_pt_mat): Delete DEFVAR and function.

	* variables.cc (Fignore_function_time_stamp, ans): New functions.
	(ignore_function_time_stamp): Delete function.
	(symbols_of_variables): Delete DEFVARs and function.

	* oct-procbuf.cc: (Vkluge_procbuf_delay): Delete variable.
	(octave_procbuf::open): Never delay after fork.
	(kluge_procbuf_delay): Delete function.
	(symbols_of_oct_procbuf): Delete DEFVAR and function.

	* dirfns.cc (Fconfirm_recursive_rmdir): New function.
	(confirm_recursive_rmdir): Delete function.
	(symbols_of_dirfns): Delete DEFVAR and function.

	* error.cc (initialize_warning_options): Now extern.
	Rename from init_warning_options. 
	* error.h: Provide decl.
	* octave.cc (octave_main): Call it here.

	* error.cc (Fbeep_on_error, Fdebug_on_error, Fdebug_on_warning):
	New functions.
	(beep_on_error, debug_on_error, debug_on_warning): Delete Functions.
	(symbols_of_error): Delete DEFVARs and function.

	* help.cc (Finfo_file, Finfo_program, Fmakeinfo_program,
	Fsuppress_verbose_help_message): New function.
	(info_file, info_program, makeinfo_program,
	suppress_verbose_help_message): Delete function.
	(symbols_of_help): Delete DEFVARs and function.
	(Vinfo_program): Rename from Vinfo_prog.  Change all uses.

	* input.cc (FPS1, FPS2, FPS4, Fcompletion_append_char,
	Fecho_executing_commands): New functions.
	(ps1, ps2, ps4, completion_append_char, echo_executing_commands):
	Delete functions.
	(symbols_of_input): Delete DEFVARs and function.
	(VPS1, VPS2, VPS4): Rename from Vps1, Vps2, Vps4.  Change all uses.
	(Fecho): Set Vecho_executing_commands directly.

	* load-save.cc (crash_dumps_octave_core, Fdefault_save_options,
	Foctave_core_file_limit, Foctave_core_file_name,
	Foctave_core_file_options, Fsave_header_format_string):	
	New functions.
	(crash_dumps_octave_core, default_save_options,
	octave_core_file_limit, octave_core_file_name,
	octave_core_file_options, save_header_format_string):	
	Delete functions. 
	(symbols_of_load_save): Delete DEFVARs and function.

	* ov-base.cc (Fprint_answer_id_name, Fsilent_functions): New functions.
	(print_answer_id_name, silent_functions): Delete functions.
	(symbols_of_ov_base): Delete DEFVARs and function.

	* ov-usr-fcn.cc (Fmax_recursion_depth): New function.
	(max_recursion_depth): Delete function.
	(symbols_of_ov_usr_fcn): Delete DEFVAR for max_recursion_depth.
	Delete function.

	* pager.cc (Fpage_output_immediately, Fpage_screen_output, FPAGER):
	New functions.
	(page_output_immediately, page_screen_output, pager_binary):
	Delete functions.
	(symbols_of_pager): Delete DEFVARs and function.
	(VPAGER): Rename from Vpager_binary.  Change all uses.

	* pr-output.cc (Ffixed_point_format, Fprint_empty_dimensions,
	Fsplit_long_rows, Foutput_max_field_width, Foutput_precision,
	Fstruct_levels_to_print): New functions.
	(fixed_point_format, print_empty_dimensions, split_long_rows,
	output_max_field_width, output_precision, struct_levels_to_print):
	Delete functions.
	(symbols_of_pr_output): Delete DEFVARs and function.

	* pt-assign.cc (Fprint_rhs_assign_val): New function.
	(print_rhs_assign_val): Delete function.
	(symbols_of_pt_assign): Delete DEFVAR.  Delete function.

	* sighandlers.cc (Fdebug_on_interrupt, Fsighup_dumps_octave_core,
	Fsigterm_dumps_octave_core): New functions.
	(debug_on_interrupt, sighup_dumps_octave_core,
	sigterm_dumps_octave_core): Delete functions.
	(symbols_of_sighanlders): Delete DEFVARs.  Delete function.

	* symtab.cc (Vdebug_symtab_lookups): Now bool.
	(Fdebug_symtab_lookups, Fwhos_line_format,
	Fvariables_can_hide_functions): New functions.
	(debug_symtab_lookups, whos_line_format,
	variables_can_hide_functions): Delete functions.
	(symbols_of_symtab): Delete DEFVARs and function.

2006-05-04  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/sqqr (Fdmperm): Allow compilation with versions
	v2.0.0 of CXSparse or later.

2006-05-04  John W. Eaton  <jwe@octave.org>

	* variables.cc (set_internal_variable): Move here from
	DLD-FUNCTIONS/__gnuplot_raw__.l.
	* variables.h (SET_INTERNAL_VARIABLE): Likewise.
	(set_internal_variable): Provide decls.

	* DLD-FUNCTIONS/__gnuplot_raw__.l: Convert all DEFVARs to DEFUN_DLDs.
	(gnuplot::init): Delete.
	(gnuplot::gnuplot): Don't call init here.
	(set_internal_variable): New functions.
	(SET_INTERNAL_VARIABLE): New macro.

	* Makefile.in: Undo changes of 2006-03-16.
	* DLD-FUNCTINS/__gnuplot_raw__.l: Move here from __gnuplot_raw__.l.
	Undo changes of 2006-03-16.

2006-05-03  David Bateman  <dbateman@free.fr>

	* ov-base-mat.h: Add caching of matrix type, and code to supply
	and copy matrix type.
	* ov-bool-mat.h: Add caching to constructor.
	* ov-re-mat.h: ditto.
	* ov-cx-mat.h: ditto.
	* ov.cc: Add to the BoolMatrix, Matrix and the ComplexMatrix
	octave_value constructors, the ability to specify the matrix type.
	* ov.h: Adapt declaration of above constructors.
	(MatrixType matrix_type(void) const, MatrixType matrix_type (const
	MatrixType&)): New functions for probing and setting matrix type.
	* ov-base.cc (virtual MatrixType matrix_type(void) const, virtual
	MatrixType matrix_type (const MatrixType&)): New default functions
	for probing and setting matrix type.
	* ov-base.h  (virtual MatrixType matrix_type(void) const, virtual
	MatrixType matrix_type (const MatrixType&)): Declarations.
	* ov-base-sparse.h: Replace all uses of SparseType with
	MatrixType. Replace sparse_type function with matrix_type function.
	* ov-bool-sparse.h: Replace all uses of SparseType with MatrixType.
	* ov-cx-sparse.h: ditto.
	* ov-re-sparse.h: ditto.
	* sparse-xdiv.cc: ditto.
	* sparse-xdiv.h: ditto.
	* sparse-xpow.cc: ditto.
	* DLD-FUNCTIONS/luinc.cc: ditto.
	* DLD-FUNCTIONS/splu.cc: ditto.
	* xdiv.cc (xdiv, xleftdiv): Pass the matrix type, simplfy since
	the matrix solve function now calls lssolve if singular.
	* xdiv.h (xdvi, xleftdiv): Update the declarations
	* OPERATORS/op-cm-cm.cc, OPERATORS/op-cm-cs.cc,
	OPERATORS/op-cm-m.cc, OPERATORS/op-cm-s.cc,
	OPERATORS/op-cm-scm.cc, OPERATORS/op-cm-sm.cc, 
	OPERATORS/op-cs-cm.cc, OPERATORS/op-cs-m.cc,
	OPERATORS/op-m-cm.cc, OPERATORS/op-m-cs.cc, 
	OPERATORS/op-m-m.cc, OPERATORS/op-m-s.cc, 
	OPERATORS/op-m-scm.cc, OPERATORS/op-m-sm.cc, 
	OPERATORS/op-s-cm.cc, OPERATORS/op-s-m.cc, 
	OPERATORS/op-scm-cm.cc, OPERATORS/op-scm-m.cc, 
	OPERATORS/op-sm-cm.cc, OPERATORS/op-sm-m.cc: Update use of
	xdiv and xleftdiv functions to allow matrix type caching.
	* DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): Update to allow typing
	 of Matrix, and ComplexMatrix types. Add new test code for this.

	* DLD-FUNCTIONS/cellfun.cc (Fmat2cell): new function.

	* DLD-FUNCTIONS/regexp.cc (class regexp_elem): New class to store
	matched element in a std::list.
	(octregexp_list): Take algorithm from octregexp and construct a 
	list of matches.
	(octregexp): Rewrite to use linked list of matches.
	(Fregexprep): New function, working directly in linked list of
	matches.
	
2006-05-02  John W. Eaton  <jwe@octave.org>

	* lex.l ({CCHAR}): Exit rawcommand mode if returning '\n' token.

2006-05-02  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/rand.cc (do_rand): Require real scalar for seed.

2006-05-01  John W. Eaton  <jwe@octave.org>

	* error.h (Vwarning_option): Delete.
	* variables.cc (looks_like_struct): Remove use from commented code.

	* gripes.cc, gripes.h (gripe_implicit_conversion): New arg, ID.
	Change all uses.

	* defaults.cc (set_local_site_defaults_file, set_site_defaults_file):
	Allow filenames to be set from the environment.

	* oct-map.cc (octave_map::resize): No longer const.
	* ov-struct.h (octave_struct::resize): Deal with it.

	* octave.cc (initialize_error_handlers): Also call
	set_liboctave_warning_with_id_handler.
	(execute_startup_files): Check that home_rc is not an empty string.
	(F__version_info__): Resize vinfo before assigining elements.

	* ov-base.cc (warn_num_to_str, warn_resize_on_range_error):
	Delete functions.
	(symbols_of_ov_base): Delete DEFVARS.
	(Vwarn_num_to_str, Vwarn_resize_on_range_error): Delete variables.
	(value::convert_to_str): Check state of warning ID
	Octave:num-to-str instead of using Vwarn_num_to_str.
	* OPERATORS/op-chm.cc: Likewise.
	* ov-base.h (Vwarn_num_to_str, Vwarn_resize_on_range_error):
	Delete decls.

	* ov-list.cc (octave_list::assign): Call warning_with_id instead
	of warning.

	* parse.y (warn_assign_as_truth_value, warn_associativity_change,
	warn_function_name_clash, warn_future_time_stamp,
	warn_missing_semicolon, warn_precedence_change,
	warn_variable_switch_label, symbols_of_parse):	
	Delete DEFVARs and functions.
	(Vwarn_assign_as_truth_value, Vwarn_associativity_change,
	Vwarn_function_name_clash, Vwarn_future_time_stamp,
	Vwarn_missing_semicolon, Vwarn_precedence_change,
	Vwarn_variable_switch_label): Delete variables.
	* parse.h (Vwarn_future_time_stamp): Delete decl.
	* parse.y (fold): Check state of warning ID
	Octave:associativity-change and Octave:precedence-change instead
	of using Vwarn_associativity_change and Vwarn_precedence_change.
	(maybe_warn_associativity_change, maybe_warn_missing_semi,
	maybe_warn_assign_as_truth_value, make_binary_op, make_boolean_op,
	frob_function): Call warning_with_id instead of warning.	
	* dynamic-ld.cc (octave_dynamic_loader::do_load): Likewise.

	* ov.cc (warn_fortran_indexing, warn_imag_to_real, symbols_of_ov):
	Delete DEFVARs and functions.
	(Vwarn_fortran_indexing, Vwarn_imag_to_real): Delete variables.

	* ov.cc (octave_value::vector_value, octave_value::int_vector_value,
	octave_value::complex_vector_value): Check state of warning ID
	Octave:fortran-indexing instead of using Vwarn_fortran_indexing.
	* ov-cx-sparse.cc (octave_sparse_complex_matrix::double_value,
	octave_sparse_complex_matrix::complex_value): Likewise.
	* ov-cx-mat.cc (octave_complex_matrix::matrix_value,
	octave_complex_matrix::complex_value): Likewise.
	* ov-re-mat.cc (octave_matrix::complex_value,
	octave_matrix::double_value): Likewise.
	* ov-streamoff.cc (octave_streamoff::streamoff_value): Likewise.
	* ov-re-sparse.cc (octave_sparse_matrix::complex_value,
	octave_sparse_matrix::double_value): Likewise.
	* ov-range.cc (octave_range::complex_value,
	octave_range::double_value): Likewise.
	* ov-ch-mat.cc (octave_char_matrix::complex_value,
	octave_char_matrix::double_value): Likewise.
	* ov-bool-sparse.cc (octave_sparse_bool_matrix::complex_value,
	octave_sparse_bool_matrix::double_value): Likewise.
	* ov-bool-mat.cc (octave_bool_matrix::complex_value,
	octave_bool_matrix::double_value): Likewise.

	* ov-cx-sparse.cc (octave_sparse_complex_matrix::double_value,
	octave_sparse_complex_matrix::matrix_value,
	octave_sparse_complex_matrix::sparse_matrix_value): Check state of
	warning ID Octave:imag-to-real instead of using Vwarn_imag_to_real.
	* ov-cx-mat.cc (octave_complex_matrix::double_value,
	octave_complex_matrix::matrix_value,
	octave_complex_matrix::complex_value,
	octave_complex_matrix::sparse_matrix_value): Likewise.
	* ov-complex.cc (octave_complex::double_value,
	octave_complex::matrix_value, octave_complex::array_value): Likewise.

	* ov.h (Vwarn_fortran_indexing, Vwarn_imag_to_real): Delete decls.

	* pt-mat.cc (warn_empty_list_elements, warn_string_concat):	
	Delete functions.
	(symbols_of_pt_mat): Delete DEFVARs.
	(Vwarn_empty_list_elements, Vwarn_string_concat): Delete variables.
	(tm_row_const::tm_row_const_rep::eval_warning, tm_const::init,
	maybe_warn_string_concat): Call warning_with_id instead of warning.

	* ov-str-mat.cc (warn_str_to_num, symbols_of_ov_str_mat):
	Delete DEFVAR and functions.
	(Vwarn_str_to_num): Delete variable.
	(CHAR_MATRIX_CONV): Call warning_with_id instead of warning.

	* utils.cc (warn_neg_dim_as_zero, symbols_of_utils):
	Delete DEFVAR and functions.
	(Vwarn_neg_dim_as_zero): Delete variable.
	(check_dimensions): Call warning_with_id instead of warning.

	* pt-misc.cc (warn_undefined_return_values, symbols_of_pt_misc):
	Delete DEFVAR and functions.
	(Vwarn_undefined_return_values): Delete variable.
	(tree_parameter_list::initialize_undefined_elements):
	Call warning_with_id instead of warning.

	* dynamic-ld.cc	(warn_reload_forces_clear, symbols_of_dynamic_ld):
	Delete DEFVAR and functions.
	(Vwarn_reload_forces_clear): Delete variable.
	(do_clear_function, octave_dynamic_loader::do_load):	
	Call warning_with_id instead of warning.
	* error.cc (warning_enabled): Now extern.
	(Fwarning): If specific id is not found, return state of "all".

	* error.h: Provide decl.

	* gripes.cc (warn_divide_by_zero, symbols_of_gripes):
	Delete DEFVAR and functions.
	(gripe_divide_by_zero): Check whether warning is enabled, then
	call warning_with_id instead of warning.
	(Vwarn_divide_by_zero): Delete variable.

2006-04-27  John W. Eaton  <jwe@octave.org>

	* variables.cc (Fexist): Fix doc string.

	* help.cc (simple_help): No need to handle built-in constants now.
	* variables.cc (do_who): Likewise.
	(symbol_exist): Likewise.
	(link_to_builtin_or_function): Likewise.
	* symtab.cc (SYMBOL_DEF::type_as_string): Likewise.
	(record::read_only_error): Likewise.
	(SYMBOL_DEF::type): Likewise.
	(record::variable_reference): Likewise.
	(symbol_record::define_builtin_const): Delete function.

	* symtab.h (symbol_record::define_builtin_const): Delete decl.
	(symbol_record::symbol_def::is_constant): Delete function.
	(symbol_record::symbol_def::is_builtin_constant): Delete function.
	(symbol_record::symbol_def::is_constant): Delete function.
	(symbol_record::is_builtin_constant): Delete function.
	(SYMTAB_ALL_TYPES): No need to handle builtin-constants now.
	(symbol_record::TYPE): Remove BUILTIN_CONSTANT from enum.

	* defun.cc (install_builtin_constant): Delete function.
	* defun-int.h (install_builtin_constant): Delete decl.

	* variables.cc (bind_builtin_constant): Delete function.
	* variables.h (bind_builtin_constant): Delete decl.

	* defun-int.h (DEFCONST, DEFCONSTX, DEFCONST_INTERNAL,
	DEFCONSTX_INTERNAL): Delete definitions.

	* sighandlers.cc (FSIG): New function to replace DEFCONST in
	symbols_of_sighandlers. 

	* octave.cc (intern_argv): Set octave_argv instead of calling
	bind_builtin_variable here.
	(Fargv, Fprogram_invocation_name, Fprogram_name): New functions to
	replace DEFCONSTs in symbols_of_toplvev in toplev.cc.
	(octave_program_invocation_name, octave_program_name):	
	New static variables.
	(execute_command_line_file): Use unwind_protect_str to protect
	octave_program_invocation_name, octave_program_name instead of
	using a restore function.
	(restore_program_name): Delete.

	* defaults.cc (FOCTAVE_HOME): New function to replace DEFCONST in
	symbols_of_defaults.

2006-04-27  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/regexp.cc (octregexp): Fix for infinite loop in
	regexp. Include news regexp arguments, and associated tests.

2006-04-26  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc: Also instantiate do_read functions for boolNDArray.

2006-04-26  Bill Denney  <denney@seas.upenn.edu>

 	* pager.cc (Fterminal_size): Add list_in_columns to @seealso.

2006-04-26  John W. Eaton  <jwe@octave.org>

	* dirfns.cc (Ffilesep): New function to replace DEFCONST in
	symbols_of_dirfns.
	(Fpathsep): New function.

	* defaults.cc (set_default_default_exec_path): Use
	dir_path::path_sep_str instead of std::string (SEPCHAR_STR).
	(set_default_exec_path): Likewise.
	(set_default_path): Likewise.
	(maybe_add_default_load_path): Likewise.  Use dir_path::is_path_sep.

2006-04-18  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/regexp.cc: Include <algorithm>, for transform decl.

	* DLD-FUNCTIONS/ccolamd.cc (Fccolamd, Fcsymamd):	
	Always return something.

	* sighandlers.cc (octave_set_signal_handler,
	octave_set_interrupt_handler): New arg, restart_syscalls, with
	default value true.
	* sighandlers.h: Fix decls to match.
	* sysdep.cc (octave_kbhit): Disable restarting of system calls.

	* help.cc (Flookfor): Add std qualifier to transform function.
	Include <algorithm>, for transform decl.

2006-04-16  John W. Eaton  <jwe@octave.org>

	* pager.h (octave_diary_buf, octave_pager_buf): Use std:stringbuf
	directly.

	* ls-mat-ascii.cc (read_mat_ascii_data): Use std::istringstream
	directly.
	* load-save.cc (parse_save_options): Likewise.
	* ls-mat5.cc (read_mat5_binary_element): Likewise.
	* oct-strstrm.h (octave_istrstream::is): Likewise.

	* __gnuplot_raw__.l (printrange, handle_using, gnuplot::do_open,
	gnuplot::do_set, gnuplot::do_show, gnuplot::makeplot,
	gnuplot::handle_title): Use std::ostringstream directly.
	* toplev.cc (run_command_and_return_output): Likewise.
	* symtab.h (symbol_table::symbol_table): Likewise.
	* strfns.cc (Flist_in_columns): Likewise.
	* pt.cc (tree::str_print_code): Likewise.
	* parse.y (yyerror, fold, finish_matrix): Likewise. 
	* pr-output.cc (PRINT_ND_ARRAY, octave_print_internal, Fdisp):	
	Likewise.
	* symtab.cc (symbol_table::print_descriptor): Likewise.
	* ov-list.cc (octave_list::print_raw, octave_list::save_ascii,
	octave_list::save_binary, octave_list::save_hdf5): Likewise.
	* ov-fcn-inline.cc (octave_fcn_inline::octave_fcn_inline,
	octave_fcn_inline::load_ascii, octave_fcn_inline::print_raw,
	Finline): Likewise.
	* ov-fcn-handle.cc (octave_fcn_handle::load_ascii,
	octave_fcn_handle::save_binary, octave_fcn_handle::save_hdf5):
	Likewise.
	* ov-cs-list.cc (octave_cs_list::print_raw): Likewise.
	* ov-cell.cc (octave_cell::print_raw, octave_cell::save_hdf5):
	Likewise.
	* oct-strstrm.h (octave_ostrstream::os, octave_ostrstream::str):
	Likewise.
	* oct-stream.h (scanf_format_list::buf, printf_format_list::buf):
	Likewise.
	* oct-stream.cc (scanf_format_list::scanf_format_list,
	printf_format_list::printf_format_list,
	octave_base_stream::do_gets, BEGIN_CHAR_CLASS_CONVERSION, 
	octave_stream_list::do_list_open_files): Likewise.
	* ls-oct-ascii.h (extract_keyword): Likewise.
	* load-save.cc (do_load): Likewise.
	* lex.l (have_continuation, handle_string): Likewise.
	* input.cc (get_user_input): Likewise.
	* dirfns.cc (Fls): Likewise.
	* error.cc (error_message_buffer, vwarning, verror, pr_where):
	Likewise.
	* defun.cc (print_usage): Likewise.
	* help.cc (display_help_text, Ftype, first_help_sentence):
	Likewise.
	* ls-mat5.cc (save_mat5_binary_element): Likewise.
	* DLD-FUNCTIONS/regexp.cc (octregexp): Likewise.
	* DLD-FUNCTIONS/fftw_wisdom.cc (Ffftw_wisdom): Likewise.

2006-04-13  John W. Eaton  <jwe@octave.org>

	* Makefile.in (lex.o parse.o __gnuplot_raw__.o, pic/parse.o
	pic/__gnuplot_raw__.o):	Omit -Wold-style-cast from CXXFLAGS.

	* ls-mat5.cc (READ_INTEGER_DATA): Allocate local buffer to avoid
	pointer tricks.

	* DLD-FUNCTIONS/regexp.cc (octregexp): Use OCTAVE_LOCAL_BUFFER
	instead of allocting memory with malloc.

	* DLD-FUNCTIONS/sparse.cc (Fsparse): Use octave_value extractors
	instead of using get_rep.

	* DLD-FUNCTIONS/dispatch.cc (dispatch_record): Use dynamic_cast,
	not reinterpret_cast.

	* DLD-FUNCTIONS/besselj.cc (Fairy): Use int_value instead of
	double_value and cast to extract kind arg.
	(int_arrayN_to_array): Arg is ArrayN<octave_idx_type>, not ArrayN<int>.

	* OPERATORS/op-cm-scm.cc, OPERATORS/op-cm-sm.cc,
	OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc,
	OPERATORS/op-m-scm.cc, OPERATORS/op-m-sm.cc,
	OPERATORS/op-s-scm.cc, OPERATORS/op-s-sm.cc,
	OPERATORS/op-scm-cm.cc, OPERATORS/op-scm-cs.cc,
	OPERATORS/op-scm-m.cc, OPERATORS/op-scm-s.cc,
	OPERATORS/op-scm-scm.cc, OPERATORS/op-scm-sm.cc,
	OPERATORS/op-sm-cm.cc, OPERATORS/op-sm-cs.cc,
	OPERATORS/op-sm-m.cc, OPERATORS/op-sm-s.cc,
	OPERATORS/op-sm-scm.cc, OPERATORS/op-sm-sm.cc: No need to cast
	away const just to cache sparse type.
	* ov-base-sparse.h (octave_base_sparse::typ): Now mutable.
	(octave_base_sparse::sparse_type): Now const.

	* OPERATORS/op-cm-scm.cc (DEFBINOP(div)): Explicitly cast args
	here instead of using CAST_BINOP_ARGS.

	* OPERATORS/op-streamoff.cc (STREAMOFF_COMP_OP): Second arg to 
	CAST_BINOP_ARGS is also const.

	* DLD-FUNCTIONS/chol.cc (Fcholinv, Fchol2inv): Eliminate nargout
	arg to avoid unused variable warnings.

	* unwind-prot.h, unwind-prot.cc (unwind_protect::save_bool,
	unwind_protect::save_int, unwind_protect::save_str,
	unwind_protect::save_ptr, unwind_protect::save_var):
	Pointer args now const.
	(unwind_protect_const_ptr): New macro.

	* symtab.cc (maybe_list_cmp_fcn): Use static_cast instead of X_CAST.
	* variables.cc (symbol_record_name_compare): Likewise.
	* ls-mat5.cc (MAT5_DO_WRITE, save_mat5_binary_element): Likewise.

	* ov-fcn-handle.cc (octave_fcn_handle::save_hdf5,
	octave_fcn_handle::load_hdf5): Eliminate unnecessary casts.
	* ov-fcn-inline.cc (octave_fcn_inline::save_hdf5,
	octave_fcn_inline::load_hdf5): Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::save_hdf5,
	octave_char_matrix_str::load_hdf5): Likewise.
	* ov-bool-sparse.cc (octave_sparse_bool_matrix::save_hdf5,
	octave_sparse_bool_matrix::load_hdf5): Likewise.
	* ov-cx-sparse.cc (octave_sparse_complex_matrix::save_hdf5,
	octave_sparse_complex_matrix::load_hdf5): Likewise.
	* ov-re-sparse.cc (octave_sparse_matrix::save_hdf5,
	octave_sparse_matrix::load_hdf5): Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::save_ascii,
	octave_char_matrix_str::load_ascii): Likewise.
	* mappers.cc (xtoascii): Likewise.
	* load-save.cc (read_binary_file_header, write_header): Likewise.
	* parse.y (get_help_from_file, parse_fcn_file): Likewise.
	* DLD-FUNCTIONS/rand.cc (do_rand): Likewise.
	* ls-hdf5.cc (read_hdf5_data, hdf5_add_attr, save_hdf5_empty,
	load_hdf5_empty add_hdf5_data): Likewise.
	* ls-mat4.cc (read_mat_binary_data): Likewise.
	* ls-mat5.cc (read_mat5_binary_element): Likewise.

	* oct-stream.cc (expand_char_class, octave_base_stream::do_gets):
	Use static_cast instead of C-style cast.
	* oct-procbuf.cc (kluge_procbuf_delay): Likewise.
	* parse.y (gobble_leading_white_space,: Likewise.
	* DLD-FUNCTIONS/besselj.cc (int_array2_to_matrix,
	int_arrayN_to_array): Likewise.
	* DLD-FUNCTIONS/colamd.cc (Fcolamd, Fsymamd): Likewise.
	* DLD-FUNCTIONS/ccolamd.cc (Fcsymamd): Likewise.
	* pt-pr-code.cc (tree_print_code::print_comment_elt): Likewise.
	* DLD-FUNCTIONS/besselj.cc (do_bessel): Likewise.
	* DLD-FUNCTIONS/spchol.cc (Fsymfact): Likewise.
	* DLD-FUNCTIONS/sparse.cc (sparse_find): Likewise.
	* DLD-FUNCTIONS/sort.cc (FloatFlip): Likewise.
	* DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): Likewise.
	* ls-mat5.cc (read_mat5_binary_element, OCTAVE_MAT5_INTEGER_READ,
	read_mat5_binary_element, save_mat5_binary_element): Likewise.

	* DLD-FUNCTIONS/splu.cc (Fspinv): Use dynamic_cast instead of
	C-style cast.
	* DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): Likewise.

	* DLD-FUNCTIONS/sort.cc (mx_sort): Use reinterpret_cast instead of
	C-style cast.
	* ls-mat5.cc (write_mat5_tag): Likewise.

	* ov-typeinfo.h (octave_value_typeinfo::octave_value_typeinfo):
	Eliminate unnecessary casts in constructor initializers.

	* ops.h (CAST_CONV_ARG, CAST_UNOP_ARG, CAST_BINOP_ARGS,
	DEFASSIGNANYOP_FN): Use C++ dynamic_cast instead of DYNAMIC_CAST macro.

	* unwind-prot.h (unwind_protect_ptr): Use combination of
	reinterpret_cast and const_cast instead of X_CAST.

	* dynamic-ld.cc (loader::do_load): Use reinterpret_cast instead of
	X_CAST.
	* ov-base-int.cc (octave_base_int_matrix<T>::save_binary,
	octave_base_int_matrix<T>::load_binary,
	octave_base_int_scalar<T>::save_binary,
	octave_base_int_scalar<T>::load_binary): Likewise.
	* ov-bool-mat.cc (octave_bool_matrix::save_binary,
	octave_bool_matrix::load_binary): Likewise.
	* ov-bool-sparse.cc (octave_sparse_bool_matrix::save_binary,
	octave_sparse_bool_matrix::load_binary): Likewise.
	* ov-bool.cc (octave_bool::save_binary, octave_bool::load_binary):
	Likewise.
	* ov-cell.cc (octave_cell::save_binary, octave_cell::load_binary):
	Likewise.
	* ov-complex.cc (octave_complex::save_binary,
	octave_complex::load_binary): Likewise.
	* ov-cx-mat.cc (octave_matrix::save_binary,
	octave_matrix::load_binary): Likewise.
	* ov-cx-sparse.cc (octave_sparse_complex_matrix::save_binary,
	octave_sparse_complex_matrix::load_binary): Likewise.
	* ov-fcn-handle.cc (octave_fcn_handle::save_binary,
	octave_fcn_handle::load_binary): Likewise.
	* ov-fcn-inline.cc (octave_fcn_inline::save_binary,
	octave_fcn_inline::load_binary): Likewise.
	* ov-list.cc (octave_list::save_binary, octave_list::load_binary):
	Likewise.
	* ov-range.cc (octave_range::save_binary, octave_range::load_binary): 
	Likewise.
	* ov-re-mat.cc (octave_matrix::save_binary,
	octave_matrix::load_binary): Likewise.
	* ov-re-sparse.cc (octave_sparse_matrix::save_binary,
	octave_sparse_matrix::load_binary): Likewise.
	* ov-scalar.cc (octave_scalar::save_binary,
	octave_scalar::load_binary): Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::save_binary,
	(octave_char_matrix_str::load_binary): Likewise.
	* ov-struct.cc (octave_struct::save_binary,
	octave_struct::load_binary): Likewise.
	* ls-oct-binary.cc (save_binary_data, read_binary_data): Likewise.
	* ls-mat4.cc (read_mat_file_header, save_mat_binary_data): Likewise.
	* ls-mat5.cc (read_mat5_tag, read_mat5_binary_element,
	read_mat5_binary_element, read_mat5_binary_file_header,
	MAT5_DO_WRITE, write_mat5_array, write_mat5_integer_data,
	save_mat5_binary_element, READ_INTEGER_DATA): Likewise.

2006-04-12  John W. Eaton  <jwe@octave.org>

	* ov.h (OV_REP_TYPE): New macro.

	* DLD-FUNCTIONS/sparse.cc (MINMAX_BODY): No need to cast arg1 to
	const octave_sparse_matrix&.

	* ov-base.cc (print_answer_id_name, warn_resize_on_range_error,
	warn_num_to_str, silent_functions): Move here, from ov.cc.
	(Vwarn_resize_on_range_error, Vsilent_functions): Likewise.
	(Vprint_answer_id_name): Likewise.  Now static.
	(symbols_of_ov_base): New function.  Move DEFVARs for
	print_answer_id_name, warn_resize_on_range_error, warn_num_to_str,
	and silent_functions here from symbols_of_ov in ov.cc.
	* ov.h (Vprint_answer_id_name): Delete decl.
	* ov-base.h (Vwarn_resize_on_range_error, Vwarn_num_to_str):	
	Move decls here from ov.h.

	* ov-str-mat.cc (warn_str_to_num): Move here, from ov.cc.
	(Vwarn_str_to_num): Likewise.  Now static.
	(symbols_of_ov_str_mat): New function.  Move DEFVAR for
	warn_str_to_num here from symbols_of_ov in ov.cc.
	* ov.h (Vwarn_str_to_num): Delete decl.

	* ov-struct.cc (octave_struct::load_ascii): Pass loop counter, not
	count, to read_ascii.
	* ov-list.cc (octave_list::load_ascii): Likewise.

	* ov-list.cc (octave_list::do_index_op): Allow index to extract
	multiple items.  Result is always a list.

	* pr-output.cc (struct_levels_to_print): Move here from ov.cc.
	(Vstruct-levels_to_print): Likewise.
	(symbols_of_pr_output): Move DEFVAR for struct_levels_to_print here
	from symbols_of_ov in ov.cc.
	* pr-output.h (Vstruct_levels_to_print): Nove decl here from ov.h.

	* gripes.cc (warn_divide_by_zero): Move here from ov.cc.
	(Vwarn_divide_by_zero): Likewise.  Now static.
	(symbols_of_gripes): New function.  Move DEFVAR for
	warn_divide_by_zero here from symbols_of_ov in ov.cc.
	* ov.h (Vwarn_divide_by_zero): Delete decl.

	* load-save.cc (do_load): Declare count octave_idx_type, not int.
	* ls-oct-ascii.cc, ls-oct-ascii.h (read_ascii_data): Likewise.

	Rearrange octave_value class hierarchy so that rep is a pointer
	an octave_base_value object and the octave_base_value class
	stores the reference count.  Virtualness now goes with the
	octave_base_value class, not the octave_value class.

	* ops.h, ov-base-int.cc, ov-base-int.h, ov-base-mat.h,
	ov-base-scalar.h, ov-base-sparse.h, ov-base.cc, ov-base.h,
	ov-bool-mat.cc, ov-bool-mat.h, ov-bool-sparse.cc,
	ov-bool-sparse.h, ov-bool.cc, ov-bool.h, ov-cell.cc, ov-cell.h,
	ov-ch-mat.h, ov-colon.h, ov-complex.cc, ov-complex.h,
	ov-cs-list.h, ov-cx-mat.cc, ov-cx-mat.h, ov-cx-sparse.cc,
	ov-cx-sparse.h, ov-fcn-handle.h, ov-fcn-inline.h, ov-fcn.cc,
	ov-fcn.h, ov-intx.h, ov-list.cc, ov-list.h, ov-range.cc,
	ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc,
	ov-re-sparse.h, ov-scalar.h, ov-str-mat.cc, ov-str-mat.h,
	ov-streamoff.h, ov-struct.cc, ov-struct.h, ov-type-conv.h,
	ov-typeinfo.cc, ov-typeinfo.h, ov-va-args.h, ov.cc, ov.h,
	variables.cc, DLD-FUNCTIONS/matrix_type.cc, DLD-FUNCTIONS/splu.cc,
	OPERATORS/op-chm.cc: Cope with octave_value hierarchy changes
	(apologies for the lack of detail).

	* ov.cc (octave_value::nil_rep): Delete.
	* ov.h (octave_value::nil_rep): Delete decl.

	* ov-base.h (DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA,
	DECLARE_OV_BASE_TYPEID_FUNCTIONS_AND_DATA, 
	DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA2,
	DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA):
	Move macro definitions here from ov.h.
	(struct_indent, increment_struct_indent, decrement_struct_indent,
	list_indent, increment_list_indent, decrement_list_indent):
	Delete decls.

	* ov-base.cc. ov-base.h (do_index_op, ndims, all, any,
	convert_to_str, print_with_name, numeric_assign,
	reset_indent_level, increment_indent_level,
	decrement_indent_level, current_print_indent_level, newline,
	indent, reset): Move member functions here from octave_value class.
	(count, curr_print_indent_level, beginning_of_line):
	Move data members here from octave_value class.
	(gripe_indexed_assignment, gripe_assign_conversion_failed,
	gripe_no_conversion): Move here from ov.cc.

	* ov.h (class octave_xvalue): Delete.
	(octave_value::octave_value (const octave_xvalue&)): Delete.
	(anonymous union): Delete.
	(octave_value::rep): Now a pointer to octave_base_value instead of
	octave_value.

	(octave_value::internal_rep): Return pointer to octave_base_value,
	not octave_value.
	
2006-04-11  John W. Eaton  <jwe@octave.org>

	* pt-assign.cc (tree_simple_assignment::rvalue,
	tree_multi_assignment::rvalue):
	Error if RHS is a comma-separated list.

2006-04-07  John W. Eaton  <jwe@octave.org>

	* defaults.cc (FOCTAVE_VERSION): New function to replace
	corresponding DEFCONSTX macro in symbols_of_defaults.

	* file-io.cc (FP_tmpdir, FSEEK_SET, FSEEK_CUR, FSEEK_END, Fstdin,
	Fstdout, Fstderr): New functions to replace DEFCONSTX macros in
	symbols_of_file_io.
	(const_value): New static function.
	(symbols_of_file_io): Delete.

	* syscalls.cc (FF_DUPFD, FF_GETFD, FF_GETFL, FF_SETFD, FF_SETFL,
	FO_APPEND, FO_ASYNC, FO_CREAT, FO_EXCL, FO_NONBLOCK, FO_RDONLY,
	FO_RDWR, FO_SYNC, FO_TRUNC, FO_WRONLY, FWNOHANG, FWUNTRACED,
	FWCONTINUE): New functions to replace DEFCONSTX macros in
	symbols_of_syscalls.
	(const_value): New static function.
	(symbols_of_syscalls): Delete.

	* pr-output.cc (pr_max_internal, pr_min_internal):
	Return 0 if all values are Inf or NaN.
	Always leave space for sign when printing Inf or NaN values.

	* parse.y (Fmfilename): Don't let filenames like ../foo fake us out.

	* data.cc (fill_matrix): Create separate versions for int, bool,
	and double, and Complex values.
	(FInf, FNaN, Fe, Feps, Fpi, Frealmax, Frealmin, FI, FNA, Ffalse,
	Ftrue): New functions to replace DEFCONST and DEFCONSTX macros in
	symbols_of_data.  Provide i, J, and j aliases for I.
	Provide nan alias for NaN.  Provide inf alias for Inf.
	(symbols_of_data): Delete.

2006-04-06  John W. Eaton  <jwe@octave.org>

	* parse.y (parse_and_execute, parse_fcn_file):
	Create octave_script_function object and push it on the call stack. 

	* parse.y (Fmfilename): Check for script or user function file on
	call stack.

	* ov-builtin.cc (octave_builtin::do_multi_index_op):
	Use octave_call_stack instead of curr_function to save pointer to
	current function.
	* ov-mapper.cc (octave_mapper::do_multi_index_op): Likewise.
	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op): Likewise.

	* pt-bp.h (MAYBE_DO_BREAKPOINT): Use octave_call_stack instead of
	curr_function to get pointer to current function.
	* pt-arg-list.cc (list::convert_to_const_vector): Likewise.
	* variables.cc (Fmlock, Fmunlock, Fmislocked): Likewise.
	* input.cc (get_user_input): Likewise.
	* error.cc (warning_1, error_2): Likewise.  Only enter debug mode
	if there is a scripting language caller.
	* ov-usr-fcn.cc (Fva_arg, Fva_start, Fvr_val): Likewise.  Check
	scripting language caller, not current function.

	* toplev.cc (curr_caller_function, curr_function): Delete.
	* toplev.h: Delete decls.

	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Don't protect and set curr_caller_function.
	* ov-builtin.cc (octave_builtin::do_multi_index_op): Likewise.
	* ov-mapper.cc (octave_mapper::do_multi_index_op): Likewise.

	* variables.cc (do_who): Use octave_call_stack instead of
	curr_caller_function to get pointer to calling function.
	* input.cc (get_user_input): Likewise.
	* error.cc (pr_where): Likewise.  No need for curr_function now.
	* parse.y (Fmfilename): Likewise.  Check for scripting language
	caller, not any calling function.

	* ov-usr-fcn.h (octave_user_script): New class.
	* ov-fcn.h (octave_function::is_user_script): New virtual function.

	* toplev.h, toplev.cc (octave_call_stack): New class.

	* debug.cc (Fdbwhere): Use get_user_function here.

2006-04-05  John W. Eaton  <jwe@octave.org>

	* Makefile.in (mk-pkg-add): Use mfilename to simplify.
	(PKG_ADD): Don't pass --prefix arg to mk-pkg-add.
	(PKG_ADD.inst): Delete target.
	(clean): Don't remove PKG_ADD.inst.
	(install-oct): Don't depend on PKG_ADD.inst.  Install PKG_ADD, not
	PKG_ADD.inst.

	* parse.y (Fmfilename): New function.

2006-04-04  David Bateman  <dbateman@free.fr>

	* help.cc (Flookfor): Skip overloaded functions.  Lookup help text
	of autoloaded function, not parent that contains the autoload.

2006-04-03  David Bateman  <dbateman@free.fr>

	* data.cc (Fresize): New function.
	* oct-map.cc, ov-base-mat.cc, ov-base-sparse.cc, ov-base.cc,
	ov-bool.cc, ov-complex.cc, ov-range.cc, ov-scalar.cc,
	ov-str-mat.cc (resize): Add boolean fill argument.
	* oct-map.h, ov-base-mat.h, ov-base-sparse.h, ov-base.h,
	ov-bool.h, ov-complex.h, ov-intx.h, ov-range.h, ov-scalar.h,
	ov-str-mat.h, ov.h (resize): Ditto.
	
	* DLD-FUNCTIONS/rand.cc (do_rand): Additional argument for
        gamma and poisson distributions.  Change "state" and "seed"
        arguments so that they choose between generators.
	Add, poisson, gamma and exponential generators.
	(Frand, Frandn): Update docs for new generators, add tests.
	(Frande, Frandp, Frandg): New generators, with test code.

	* DLD-FUNCTIONS/daspk.cc (Fdaspk): Allow functions to be passed
	using function handles, inline functions, and cell arrays of
	strings, inline and function handles.
	* DLD-FUNCTIONS/dasrtk.cc (Fdasrt): Likewise.
	* DLD-FUNCTIONS/dassl.cc (Fdassl): Likewise.
	* DLD-FUNCTIONS/fsolve.cc (Ffsolve): Likewise.
	* DLD-FUNCTIONS/lsode.cc (Flsode):  Likewise.

	* ls-hdf5.h (hdf5_fstreambase::open): Remove unused arg prot.

2006-03-30  Bill Denney  <denney@seas.upenn.edu>

 	* data.cc: Include numel in @seealso.

2006-03-30  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/fftw_wisdom.cc: Don't attempt to save wisdom to
	an empty filename or invalid filename.

2006-03-28  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/matrix_type.cc: Update copyright notice and FSF
	address.

2006-03-24  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/spchol.cc (Fsymbfact): Use CHOLMOD_NAME to select
	proper version of row_subtree function.

	* ov-cell.cc (octave_cell::save_hdf5): Use OSSTREAM instead of
	fixed character buffer and sprintf.
	* ov-list.cc (octave_list::save_hdf5, octave_list::save_ascii,
	octave_list::save_binary): Likewise.

	* ov-cell.h (octave_cell::convert_to_str_internal):
	Undo previous change for pad arg.
	* ov-cell.cc (octave_cell::all_strings): Reinstate pad arg, pass
	it on to all_strings.
	* ov.h (octave_value::all_strings): Reinstate pad arg.
	* ov-base.cc (octave_base_value::all_strings): Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::all_strings): Likewise.
	* ov.h, ov-base.h, ov-cell.h, ov-str-mat.h: Fix all_strings decls.

2005-10-25  David Bateman  <dbateman@free.fr>

        * data.cc (do_cat): With 1 arg, return [](0x0) for compatibility.

2006-03-23  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.5+.

2006-03-22  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.5.
	(OCTAVE_API_VERSION): Now api-v18.
	(OCTAVE_RELEASE_DATE): Now 2006-03-22.

2006-03-21  John W. Eaton  <jwe@octave.org>

	* ov-cell.h (octave_cell::convert_to_str_internal):
	Ignore pad and force args.
	* ov-cell.cc (octave_cell::all_strings): Delete args.  Never pad.
	* ov-base.cc (octave_base_value::all_strings): Delete args.
	Always force string conversion, never pad.
	* ov-str-mat.cc (octave_char_matrix_str::all_strings):
	Delete args.  Don't strip whitespace.
	* ov.h, ov-base.h, ov-cell.h, ov-str-mat.h: Fix all_strings decls.
	* strfns.cc (Fchar): No args for all_strings.

2006-03-21  David bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/getrusage.cc (Fgetrusage): Use GetProcessTimes for
	MinGW to obtain user and system times.

2006-03-17  John W. Eaton  <jwe@octave.org>

	* strfns.cc (F__list_in_columns__): New function.

2006-03-16  Bill Denney  <bill@givebillmoney.com>

	* DLD-FUNCTIONS/time.cc: Improve @seealso entries in doc strings.

2006-03-16  John W. Eaton  <jwe@octave.org>

	* __gnuplot_raw__.l (F__gnuplot_show__): Temporarily use DEFCMD
	instead of DEFUN.
	(symbols_of___gnuplot_raw__): Temporarily mark __gnuplot_plot__,
	__gnuplot_set__, __gnuplot_splot__, and __gnuplot_replot__ as raw
	commands.

	* variables.cc (is_marked_as_rawcommand, unmark_rawcommand,
	mark_as_rawcommand): Temporarily not static.
	* variables.h: Temporarily Provide decls.

2006-03-16  David Bateman  <dbateman@free.fr>

	* sparse-xdiv.cc (result_ok): delete.
	(xdiv, xleftdiv): Simplify to use version of SpareMatrix::solve
	and SparseComplexMatrix::solve which internally treats rectangular
	and singular matrices.
	* DLD-FUNCTIONS/luinc.cc: Remove error test for singular matrix as
	QR solver now implemented.
	* DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): Paranoid check on 
	error_state. Disable tests for the detection of underdetermined 
	lower and over-determined upper matrix due to problems with 
	non minimum norm solutions.
	* DLD-FUNCTIONS/spqr.cc: Warning for issue of use of Fspqr for
	under-determined problems.

2006-03-16  John W. Eaton  <jwe@octave.org>

	* __gnuplot_raw__.l: Move here from DLD-FUNCTIONS/__gnuplot_raw__.l.
	Use DEFUN, not DEFUN_DLD.  Include defun.h, not defun-dld.h.
	(gnuplot::do_init):Move guts to symbols_of___gnuplot_raw__.
	(symbols_of___gnuplot_raw__): New function.

	* Makefile.in (DLD_XSRC): Delete __gnuplot_raw__.l from the list.
	(DIST_SRC): Include __gnuplot_raw__.l in the list.
	(__gnuplot_raw__.cc): Depend on __gnuplot_raw__.l, not
	DLD-FUNCTIONS/__gnuplot_raw__.l

	* ls-oct-ascii.h (extract_keyword): Use std::string compare method
	instead of strncmp.
	* ls-oct-ascii.cc (extract_keyword): Likewise. 

2006-03-15  William Poetra Yoga Hadisoeseno  <williampoetra@gmail.com>

	* src/data.cc (Frows, Fcolumns): New functions.

	* DLD-FUNCTIONS/time.cc (Fstrptime, Fstrftime): Fix docstring.

	* strfns.cc (Fstrcmp): Fixed docstring.

2006-03-15  John W. Eaton  <jwe@octave.org>

	* pager.cc (Fterminal_size): New function.

	* help.cc (help_from_info): Simplify.
	(try_info): Use feval to call doc instead of executing info program.
	(additional_help_message): Point users to doc instead of help -i.
	From Søren Hauberg <soren@hauberg.org>.

	* toplev.cc (Fsystem): Return output if nargout > 1, not 0.

2006-03-14  Keith Goodman  <kwgoodman@gmail.com>

	* help.cc (Fhelp, Fwhich, Flookfor): Doc string fix.

2006-03-14  John W. Eaton  <jwe@octave.org>

	* defun.cc (print_usage): New arg, extra_msg.
	
	* xpow.cc: Omit tests for now.

	* parse.y (QUOTE, TRANSPOSE): For compatibility, now have same
	precedence as POW and EPOW.

2006-03-14  Bill Denney  <bill@givebillmoney.com>

         * load-save.cc (Fload, Fsave): Update docstring for functional form.

2006-03-14  John W. Eaton  <jwe@octave.org>

	* xpow.cc (elem_xpow): Undo previous change.

2006-03-14  Paul Kienzle  <pkienzle@users.sf.net>

	* xpow.cc: New tests.

2006-03-13  John W. Eaton  <jwe@octave.org>

	* variables.cc (fcn_out_of_date): No longer static.
	* ov-fcn-handle.cc (warn_reload): New function.
	(octave_fcn_handle::subsref): Implement basic logic for updating
	when pointed-to function changes.

2006-03-10  John W. Eaton  <jwe@octave.org>

	* xpow.cc (elem_xpow): Only use complex pow if really necessary.

	* symtab.cc (symbol_table::glob, symbol_table::symbol_list,
	symbol_table::subsymbol_list): Force result to be a column
	vector.

	* oct-stream.h (octave_stream::stream_ok): Undo previous change.
	Eliminate who parameter.  Change all callers.

	* variables.cc (do_who): Return more info in structure array for
	verbose output.
	* symtab.h (symbol_record::size, symbol_record::class_name,
	symbol_record::is_sparse_type, symbol_record::is_complex_type,
	symbol_record::size, symbol_record::symbol_def::class_name,
	symbol_record::symbol_def::is_sparse_type,
	symbol_record::symbol_def::is_complex_type): New functions.
	* ov.h (octave_value::size): New function.

2006-03-09  John W. Eaton  <jwe@octave.org>

	* toplev.cc (run_command_and_return_output): Swap output and
	status for compatibility.

	* Makefile.in (defaults.h, oct-conf.h): Force updates.

	* defaults.h.in (OCTAVE_RELEASE): New macro.

	* octave.cc (F__version_info__): New arg, release.
	(initialize_version_info): Pass release arg to F__version_info__.

	* toplev.cc: Include api_version in the list.

	* Makefile.in (DIST_SRC): Include octave.cc here.
	(DISTFILES, DEP_5): Not here.

	* octave.cc (F__version_info__): New function.
	(initialize_version_info): New function.
	(octave_main): Call initialize_version_info just before reading
	init files.

	* version.h (OCTAVE_RELEASE_DATE): New macro.

	* ov-fcn-handle.h (octave_fcn_handle::dims): New function.

2006-03-08  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_stream::stream_ok): Move definition here,
	from oct-stream.h.  New arg, warn.  If warn is true and stream is
	invalid, print warning.
	(octave_stream::error): Always avoid warning message from
	stream_ok.  Return "invalid stream object" if stream is not ok.

2006-03-08  David Bateman  <dbateman@free.fr>

	* ov-mapper.cc (SPARSE_MAPPER_LOOP_2): Change nnz to nz to remove 
	shadowed variable warning.
	* DLD-FUNCTIONS/spqr.cc: Update for new upstream CXSPARSE release.

2006-03-06  John W. Eaton  <jwe@octave.org>

	* help.cc (display_help_text): Force linebreak with @sp.

2006-03-06  Keith Goodman  <kwgoodman@gmail.com>
 
	* bitfcns.cc, data.cc, debug.cc, file-io.cc, help.cc,
	load-save.cc, mappers.cc, ov-cell.cc, ov-fcn-inline.cc,
	ov-struct.cc, ov-usr-fcn.cc, ov.cc, pr-output.cc, utils.cc,
	variables.cc, DLD-FUNCTIONS/ccolamd.cc, DLD-FUNCTIONS/cellfun.cc,
	DLD-FUNCTIONS/colamd.cc, DLD-FUNCTIONS/daspk.cc,
	DLD-FUNCTIONS/dasrt.cc, DLD-FUNCTIONS/dassl.cc,
	DLD-FUNCTIONS/fft.cc, DLD-FUNCTIONS/fft2.cc,
	DLD-FUNCTIONS/fftn.cc, DLD-FUNCTIONS/fftw_wisdom.cc,
	DLD-FUNCTIONS/gammainc.cc, DLD-FUNCTIONS/gcd.cc,
	DLD-FUNCTIONS/luinc.cc,	DLD-FUNCTIONS/sparse.cc,
	DLD-FUNCTIONS/spchol.cc, DLD-FUNCTIONS/splu.cc,
	DLD-FUNCTIONS/spqr.cc, DLD-FUNCTIONS/sqrtm.cc:
	Move @seealso inside @defXXX macro.  Remove "and" from @seealso.

2006-03-04  John W. Eaton  <jwe@octave.org>

	* help.cc (additional_help_message): Don't print "\n" before message.
	(help_from_symbol_table): If Vsuppress_verbose_help_message is
	true, don't print which info.

2006-03-03  John W. Eaton  <jwe@octave.org>

	* dirfns.cc (Vconfirm_recursive_rmdir): New static variable.
	(symbols_of_dirfns): DEFVAR it.
	(confirm_recursive_rmdir): New function.
	(Frmdir): Maybe ask for confirmation for recursive removal.
	Require second arg to be "s".

	* input.cc (octave_yes_or_no): New function.
	(Fyes_or_no): New function.
	* input.h (octave_yes_or_no): Provide decl.

2006-03-02  John W. Eaton  <jwe@octave.org>

	* dirfns.cc (Fmkdir, Frmdir): Now commands.

2006-02-20  David Bateman  <dbateman@free.fr>

	* ov.h (virtual bool is_sparse_type (bool)): New virtual function
	* ov-base.h (bool is_sparse_type (bool)): New function
	* ov-base-sparse.h (bool is_sparse_type (bool)): New function
	* DLD-FUNCTIONS/ccolamd.cc, DLD-FUNCTION/colamd.cc, 
	DLD-FUNCTIONS/__glpk__.cc, DLD-FUNCTIONS/splu.cc,
	DLD-FUNCTIONS/sparse.cc, DLD-FUNCTIONS/matrix_type.cc, pt-mat.cc:
	Replace us of 'arg.class_name () == "sparse"' with
	'arg.is_sparse_type ()'
	
2006-02-20  David Bateman  <dbateman@free.fr>
	
	* pt-mat.cc (class tm_row_const): Add any_sparse bool variable.
	(tm_row_const::tm_row_const_rep::do_init_element): Initialize
	any_sparse variable if any matrice is sparse.
	(class tm_const): Add any_sparse bool variable.
	(tm_const::init): Initialize any_sparse variable.
	(tree_matrix::rvalue): If any matrix is sparse use sparse matrix
	as initial matrix for concatenation
	* DLD-FUNCTIONS/matrix_type.cc: Add tests for new rectangular
	diagonal, permuted diagonal, triangular and permuted triangular
	matrices

2006-02-20  John W. Eaton  <jwe@octave.org>

	* toplev.cc (__builtin_delete, __builtin_new): Use std::cerr for
	messages instead of std::cout.
	(main_loop, do_octave_atexit): Use octave_stdout, not std::cout.

2006-02-15  John W. Eaton  <jwe@octave.org>

	* parse.y (Fautoload): Return struct array of autoload info if
	nargin == 0.

2006-02-15  Keith Goodman  <kwgoodman@gmail.com>

	* help.cc (keywords): Doc string fix.

2006-02-15  John W. Eaton  <jwe@octave.org>

	* oct-procbuf.cc (close): Use __CYGWIN__ instead of __CYGWIN32__.

2006-02-13  David Bateman  <dbateman@free.fr>

	* DLD_FUNCTIONS/regexp.cc (octregexp): Add matlab compatiable
	named tokens. Update the tests

2006-02-10  John W. Eaton  <jwe@octave.org>

	* lex.l (\[{S}*): Maybe set lexer_flags.looking_at_return_list or
	lexer_flags.looking_at_matrix_or_assign_lhs here.
	* parse.y 
	(return_list_beg): Don't use in_return_list here.
	(assign_lhs, matrix): Don't use in_matrix_or_assign_lhs here.
	(in_matrix_or_assign_lhs, in_return_list): Delete unused macros.
	(matrix): Clear lexer_flags.looking_at_matrix_or_assign_lhs in all
	cases.

2006-02-09  John W. Eaton  <jwe@octave.org>

	* utils.cc (oct_file_in_path): Check len > 4, not len > 2.
	From Larrie Carr <larrie@telus.net>.

2006-02-09  David Bateman  <dbateman@free.fr>

        * DLD-FUNCTIONS/spqr.cc: New file for sparse QR and dmperm based on
        CSparse.
        * DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): dintinguish between
        rectangular and singular matrices. Add tests.
        * DLD-FUNCTIONS/luinc.cc: Add tests.
        * DLD-FUNCTIONS/spkron.cc: Ditto.
        * Makefile.in (DLD_XSRC): Add spqr.cc.
        (OCT_LINK_DEPS): Add CSSPARSE_LIBS.
        * sparse-xdiv.h: Remove conditio of lssolve.

2006-02-08  John W. Eaton  <jwe@octave.org>

	* parse.y (frob_function): Clear ID_NAME from top_level symbol
	table if we are defining a function at the top-level and a
	function with the same name is already in the top-level symbol
	table.

2006-01-31  John W. Eaton  <jwe@octave.org>

	* ov-base-sparse.h (octave_base_sparse<T>::nzmax): New function.
	* ov.h (octave_value::nzmax): New function.
	* ov-base.cc (octave_base_value::nzmax): New function.
	* ov-base.h: Provide decl.
	* data.cc (Fnzmax): New function.
	* DLD-FUNCTIONS/sparse.cc (Fnzmax): Delete.

2006-01-31  Kim Hansen  <kim@i9.dk>

	* __glpk__.cc (F__glpk__): Fix for sparse matrices.

2006-01-30  John W. Eaton  <jwe@octave.org>

	* gripes.cc (gripe_wrong_type_arg (const char*, const char*, bool)):
	New function.
	(gripe_wrong_type_arg (const char*, const std::string&, bool)):
	Define using const char*, const char*, bool version.
	(gripe_wrong_type_arg (const char*, const octave_value&, bool)):
	Define using const char*, const std::string&, bool version.

	* ov.h (octave_value::nnz): New function.
	* ov-base.cc (octave_base_value::nnz): New function.
	* ov-base.h: Provide decl.
	* ov-base-mat.h (octave_base_matrix<MT>::nnz): New function.
	* ov-base-scalar.h (octave_base_scalar<MT>::nnz): New function.
	* Cell.cc (Cell::nnz): New function.
	* Cell.h: Provide decl.
	* data.cc (Fnnz): New function.	
	* DLD-FUNCTIONS/sparse.cc (Fnnz): Delete.

2006-01-13  John W. Eaton  <jwe@octave.org>

	* ov-struct.cc (octave_struct::print_raw): Correctly print scalar
	structs and empty struct arrays.

	* DLD-FUNCTIONS/__gnuplot_raw__.l (Fclearplot): For compatibility,
	also turn off hold state for current figure.

2006-01-13  Bill Denney  <bill@givebillmoney.com>

 	* dirfns.cc: Add @seealso{} to docstrings.

2006-01-13  John W. Eaton  <jwe@octave.org>

	* help.cc (display_help_text): Use warning() to print raw Texinfo
	source.  Don't redirect error output for makeinfo process.

	* DLD-FUNCTIONS/__gnuplot_raw__.l (F__gnuplot_init__): Delete
	function and PKG_ADD directive.
	(gnuplot::gnuplot): Call do_init here.
	(gnuplot::init): Delete static function.
	(gnuplot::close_all): New static function.
	(class gnuplot_X): New class.
	(gnpulot_X::X): New static instance.

2006-01-12  David Bateman  <dbateman@free.fr>

	* help.cc (make_name_list): Add autoload functions to list of
	available completions.
	(simple_help): Add autoloaded functions to functions listed
	(first_help_sentence): Avoid issue with single line help string 
	that is not terminated in \n.
	(Flookfor): Check for string match in the keyword/function, etc
	name. Also look for string match in help of autoloaded functions.
	Load oct-files to be able to access their help string.
	* parse.y (string_vector autoloaded_functions (void)): New
	function to list all autloaded functions.
	(string_vector reverse_lookup_autoload (const std::string& nm)):
	Reverse lookup function to match file to autoloaded functions.
	* parse.h (autoloaded_functions, reverse_lookup_autoload): 
	Declaration. 
	
	* oct-map.cc (maybe_delete_elements): New function.
	* oct-map.h (maybe_delete_elements): Declare it.
	* ov-struct.cc (octave_struct::subsref): Handle indexing empty
	structure.
	(octave_struct::subsasgn): If rhs is [], delete elements.
	(octave_struct::print_raw): Handle printing empty structure. 	

	* ls-mat5.cc (read_mat5_binary_element): Allow reading of sparse
	elements when nnz doesn't equal nzmax. 
	
2006-01-10  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/sparse.cc (sparse_find): Use Sparse<T>::nonzero() 
	rather than Sparse<T>::nnz(), due to possibility of overallocation
	of memory.

2006-01-06  John W. Eaton  <jwe@octave.org>

	* oct-map.cc (Octave_map::transpose): Avoid GCC 3.3.x parse error.

2005-12-14  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_stream::invalid_stream_error): Delete.
	* oct-stream.h (octave_stream::stream_ok): Don't fail with error.

2005-12-14  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/regexp.cc: New file.

	* DLD-FUNCTIONS/dispatch.cc: Update tests for string/sq_string 
	differences.

	* error.cc (Vquiet_warning): New variable.
	(vwarning): Use Vquiet_warning to prevent warning output.
	(Fwarning): Include "quiet" option to Fwarning function.
	Assign retval when using "query".  Typo in error message.
	(Flastwarn): Clear warning_state when using Flastwarn to probe warning
	message.

	* ov-struct.cc: Update Fstruct tests for change in error output.

	* Makefile.in: Include regexp when needed with appropriate libraries.

2005-12-13  David Bateman <dbateman@free.fr>

	* Makefile.in: Change references to gplot.l to __gnuplot_raw__.l.
	* DLD-FUNCTIONS/__gnuplot_raw__.l: Rename from DLD-FUNCTIONS/gplot.l.
	Remove all references to deprecated gplot, gsplot, graw, gset and
	gshow functions.
	* help.cc (static help_list keywords[]): Remove gsplot and gplot.

	* ls-oct-ascii.cc (save_three_d):  Don't strip Inf or NaN.
	(save_ascii_data_for_plotting): Ditto.

2005-12-13  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_stream_list::do_insert): Check open state
	of stream in list instead of whether stream state is OK.

2005-12-12  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-struct.cc (transpose): New function.
	(install_struct_ops): Install it.

	* oct-map.cc (Octave_map::transpose): New function.
	* oct-map.h: Provide decl.

2005-12-08  John W. Eaton  <jwe@octave.org>

	* Cell.cc (Cell::column): New function.
	* pt-loop.cc (DO_ND_LOOP): Simplify.
	(simple_for_loop_command::eval): Correctly handle N-d numeric and
	cell arrays when only the first dimension is 0.

2005-12-07  John W. Eaton  <jwe@octave.org>

	* lex.l (NL): Also accept '\r'.

	* error.cc (Vbacktrace_on_warning, warning_options,
	Vlast_warning_id, Vlast_error_id): New file-scope variables.
	(Vwarning_frequency, Vwarning_option): Delete unused variables.
	(set_warning_option): Delete unused function.
	(Fwarning): Update for compatibility.  Use DEFCMD, not DEFUN.
	(warning_enabled, check_state): New functions.
	(warning (const char *fmt, ...)): Use it.
	(init_warning_options): New function.
	(symbols_of_error): Call it.
	(vwarning, Flastwarn): Handle Vlast_warning_id.  Improve compatibility.
	(handle_message): New arg, ID.  Change all callers.
	(vwarning, verror, error_1): New arg, ID.  Change all callers.
	(verror, Flasterr): Handle Vlast_error_id.  Improve compatibility.

	* error.cc (message_with_id, usage_with_id, warning_with_id,
	error_with_id, parse_error_with_id): New functions.
	(error_2, warning_1, usage_1): New functions.
	* error.h (message_with_id, usage_with_id, warning_with_id,
	error_with_id, parse_error_with_id): Provide decls.

2005-11-30  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/schur.cc (Fschur): Doc string fix.
	From Jorge Barros de Abreu <ficmatin01@solar.com.br>.

2005-11-28  John W. Eaton  <jwe@octave.org>

	* syscalls.cc (Funame): New function.

2005-11-21  John W. Eaton  <jwe@octave.org>

	* pr-output.cc (pr_int): Fix thinko in byte-swapping for bit format.

	* DLD-FUNCTIONS/cellfun.cc (Fcellfun):
	Use C++ static_cast instead of C-style casts.

2005-11-21  William Poetra Yoga H <williampoetra@yahoo.com>

	* DLD-FUNCTIONS/cellfun.cc (Fcellfun):
	Docstring and error message fixes.

2005-11-17  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/minmax.cc (MINMAX_BODY): Don't cast arg1 to
	const octave_complex_matrix&.

2005-11-16  John W. Eaton  <jwe@octave.org>

	* Makefile.in (PKG_ADD.inst): New target.
	(install-oct): Depend on it.
	(clean): Remove it.

	* mk-pkg-add: New option --install.  Don't use --prefix option.
	Delete obsolete comments.

	* Cell.cc (Cell::index): Indexing with () is a no-op, not an error.
	* oct-map.cc (Octave_map::index): Likewise.
	* ov-base-mat.cc (octave_base_matrix<MT>::do_index_op): Likewise.
	* ov-base-sparse.cc (octave_base_sparse<T>::do_index_op): Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::do_index_op_internal):
	Likewise.

2005-11-11  John W. Eaton  <jwe@octave.org>

	* Makefile.in (install-oct): Fix thinko in previous change.

	* version.h (OCTAVE_VERSION): Now 2.9.4
	(OCTAVE_API_VERSION): Now api-v17.

	* variables.cc (symbol_out_of_date): Check for autoloads here too.

	* Makefile.in (PKG_ADD): Depend on $(DLD_DEF_FILES), not $(DLD_SRC).
	(%.df : %.cc): Also insert PKG_ADD commands in .df files.
	(install-oct): Generate PKG_ADD file for install directory here.
	Don't depend on PKG-ADD. No need to make .oct file links.
	(clean): No need to delete links.
	(stamp-oct-links): Delete target.
	(distclean): No need to remove stamp-oct-links.
	(all): Depend on $(OCT_FILES), not stamp-oct-links.

	* mk-pkg-add: New file.
	* Makefile.in (DISTFILES): Add it to the list.

	* mk-oct-links: Delete.
	* Makefile.in (DISTFILES): Remove it from the list.

2005-11-10  John W. Eaton  <jwe@octave.org>

	* ov-str-mat.h (octave_char_matrix_str::permute,
	octave_char_matrix_str::resize): New functions.
	(octave_char_matrix_sq_str::reshape,
	octave_char_matrix_sq_str::permute,
	octave_char_matrix_sq_str::resize): New functions.

	* OPERATORS/op-str-str.cc, OPERATORS/op-str-s.cc,
	OPERATORS/op-str-m.cc: Use DEFNDCHARCATOP_FN.

	* data.cc (do_cat): No need to handle character arrays specially here.

	* ops.h (DEFNDCHARCATOP_FN): New macro.
	* OPERATORS/op-int.h (OCTAVE_INT_CHAR_CONCAT_FN, 
	OCTAVE_CHAR_INT_CONCAT_FN, OCTAVE_INSTALL_INT_CHAR_CONCAT_FN,
	OCTAVE_INSTALL_CHAR_INT_CONCAT_FN): New macros.
	* OPERATORS/op-int-concat.cc: Use them do define char/int op functions.
	(install_int_concat_ops): Install char/int concat ops.

	* ov-scalar.h (class octave_scalar): Provide extractors
	for all int array types and char array type.

2005-11-09  John W. Eaton  <jwe@octave.org>

	* ov-bool-mat.h (class octave_bool_matrix): Provide extractors
	for all int array types and char array type.
	* ov-bool.h (class octave_bool): Likewise.

	* ov-intx.h (class OCTAVE_VALUE_INT_MATRIX_T): Provide extractors
	for all int array types and char array type.
	(class OCTAVE_VALUE_INT_SCALAR_T): Provide extractors for all int
	scalar and array types and char array type.

	* pt-mat.cc (tm_const::class_nm): New data member.
	(tm_const::tm_const): Initialize it.
	(tm_const::class_name): New function.
	(tm_row_const::tm_row_const_rep::class_nm): New data member.
	(tm_row_const::tm_row_const_rep::tm_row_const_rep): Initialize it.
	(tm_row_const::class_name): New function.
	(get_concat_class): New function.
	(tm_row_const::tm_row_const_rep::do_init_element): Use it.
	(tm_const::init): Use it.

2005-11-07  John W. Eaton  <jwe@octave.org>

	* strfns.cc (Fstrcmp): If args are not strings or cell arrays of
	strings, return false.

2005-11-01  John W. Eaton  <jwe@octave.org>

	* Makefile.in (oct-gperf.h): Avoid extra temporary file.
	(distclean): Delete oct-errno.cc here.
	From Quentin Spencer  <qspencer@ieee.org>.

2005-11-01  Quentin Spencer  <qspencer@ieee.org>

	* DLD-FUNCTIONS/spchol.cc: Use C++ true/false instead of
	preprocessor defined TRUE/FALSE.
	* Makefile.in (DISTFILES): Add mk-errno-list to the list.

2005-10-30  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/gplot.l (gnuplot::set_gnuplot_exe,
	gnuplot::do_set_gnuplot_exe): New functions.
	(gnuplot_binary): Call gnuplot::set_gnuplot_exe here.

	* DLD-FUNCTIONS/gplot.l (gnuplot::set_gnuplot_use_title_option,
	gnuplot::do_set_gnuplot_use_title_option): New functions.
	(gnuplot_use_title_option):
	Call gnuplot::set_gnuplot_use_title_option here.

2005-10-27  James R. Van Zandt  <jrvz@comcast.net>

	* mappers.cc: Doc fix for lgamma.
	* DLD-FUNCTIONS/gammainc.cc (Fgammainc): Doc fix.

2005-10-27  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Declare mrowsA volatile.

	* pt-mat.cc (tm_row_const::tm_row_const_rep::tm_row_const_rep):
	Ensure that we always have at least two dimensions here.
	(tm_const::tm_const): Likewise.
	(tm_const::rows, tm_const::columns): Simplify.
	(tm_row_const::rows, tm_row_const::columns)): Simplify.

2005-10-26  John W. Eaton  <jwe@octave.org>

	* oct-procbuf.cc (octave_procbuf::open): Cast 0 to void * to avoid
	new g++ warning.
	* toplev.cc (Fsystem): Likewise.

	Changes for GCC 4.1, tip from Arno J. Klaassen
	<arno@heho.snv.jussieu.fr>:

	* ov.h (do_unary_op (octave_value::unary_op, const octave_value&)):
	Publish externally used friend function.
	(do_unary_op (octave_value::unary_op, const octave_value&,
	const octave_value&)): Likewise.

2005-10-25  David Bateman  <dbateman@free.fr>

	* data.cc (do_cat): called with 2 args, should return args(1) 
	for compatibility.

2005-10-23  David Bateman  <dbateman@free.fr>

	* Makefile.in (DLD_XSRC): Add spchol.cc.
	* sparse-xpow.cc (xpow): Change call to sparse inverse to include
	SparseType.
	* DLD-FUNCTIONS/colamd.c (Fsymbfact): Remove.
	* DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): 64-bit fixes and fix
	for permutation of upper/lower triangular matrices.
	* DLD-FUNCTIONS/splu.cc (Fspinv): Implemtation of sparse inverse 
	function.
	* DLD-FUNCTIONS/spchol.cc (sparse_chol): Static function for core of 
	the sparse cholesky factorization.
	(Fspchol): New function for sparse cholesky factorization R'R.
	(Fsplchol): New function for sparse cholesky factorization LL'.
	(Fspcholinv): New cholesky inverse function.
	(Fspchol2inv): New cholesky inverse function.
	(Fsymbfact): Implementation of symbolic factorization using cholmod.

2005-10-21  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/gplot.l (read_until): Special case STRING.
	(handle_string): Restore function.
	("'", "\""): Call handle string when matching these tokens..

2005-10-20  John W. Eaton  <jwe@octave.org>

	* pt-mat.cc (tm_row_const::all_real): New data member.
	(tm_row_const::all_real_p): New function.
	(tm_row_const::tm_row_const_rep::all_real): New data member.
	(tm_row_const::tm_row_const_rep::all_real_p): New function.
	(tm_row_const::tm_row_const_rep::init): Set all_real and all_cmplx
	to true here.
	(tm_row_const::all_cmplx): Rename from is_cmplx.
	(tm_row_const::all_complex_p): Rename from complex_p.
	(tm_row_const::tm_row_const_rep::all_cmplx): Rename from is_cmplx.
	(tm_row_const::tm_row_const_rep::all_complex_p): Rename from complex_p.
	(tm_row_const::tm_row_const_rep::init): Set all_real and all_cmplx
	to true here.
	(SINGLE_TYPE_CONCAT): New macro.
	(tree_matrix::rvalue): Use it for single type cases.

	* pt-mat.cc: Sprinkle with OCTAVE_QUIT.

2005-10-18  John W. Eaton  <jwe@octave.org>

	* octave.cc (octave_main): If not embedded, call clean_up_and_exit
	instead of return to exit function.

2005-10-18  Arno J. Klaassen  <arno@heho.snv.jussieu.fr>

	* DLD-FUNCTIONS/gplot.l (gnuplot::handle_title):
	Omit class name from declaration.

2005-10-17  Keith Goodman  <kwgoodman@gmail.com>

	* DLD-FUNCTIONS/sort.cc: Doc string fix.
	
2005-10-17  John W. Eaton  <jwe@octave.org>

	* oct-conf.h.in (OCTAVE_CONF_F77_FLOAT_STORE_FLAG): Substitute
	OCTAVE_CONF_F77_FLOAT_STORE_FLAG here.

2005-10-14  John W. Eaton  <jwe@octave.org>

	* mk-errno-list: New script.
	* Makefile.in (oct-errno.cc): Use it.

2005-10-13  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/gplot.l (F__gnuplot_raw__):
	Call print_usage with correct function name.

2005-10-12  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/gplot.l: Major cleanup.
	Built-in variable gnuplot_has_frames no longer necessary.
	(gnuplot): New class to manage multiple gnuplot processes.
	(handle_string): Delete.  It was only used for the case of
	__gnuplot_plot__ "file", which is no longer allowed.

2005-10-05  John W. Eaton  <jwe@octave.org>

	* variables.cc (symbol_exist): Chekck for autoloaded functions.

	* parse.y (Fautoload): New function.
	(autoloading, autoload_map): New static variables.
	(load_fcn_from_file, frob_function): Handle autoloading.
	(lookup_autoload): New function.
	(get_help_from_file): New args, symbol_found and include_file_info.
	Change all callers.

2005-10-05  David Bateman  <dbateman@free.fr>

	* help.cc (try_info): format in command string for mingw.

2005-09-30  John W. Eaton  <jwe@octave.org>

	* ov.cc (octave_value::~octave_value): No need to set rep to zero
	after deleting.

2005-09-29  John W. Eaton  <jwe@octave.org>

	* syscalls.cc (mk_stat_map): Store mode too.
	(FS_ISREG, FS_ISDIR, FS_ISCHR, FS_ISBLK, FS_ISFIFO, FS_ISLNK,
	FS_ISSOCK): New functions.
	(Fstat): Fix docstring.

2005-09-28  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (printf_value_cache::double_value): Force
	character strings to be converted to ASCII equivalents.

	* data.cc (Fcomplex): New function.

	* ov-type-conv.h (OCTAVE_TYPE_CONV_BODY3): Return arg unchanged if
	class name is same as name of conversion.

	* dirfns.cc (Frmdir, Fmkdir): For compatibility, return true for
	success and false for failure.  Return third value, msgid.
	(Frmdir): Handle second arg for recursive behavior.

2005-09-23  John W. Eaton  <jwe@octave.org>

	* parse.y (load_fcn_from_file): Don't look in path if file is
	absolute and has .oct or .m extension.

	* utils.cc (Ferrno_list): New function.

	* oct-errno.h, oct-errno.cc.in: New files.
	* Makefile.in: Add them to the appropriate lists.
	(oct-errno.cc): New rule.
	($(OPT_HANDLERS)): Use $(PERL) instead of just perl.

	* utils.cc: Include oct-errno.h.
	(Ferrno): Rename from FERRNO.  Allow errno to be set.  Allow
	lookups of errno codes by name and access to structure containing
	all errno names and codes.

2005-09-19  John W. Eaton  <jwe@octave.org>

	* pt-bp.cc (tree_breakpoint::visit_index_expression):
	Avoid dereferencing invalid pointer.

2005-09-19  David Bateman  <dbateman@free.fr>

	* Makefile.in (OCT_LINK_DEPS): Include UFsparse libraries.

	* DLD_FUNCTIONS/__glpk__.cc (F__glpk__): Replace isinf with
	xisinf. Allow sparse matrices as second argument.

	* syscalls.cc: Typos.
	* sysdep.cc: Typos.

2005-09-16  John W. Eaton  <jwe@octave.org>

	* syscalls.cc (Fwaitpid): Doc fix.  Expect WNOHANG, WUNTRACED,
	WCONTINUED as args instad of int values.
	Return values are now [pid, status, msg] instad of [pid, msg].
	(WIFEXITED, WEXITSTATUS, WIFSIGNALED, WTERMSIG, WCOREDUMP,
	WIFSTOPPED, WSTOPSIG, WIFCONTINUED): New functions.
	(symbols_of_syscalls): DEFCONST WNOHANG, WUNTRACED, and WCONTINUE.

	* oct-procbuf.cc (octave_procbuf::close): Call octave_syscalls::waitpid
	here instead of calling waitpid directly.
	* sighandlers.cc (OCL_REP::wait): Likewise.
	
	* sysdep.h [__MINGW32__]: Don't define waitpid here.

2005-09-15  John W. Eaton  <jwe@octave.org>

	* sysdep.h [__MINGW32__]: Move to definition of waitpid sysdep.h.

	* sysdep.cc, sighandlers.cc: Rename all win32_ symbols to w32.

	* sysdep.cc (w32_set_quiet_shutdown): New function.
	* sysdep.h: Provide decl.
	* sysdep.cc (MINGW_signal_cleanup): Use it.
	* sighandlers.cc (octave_catch_interrupts): Use it.

	* sysdep.h: Provide decl.
	(MINGW_SIGNAL_CLEANUP): New macro.
	(USE_W32_SIGINT): Move definition here.
	* sighandlers.cc: From here.

	* DLD-FUNCTIONS/cellfun.cc (Fnum2cell): Use print_usage, not usage.
	* DLD-FUNCTIONS/colamd.cc (Fcolamd, Fsymamd, Fetree): Likewise.
	(Fcolamd, Fsymamd) [! HAVE_COLAMD]: Return empty octave_value_list
	object.

	* sysdep.cc (sysdep_cleanup): New function.
	Move w32 clean up code here.
	* toplev.cc (clean_up_and_exit): From here.
	Call sysdep_cleanup here.

2005-09-15  David Bateman  <dbateman@free.fr>

	* Makefile.in (DLD_XSRC): Add ccolamd.cc
	(OCTAVE_LIBS): Add LIBGLOB.
	(OCT_LINK_DEPST, octave): Add AMD, COLAMD, CCOLAMD and CHOLMOD 
	libraries.
	* default.cc (set_default_exec_path, set_default_path,
	maybe_add_default_load_path, LOADPATH): Use SEPCHAR_STR and SEPCHAR.
	* help.cc (display_help_text): Exclude /dev/null on mingw.
	* oct-procbuf.cc (W32POPEN, W32PCLOSE): Macros for cygwin/mingw.
	(octave_procbuf::open, octave_probuf::close): Use them.
	* sighandler.cc (user_abort): New function with core of old
	sigint_handler.
	(sigint_handler): Simplify and specialize for w32.
	(w32_sigint_handler): W32 version of sigint handler.
	(octave_catch_interrupts): Initialize w32 siginit handler.
	* sysdep.cc (MINGW_init): New function.
	(sysdep_init): Use it.
	* toplev.cc (clean_up_and_exit): Clean w32 signalling shutdown.
	* DLD-FUNCTIONS/cellfun.cc (Fnum2cell): New function.
	* DLD-FUNCTIONS/colamd.cc (Fcolamd, Fsymamd): Allow conditional build.
	Include oct-sparse.h rather than colamd.h.
	* DLD-FUNCTIONS/ccolamd.cc: New file with Fccolamd a Fcsymamd.
	
2005-09-14  John W. Eaton  <jwe@octave.org>

	* ov-complex.cc (octave_complex::try_narrowing_conversion):
	Don't drop -0i.
	* ov-cx-mat.cc (octave_complex_matrix::try_narrowing_conversion):
	Likewise.

2005-09-14  Daniel  <durbano@shbano.com>

	* DLD-FUNCTIONS/besselj.cc, DLD-FUNCTIONS/chol.cc,
	DLD-FUNCTIONS/fft.cc, DLD-FUNCTIONS/fftw_wisdom.cc, utils.cc:
	Doc string fixes.
	From Jorge Barros de Abreu <ficmatin01@solar.com.br>.

2005-09-14  David Bateman  <dbateman@free.fr>

	* help.cc (Flookfor, print_lookfor, first_help_sentence):
	New functions.

2005-09-07  Bill Denney  <denney@seas.upenn.edu>

	* dirfns.cc (Fglob): Doc fix.

2005-09-07  John W. Eaton  <jwe@octave.org>

	* ov-struct.cc (Fstruct): Allow struct (zeros (0, N)) to create a
	0xN struct array.

2005-09-04  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/colamd.c (COLAMD_NAME, SYMAMD_NAME): New macros
	(symetree, make_set, link, finf, etdfs, TreePostorder, coletree,
	Fcolamd, Fsymamd, Fetree): Update for 64-bit indexing and colamd
	versin 2.4.

2005-09-01  John W. Eaton  <jwe@octave.org>

	* variables.cc (symbol_out_of_date): Don't check nested functions.

2005-08-31  John W. Eaton  <jwe@octave.org>

	* oct-map.cc (Octave_map::index): Don't crash if index list is empty.
	* ov-str-mat.cc (octave_char_matrix_str::do_index_op_internal):
	Likewise. 

	* oct-map.h (Octave_map::ndims): New function.

2005-08-30  John W. Eaton  <jwe@octave.org>

	* ov-range.h (octave_range::permute): New function.

	* ov-struct.cc (octave_struct::load_ascii,
	octave_struct::load_binary, octave_struct::load_hdf5): Try harder
	to read old-style files correctly.

2005-08-25  David Bateman  <dbateman@free.fr>

        * OPERATORS/op-sm-m.cc, OPERATORS/op-sm-cm.cc, OPERATORS/op-scm-m.cc,
	OPERATORS/op-scm-cm.cc, OPERATORS/op-m-sm.cc, OPERATORS/op-m-scm.cc,
	OPERATORS/op-cm-sm.cc, OPERATORS/op-cm-scm.cc: Use mixed matrix/sparse
	multiply operator rather than casting sparse to matrix.

2005-07-18  John W. Eaton  <jwe@octave.org>

	* strfns.cc (Fstrcmp): New function from Søren Hauberg
	<soren@hauberg.org> and Tom Holroyd <tomh@kurage.nimh.nih.gov>.
	Adapt to Octave conventions.

2005-07-11  David Bateman  <dbateman@free.fr>

	* ov-fc-inline.cc (Fvectorize): Allow string arguments

2005-07-08  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/gplot.l (Fhold, Fishold): Delete.
	(clear_before_plotting): Delete static variable.
	Delete PKG_ADD line for hold.

2005-07-07  John W. Eaton  <jwe@octave.org>

	* pr-output.cc (pr_plus_format): Delete "static" from template decl.

	* oct-stream.cc (octave_scan): Delete explicit instantiation of
	octave_scan<double> since a specialization is provided.

	* DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): Include
	<algorithm>, for std::transform decl.  Use std qualifier for
	transform and tolower.

2005-07-05  Antoine Moreau  <antoine.moreau@univ-bpclermont.fr>

	* DLD-FUNCTIONS/betainc.cc (Fbetainc): Fix doc string to match
	function definition..

2005-07-05  Mats Jansson  <mats.e.jansson@home.se>

         * file-io.cc (Fmkstemp): Check if second argument is true
         before marking file for deletion.

2005-07-05  John W. Eaton  <jwe@octave.org>

	* ov-str-mat.cc (octave_char_matrix_str::do_index_op_internal):
	Rename from char_matrix_str::do_index_op.  New arg, type.
	ov-str-mat.h (octave_char_matrix_str::do_index_op): Define using
	do_index_op_internal.
	(octave_char_matrix_sq_str::do_index_op): New function.

2005-07-01  John W. Eaton  <jwe@octave.org>

	* parse.y (end_error): Also handle end_try_catch case.

2005-06-17  John W. Eaton  <jwe@octave.org>

	* help.cc (help_from_list, help_from_symbol_table, 
	help_from_file): New arg, symbol_found.
	(builtin_help): Use symbol_found arg to determine whether help
	text is empty or symbol is not available.

	* symtab.cc (symbol_record::print_info): Print more info.

	* DLD-FUNCTIONS/dispatch.cc (Fdispatch_help): Delete.
	(dispatch_record): Don't prepend "<>" to help text.
	(Fdispatch): Don't setup dispatched help.

	* help.cc (extract_help_from_dispatch): New function.
	(help_from_symbol_table): Use it.
	* defun.cc (print_usage): Use it.

	* toplev.cc (octave_config_info): Include localapifcnfiledir and
	localapioctfiledir in the list.

	* symtab.h (symbol_record::alias): New arg, mark_to_clear.
	(symbol_record::aliases_to_clear): New data member.
	(symbol_record::push_alias_to_clear): New function.
	* symtab.cc (symbol_record::alias): If mark_to_clear is true, push
	this pointer on aliases_to_clear stack for s.
	(symbol_record::clear): Also clear aliases_to_clear_stack.

	* defun.cc (install_dld_function): Create full file name alias in
	fbi_sym_tab and hide it from view.
	Don't call protect or make_eternal on sym_rec.

	* variables.cc (fcn_out_of_date): New function.
	(symbol_out_of_date): Also check for symbol using full function
	file name.

	* symtab.h (symbol_record::visible): New data member.
	(symbol_record::hide, symbol_record::show, symbol_record::is_visible):
	New functions. 

	* symtab.h (symbol_record::maybe_delete_def): New private function.
	* symtab.cc (symbol_record::clear, symbol_record::alias,
	symbol_record::pop_context,
	symbol_record::define (octave_function *, unsigned int)): Use it.
	(symbol_table::symbol_list): Only include visible symbols in list.

	* parse.y (frob_function): Hide nested function names.

	* parse.y (frob_function): Create full file name alias in
	fbi_sym_tab and hide it from view.
	* defun.cc (install_dld_function): Likewise.

2005-06-16  John W. Eaton  <jwe@octave.org>

	* ov-dld-fcn.cc (octave_dld_function): Check Voct_file_dir to see
	if function is system file, Vfcn_file_dir.
	* defaults.cc (set_default_oct_file_dir): New function.
	(install_defaults): Call it.
	(Voct_file_dir): New global variable.
	* defaults.h.in (Voct_file_dir): Provide decl.

	* variables.cc (function_out_of_date_internal): Use
	Vignore_function_time_stamp only to avoid calling stat.
	(symbol_out_of_date): Don't check Vignore_function_time_stamp here.
	(function_out_of_date): Rename from function_out_of_date_internal.

	* defaults.cc (loadpath): Don't do anything if value is unchanged.
	If loadpath changes, also update Vlast_prompt_time.

2005-06-14  John W. Eaton  <jwe@octave.org>

	* pt-mat.cc (Vwarn_string_concat): Default value now false.
	(symbols_of_pt_mat): Change initial value here as well.

	* ls-mat5.cc, mappers.cc, oct-stream.cc, pr-output.cc: Change all
	uses of octave_is_NaN_or_NA to xisnan.

2005-06-14  Keith Goodman  <kwgoodman@gmail.com>

	* input.cc (get_user_input): Renamed debug commands to dbnext,
	dbstep, and dbcont.
	* pt.cc: Renamed dbg_next to dbnext in comment string.
	* pt.h: Renamed dbg_next to dbnext in comment string.

2005-06-14  David Bateman  <dbateman@free.fr>

	* pt-arg-list.cc (F__end__): Return 1 for dimensions larger than ndim.

2005-06-14  John W. Eaton  <jwe@octave.org>

	* ls-mat5.cc (save_mat5_array_length): Special case for NaN, NA,
	and Inf values.  Only check if abs value is greater than FLT_MAX.

2005-06-09  David Bateman  <dbateman@free.fr>

	* ls-mat5.cc (save_mat5_element_length): 1 element strings will be
	saved in a compressed format, so calculate the length accordingly.

2005-05-30  David Bateman  <dbateman@free.fr>

	* ls-mat5.cc (read_mat5_binary_element): Don't convert to string
	if matrix is not of type mxCHAR_CLASS.

2005-05-23  John W. Eaton  <jwe@octave.org>

	* file-io.cc (Ffopen): Don't fail with internal error message if
	we fail to create a valid stream object.
	(do_stream_open (const std::string&, const std::string&,
	const std::string&, int&): Always create octave_stream object,
	even if file pointer returne from fopen is 0.

	* load-save.cc (gripe_file_open): New function.
	(get_file_format, Fload, Fsave): Use it.

	* DLD-FUNCTIONS/sort.cc (mx_sort, mx_sort_indexed): Return
	appropriately sized empty values for empty args.

	* debug.cc (Fdbwhere, get_user_function): Look at
	curr_caller_function, not curr_function, since function is now set
	inside mapper, built-in (and therefore dld) functions too.

2005-05-21  John W. Eaton  <jwe@octave.org>

	* pr-output.cc, pr-output.h (Vprint_empty_dimensions): Now extern.
	* ov-cell.cc (octave_cell::print_raw): Conditionally print
	dimensions of empty 2-d cell arrays.

	* DLD-FUNCTIONS/sort.cc (mx_sort, mx_sort_indexed): Return empty
	values for empty args.

	* lex.l (handle_string): If single-quote string, \ and . have no
	special meaning.

2005-05-18  John W. Eaton  <jwe@octave.org>

	* pt-colon.cc (tree_colon_expression::make_range): Don't require
	scalars values as range components.

	* version.h (OCTAVE_VERSION): Now 2.9.3
	(OCTAVE_API_VERSION): Now api-v16.

	* ov-base-sparse.cc (octave_base_sparse<T>::print_raw):
	Make spacing of output consistent with other parts of Octave.

	* DLD-FUNCTIONS/rand.cc (do_rand): Chop trailing singelton
	dimensions before generating array.

2005-05-17  John W. Eaton  <jwe@octave.org>

	* ov.cc (install_types): Don't call octave_stream::register_type.
	* ov.h, ov.cc (octave_value::octave_value (const octave_stream&,
	int): Delete constructor.
	(octave_value::is_stream, octave_value::stream_value,
	octave_value::stream_number): Delete functions.
	* ov-base.h (octave_base_value::is_stream): Delete function.
	* ov-base.h, ov-base.cc (octave_base_value::stream_value,
	octave_base_value::stream_number): Delete functions.
	* file-io.cc (Fisstream): Delete function.
	* op-file.h, op-file.cc, OPERATORS/op-fil-sbm.cc,
	OPERATORS/op-fil-scm.cc, OPERATORS/op-fil-sm.cc,
	* OPERATORS/op-fil-b.cc, OPERATORS/op-fil-bm.cc,
	OPERATORS/op-fil-cm.cc, OPERATORS/op-fil-cs.cc,
	OPERATORS/op-fil-m.cc, OPERATORS/op-fil-s.cc,
	OPERATORS/op-fil-lis.cc, OPERATORS/op-fil-rec.cc,
	OPERATORS/op-fil-str.cc: Delete files.
	* Makefile.in (OP_XSRC, SPARSE_OP_XSRC): Delete op-fil-*.cc from
	the lists.
	(OV_INCLUDES): Delete op-file.h from the list.
	(OV_SRC): Delete op-file.cc from the list.
	* oct-stream.cc, oct-stream.h (octave_stream_list::insert,
	octave_stream_list::do_insert): Return stream number instead of
	octave_value.

2005-05-16  David Bateman  <dbateman@free.fr>

	* ls-mat.cc (save_mat5_binary_element): Increase size of 
	compression buffer.
	(load_mat5_binary_element): Allow ASCII encoded as UTF8,
	and give error messages for multi-byte UTF8 and UTF16 and UTF32
	encodings.

	* ls-hdf5.h (H5T_NATIVE_IDX): New macro defining native indexing
	type for HDF5 files

	* ls-hdf5.cc (save_hdf5_empty, load_hdf5_empty): Use 
	H5T_NATIVE_IDX to allow 64-bit indexing.
	* ov-bool-sparse.cc (save_hdf5, load_hdf5): ditto.
	* ov-re-sparse.cc (save_hdf5, load_hdf5): ditto.
	* ov-cx-sparse.cc (save_hdf5, load_hdf5): ditto.
	* ov-cell.cc (save_hdf5, load_hdf5): ditto.

	* load-save.cc (parse_save_options): Remove -nozip option.
	(Fsave): If user defines file format, ignore completely the default
	file format options.
	
2005-05-12  John W. Eaton  <jwe@octave.org>

	* Makefile.in (oct-gperf.h): Try harder to cause Make to exit here
	if gperf is missing or fails to create a valid file.

2005-05-10  John W. Eaton  <jwe@octave.org>

	* lex.l (<MATRIX_START>{SNLCMT}*\]{S}*): If whitespace was gobbled,
	unput SPC before returning the token.
	(<MATRIX_START>{SNLCMT}*\}{S}*): Likewise.

2005-05-09  John W. Eaton  <jwe@octave.org>

	* parse.y (except_command): Make catch clause optional in try
	statements.
	* pt-except.cc (tree_try_catch_command::eval):
	Always buffer error messages.

2005-05-06  John W. Eaton  <jwe@octave.org>

	* ov-struct.cc (octave_struct::save_ascii,
	octave_struct::save_binary, octave_sruct::save_hdf5):
	Always save cell array.
	(octave_struct::load_ascii, octave_struct::load_binary,
	octave_sruct::load_hdf5): Try to read old-style files correctly.

	* DLD-FUNCTIONS/__qp__.cc (qp): Use chol2inv to compute inverse
	from Cholesky factors.
	(cholinv): Delete.

	* DLD-FUNCTIONS/chol.cc (Fcholinv): New function.
	(Fchol2inv): New function.

2005-05-05  Keith Goodman  <kwgoodman@gmail.com>

	* ov-usr-fcn.cc	(Fnargout, Fnargin): Update doc strings.
	* help.cc (keywords): Update doc strings for varargin, varargout.

2005-05-05  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (BEGIN_S_CONVERSION): Correctly handle width
	specifiers.

2005-05-04  John W. Eaton  <jwe@octave.org>

	* ls-mat5.cc (read_mat5_binary_element): Implement reading of N-d
	structure arrays.

	* ov-struct.cc (octave_struct::load_hdf5,
	octave_struct::load_binary, octave_struct::load_ascii): Assign
	cell_value to map slot, not octave_value containing the cell.

2005-05-02  John W. Eaton  <jwe@octave.org>

	* error.cc (Flasterr): Don't access argv if an error occurs when
	creating it.

	* mkgendoc (main): Print header message.

2005-05-02  Bill Denney  <denney@seas.upenn.edu>

	* data.cc, defaults.cc, DLD-FUNCTIONS/qz.cc, file-io.cc,
	sighandlers.cc, syscalls.cc: Docstring fixes.

2005-05-02  John W. Eaton  <jwe@octave.org>

	* pr-output.cc (octave_print_internal (std::ostream&,
	const Range&, bool, int)): Don't print newline at end of broken
	rows (that is handled by pr_col_num_header).
	From Keith Goodman <kwgoodman@gmail.com>.

	* Makefile.in (octave$(EXEEXT)): List $(UMFPACK_LIBS) ahead of
	$(BLAS_LIBS).
	(OCTAVE_LIBS): Include $(GLPK_LIBS) in the list if dynamic linking
	is not enabled.
	From Dmitri A. Sergatskov <dasergatskov@gmail.com>.

2005-05-02  John W. Eaton  <jwe@octave.org>

	* oct-map.h, oct-map.cc (Octave_map::seek, Octave_map::contents):
	New non-const versions.
	(Octave_map::assign (const octave_value_list&,
	const std::string&, const Cell&)): Allow both tmp RHS and LHS to
	be resized.  For clarity, always resize to new_dims.

2005-05-02  David Bateman  <dbateman@free.fr>

	* ov-re-sparse.cc, ov-cx-sparse.cc (load_binary): read save_type into
	one byte variable.
	
2005-04-29  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (DO_LITERAL_CONVERSION): Cast fmt[i] to unsigned
	char for comparison.

	* c-file-ptr-stream.h (c_file_ptr_stream): New template class,
	converted from i_c_file_ptr_stream.
	(i_c_file_ptr_stream, o_c_file_ptr_stream, io_c_file_ptr_stream):
	Now typedefs.
	(i_c_zfile_ptr_stream, o_c_zfile_ptr_stream, io_c_zfile_ptr_stream):
	New typedefs.
	* c-file-ptr-stream.h, c-file-ptr-stream.cc (c_zfile_ptr_buf):
	New class.

	* oct-stdstrm.h (class octave_tstdiostream): New template class,
	converted from octave_stdiostream.
	(octave_stdiostream): Now a typedef.
	[HAVE_ZLIB] (octave_zstdiostream): New a typedef.
	* oct-stdstrm.cc: Delete.
	* Makefile.in (DIST_SRC): Remove it from the list.

2005-04-29  David Bateman  <dbateman@free.fr>

	* Makefile.in: Add matrix_type.cc and spkron.cc to DLD_XSRC.

	* ls.mat.cc (read_mat5_binary_element): Allow for endian change
	for compressed data elements.

	* ov-base-sparse.cc (assign): Invalidate matrix type.

	* ov-base-sparse.cc (SparseType sparse_type (void), 
	SparseType sparse_type (const SparseType&):
	Functions to read and set sparse matrix type.

	* ov-bool-sparse.cc (load_binary): Remove third argument.
	(load_hdf5): Cast hsize_t comparisions with int to avoid warning.
	* ov-cx-sparse.cc (load_hdf5): Ditto.
	* ov-re-sparse.cc (load_hdf5): Ditto.

	* ov-re-sparse.cc (convert_to_str_internal): Add third argument
	for string type.
	* ov-re-sparse.h (convert_to_str_internal): Adject declaration.

	* sparse-xdiv.cc (xdiv, xleftdiv): Pass SparseType as third
	argument, use it and return it to allow caching of type.
	* sparse-xdiv.h (xdiv, xleftdiv): Change declarations for third
	argument of type SparseType.

	* DLD-FUNCTIONS/luinc.cc (Fluinc): Use type_name and not
	class_name to test for real/complex sparse matrices.
	Set matrix type.

	* DLD-FUNCTIONS/splu.cc (Fsplu): Set matrix type.

	* OPERATORS/op-cm-scm.cc, OPERATORS/op-cm-sm.cc,
	OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc,
	OPERATORS/op-m-scm.cc, OPERATORS/op-m-sm.cc,
	OPERATORS/op-s-scm.cc, OPERATORS/op-s-sm.cc,
	OPERATORS/op-scm-cm.cc, OPERATORS/op-scm-cs.cc,
	OPERATORS/op-scm-m.cc, OPERATORS/op-scm-s.cc,
	OPERATORS/op-scm-scm.cc, OPERATORS/op-scm-sm.cc,
	OPERATORS/op-sm-cm.cc, OPERATORS/op-sm-cs.cc,
	OPERATORS/op-sm-m.cc, OPERATORS/op-sm-s.cc,
	OPERATORS/op-sm-scm.cc, OPERATORS/op-sm-sm.cc (div, ldiv):
	Pass and recache SparseType wirh xdiv/xleftdiv.

2005-04-29  John W. Eaton  <jwe@octave.org>

	* file-io.cc (maybe_warn_interface_change): Delete function.
	(fopen_mode_to_ios_mode): Don't call it.

2005-04-27  John W. Eaton  <jwe@octave.org>

	* ov-fcn-handle.cc (octave_fcn_handle::subsref):
	Check whether function referenced by handle is out of date.
	(Ffunctions): Tag nameless user function as "command-line".

	* variables.cc (symbol_out_of_date (octave_fucntion *)): New function.
	(function_out_of_date): New function.
	* parse.y (load_fcn_from_file (const std::string&, bool)):
	New function.

	* DLD-FUNCTIONS/gplot.l (gnuplot_init): New function to handle
	initialization.  If builtin variables have already been installed,
	simply update our cached values.
	(F__gnuplot_init__): Call gnuplot_init to do all the real work.
	(Fclearplot, Fcloseplot, Fhold, Fishold, Fpurge_tmp_files,
	F__gnuplot_raw__, F__gnuplot_set__, F__gnuplot_plot__,
	F__gnuplot_splot__, F__gnuplot_replot__, Fgplot, Fgsplot, Fgraw,
	Fgset, Fgshow): Call gnuplot_init before doing anything.

	* parse.y: (safe_fclose): Delete comment list to avoid memory leak.
	(parse_and_execute (FILE *)): Also save and restore global_command.

2005-04-26  John W. Eaton  <jwe@octave.org>

	* mkbuiltins (VAR_FILES): Expect $(VAR_FILES) to have .df suffix.

	* Makefile.in (clean): Also remove $(DLD_PICOBJ).
	Use mk-oct-links --delete to remove links to .oct files. 
	Remove $(DOC_FILES) not $(DEF_FILES) and $(VAR_FILES).

	* mk-oct-links (mk-oct-links): Handle --delete option.
	Rename -p option to be --print.  Skip nonexistent .df files.

2005-04-25  John W. Eaton  <jwe@octave.org>

	* oct-hist.cc (default_history_file, default_history_size): Now static.
	* oct-hist.h: Delete decls.

	* oct-hist.cc (default_history_timestamp_format,
	default_history_timestamp_format): New functions.
	(Vdefault_history_timestamp_format): New variable.
	(symbols_of_oct_hist): DEFVAR it.
	(octave_history_write_timestamp): New function.
	* oct-hist.h (octave_history_write_timestamp): Provide decl.
	* toplev.cc (): call octave_history_write_timestamp here.
	* octave.cc (maximum_braindamage):
	Bind history_timestamp_format_string here.

2005-04-22  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.9.2.
	(OCTAVE_API_VERSION): Now api-v15.

	* pager.cc (default_pager): Also append -X.

	* DLD-FUNCTIONS/dispatch.cc (Fdispatch): Dispatch help on "string"
	and "sq_string" types.
	(dispatch_record): Add extra space to force new paragraph after
	each dispatched function name if we are formatting with Texinfo.
	Force noindent of preceding "Overloaded function:" tag.

2005-04-21  John W Eaton  <jwe@octave.org>

	* ls-mat5.cc (read_mat5_binary_element): Only read sparse matrix
	values if sizeof (int) == sizeof (octave_idx_type).

	* DLD-FUNCTIONS/colamd.cc: These functions only work if
	sizeof (int) == sizeof (octave_idx_type).

	* Makefile.in (parse.cc): Expect 14 shift/reduce conflicts.

	* parse.y (USING TITLE WITH AXES COLON OPEN_BRACE CLEAR):
	Delete unused tokens.

	* DLD-FUNCTIONS/__qp__.cc (qp): Use octave_idx_type where needed.

	* DLD-FUNCTIONS/__qp__.cc: New file.
	* Makefile.in (DLD_XSRC): Add it to the list.

2005-04-20  John W. Eaton  <jwe@octave.org>

	* lex.l (IDENT): Allow $ in identifiers.
	* utils.cc (valid_identifier): Likewise.

2005-04-19  John W. Eaton  <jwe@octave.org>

	* toplev.cc (Fsystem): Move enum exec_type declaration to file
	scope and rename system_exec_type.  Change all uses.

2005-04-14  David Bateman  <dbateman@free.fr>

	* load-save.cc (Vdefault_save_format, Voctave_core_file_format):
	Delete variables.
	(Vdefault_save_options, Voctave_core_file_options): New variables.
	(get_save_format): Delete function.
	(parse_save_options (const string_vector&, ...),
	parse_save_options (const std::string&, ...)): New functions.
	(dump_octave_core): Allow save_as_floats to be used.
	(dump_octave_core): Parse save options.
	(Fsave): Split parsing of options, and default formats.
	(default_save_format): Delete function and DEFVAR.
	(default_save_options): New function.  DEFVAR it.
	(octave_core_file_format): Delete function and DEFVAR.
	(octave_core_file_options): New function.  DEFVAR it.
	
	* octave.cc (default_save_format): Delete binding
	(default_save_options): New bindings

	* Makefile.in: Add luinc.cc to DLD_XSRC.
	* DLD-FUNCTIONS/luinc.cc: New file for incomplete LU factorization.

	* ov-bool-sparse.h (index_vector): New function.
	* ov-re-sparse.cc (index_vector): Ditto.
	* ov-re-sparse.h (index_vector): Definition.

	* ov-mapper.cc (any_element_less_than, any_element_greater_than):
	New versions for SparseMatrix
	(SPARSE_MAPPER_LOOP_2, SPARSE_MAPPER_LOOP_1, SPARSE_MAPPER_LOOP):
	New macros.
	(octave_mapper::apply): Add special cases for sparse arguments to
	the mapper functions

	* ov-re-sparse.cc (streamoff_array_value): Use octave_idx_type.
	(convert_to_str_internal): New function.
	* ov-re-sparse.h (convert_to_str_internal): Definition.
	
	* DLD-FUNCTIONS/sparse.cc (Fsparse): More care for nargin=2 case.

	* DLD-FUNCTIONS/splu.cc (Fsplu): Use octave_idx_type.
	
2005-04-14  John W. Eaton  <jwe@octave.org>

	* strfns.cc (Fchar): If arg is a dq string, return a dq string.

	* pt-mat.cc (Vwarn_string_concat): New static variable.
	(symbols_of_pt_mat): DEFVAR it.
	(warn_string_concat): New function.
	(maybe_warn_string_concat): New function.
	(tree_matrix::rvalue): If all args are single quoted strings,
	create a single quoted string object.  If all args are strings
	(any type), create a double quoted string object.  If a mixture of
	string types, maybe warn.
	(class tm_row_const, class tm_row_const_rep, class tm_const):
	Note whether all values are double or single quoted strings.

	* ov.h (octave_value::is_dq_string): New function.

2005-04-13  John W. Eaton  <jwe@octave.org>

	* strfns.cc (Fchar): Create sq_string objects here.

2005-04-12  John W. Eaton  <jwe@octave.org>

	* file-io.cc (Ffprintf, Fprintf, Fsprintf):
	Pass octave_value to octave_stream::printf for FMT.
	(Fscanf, Fsscanf): Likewise, for octave_stream::scanf and
	octave_stream::oscanf.

	* oct-stream.cc, oct-stream.h (octave_stream::printf,
	octave_stream::scanf, octave_stream::oscanf): New versions that
	accept an octave_value for FMT.
	(octave_stream::puts): New version that accepts octave_value for
	value to print.
	(octave_base_stream::do_scanf): If all_char_conv, force
	conversion to string to avoid warning.

	* ov-str-mat.h, ov-str-mat.cc (octave_char_matrix_sq_str): New class.
	(octave_char_matrix_dq_str): New typedef.

	* ov.h, ov.cc: All string constructors now take type argument.

	* ov.cc (install_types): Register octave_char_matrix_sq_str.

	* ov.h (octave_value::convert_to_str): New arg, type.
	(octave_value::convert_to_str_internal): Likewise.
	Change all derived classes.

	* ov.h (octave_value::is_sq_string): New predicate.

	* octave.gperf (__FILE__): Now a DQ_STRING.

	* ls-mat4.cc (read_mat_binary_data): Force sq strings here.
	* ls-mat5.cc (read_mat5_binary_element): And here.

	* lex.l (<COMMAND_START>[\;\,]): Return SQ_STRING, not STRING.
	(<COMMAND_START>[^#% \t\r\n\;\,\"\'][^ \t\r\n\;\,]*{S}*): Likewise.
	(handle_string): Type of string to return depends on delimeter.

	* parse.y (DQ_STRING, SQ_STRING): New token types.
	(STRING): Delete token type.
	(string): New non-terminal.
	(constant): Recognize string here instead of STRING.
	(word_list): Likewise.
	(opt_sep): Handle DQ_STRING and SQ_STRING.

	* OPERATORS/op-str-m.cc, OPERATORS/op-str-s.cc,
	OPERATORS/op-str-str.cc: Define operators for both sq and dq
	strings.

2005-04-08  John W. Eaton  <jwe@octave.org>

	* Makefile.in (clean): Use exact filenames instead of *.xxx.
	Also remove PKG_ADD.
	(DISTFILES): Add gplot.cc to the list.
	(maintainer-clean): Remove gplot.cc here.

	* Initial merge of 64-bit changes from Clinton Chee:

	2005-04-07  John W. Eaton  <jwe@octave.org>

	* ls-oct-ascii.h, ls-oct-ascii.cc (extract_keyword): Now template
	functions defined in the header file.

	* ls-mat5.cc, ov-base-sparse.h, ov-base.h, ov-bool-sparse.cc
	ov-cx-sparse.cc, ov-re-sparse.cc, ov.cc, pt-loop.cc,
	sparse-xdiv.cc, sparse-xpow.cc, DLD-FUNCTIONS/sparse.cc,
	DLD-FUNCTIONS/spdet.cc:
	Use octave_idx_type instead of int where needed.

	2005-03-31  Clinton Chee  <chee@parallel.hpc.unsw.edu.au>

	* Cell.cc, Cell.h, data.cc, defaults.cc, dirfns.cc, file-io.cc,
	gripes.cc, gripes.h, ls-mat-ascii.cc, ls-mat4.cc, ls-oct-ascii.cc,
	oct-map.cc, oct-map.h, oct-obj.cc, oct-obj.h, oct-stream.cc,
	oct-stream.h, octave.cc, ops.h, ov-base-mat.cc, ov-base.h,
	ov-bool-mat.cc, ov-cell.cc, ov-cs-list.cc, ov-cx-mat.cc,
	ov-intx.h, ov-list.cc, ov-mapper.cc, ov-range.cc, ov-range.h,
	ov-re-mat.cc, ov-scalar.h, ov-str-mat.cc, ov-struct.cc, ov.cc,
	ov.h, pr-output.cc, pt-arg-list.cc, pt-cell.cc, pt-loop.cc,
	pt-mat.cc, pt-select.cc, symtab.h, utils.cc, utils.h, xdiv.cc,
	xpow.cc:
	Use octave_idx_type instead of int where needed.

	2005-04-01  John W. Eaton  <jwe@octave.org>

	* toplev.cc (octave_config_info): Add USE_64_BIT_IDX_T to the list.
	* oct-conf.h.in (OCTAVE_CONF_USE_64_BIT_IDX_T): Substitute here.

	2005-03-31  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/sort.cc: Don't use unsigned int for index into
	dim_vector, or cast dim to unsigned int.
	(Fsort): No need to cast arg before asking for dims.

	* DLD-FUNCTIONS/gcd.cc (Fgcd): Use OCTAVE_LOCAL_BUFFER to allocate
	local array of NDArray objects.

	2005-03-31  Clinton Chee  <chee@parallel.hpc.unsw.edu.au>

	* DLD-FUNCTIONS/balance.cc, DLD-FUNCTIONS/besselj.cc,
	DLD-FUNCTIONS/chol.cc, DLD-FUNCTIONS/colloc.cc,
	DLD-FUNCTIONS/daspk.cc, DLD-FUNCTIONS/dasrt.cc,
	DLD-FUNCTIONS/dassl.cc, DLD-FUNCTIONS/det.cc,
	DLD-FUNCTIONS/eig.cc, DLD-FUNCTIONS/expm.cc, DLD-FUNCTIONS/fft.cc,
	DLD-FUNCTIONS/fft2.cc, DLD-FUNCTIONS/fftn.cc,
	DLD-FUNCTIONS/fftw_wisdom.cc, DLD-FUNCTIONS/filter.cc,
	DLD-FUNCTIONS/find.cc, DLD-FUNCTIONS/fsolve.cc,
	DLD-FUNCTIONS/gcd.cc, DLD-FUNCTIONS/hess.cc, DLD-FUNCTIONS/inv.cc,
	DLD-FUNCTIONS/kron.cc, DLD-FUNCTIONS/lu.cc,
	DLD-FUNCTIONS/minmax.cc, DLD-FUNCTIONS/quad.cc,
	DLD-FUNCTIONS/qz.cc, DLD-FUNCTIONS/rand.cc,
	DLD-FUNCTIONS/schur.cc, DLD-FUNCTIONS/sort.cc,
	DLD-FUNCTIONS/sqrtm.cc, DLD-FUNCTIONS/svd.cc,
	DLD-FUNCTIONS/syl.cc:
	Use octave_idx_type instead of int where needed.

2005-04-06  David Bateman  <dbateman@free.fr>

	* Makefile.in: Link to UMFPACK_LIBS. Add zfstream.{cc,h} to build and 
	dist files.

	* zfstream.cc: New file for C++ binding for fstream like class for 
	zlib.

	* zfstream.h: Definition for fstream like C++ bindings to zlib.

	* load-save.cc (static bool check_gzip_magic (const std::string&)): 
	New function to look for GZIP magic 
	(static load_save_format get_file_format (const istream &file)): New 
	function split from old get_file_format but passed istream to allow
	use with zlib istream.
	(static load_save_format get_file_format (const std::string&, 
	const std::string&, bool)): Modify the test uncompressed file first, 
	then compressed version
	(Fload) Allow -v6, -6, -v7 and -7 options. Split load code to allow
	use of zlib.
	(Fsave) Allow -zip, -z, -v6, -6, -v7 and -7 options. Split save code
	to allow use of zlib.

	* load-save.h: add LS_MAT7_BINARY to load_save_format enum

	* ls-mat5.cc (read_mat5_binary_element): Test for miCOMPRESSED flag for
	matlab v7 files, and decompress data in memory. Allow reading of matlab
	logical variables either in mxDOUBLE_CLASS or mxUINT8_CLASS.
	(int save_mat5_array_length(const double*, ...): New function to 
	calculate number of bytes used to save NDArray.
	(int save_mat5_array_length(const Complex*, ...): New function to 
	calculate number of bytes used to save ComplexNDArray.
	(int save_mat5_element_length): New function to find number of bytes 
	needed to save data element.
	(save_mat5_binary_element): New input arguments, mat7_format and
	compressing, that define if we are in a matlab v7 format and where we 
	are currently compressing the data element. If mat7_format use
	miCOMPRESSED flag for matlab v7 files, and compress data in memory. 
	Add capability to save logical variables as mxUINT8_CLASS. If v7 
	format maximum variable length is 63 characters and not 31. Use the
	save_mat5_element_length function to pre-calculate the number of bytes
	taken by a variable rather than use a negative seek to correct after 
	writing (zlib can't do negative seeking)

	* ls-mat5.h: Add to miCOMPRESSED, miUTF8, miUTF16 and miUTF32 flags to 
	the enum mat5_data_type.
	(save_mat5_binary_element): Add args mat7_format and compressing to the
	definition.

2005-04-06  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-scm-scm.cc: Delete #pragma implementation.

2005-04-05  John W. Eaton  <jwe@octave.org>

	* ov-ch-mat.h (octave_char_matrix::index_vector): New function.

	* oct-stream.cc (BEGIN_C_CONVERSION): Clear stream state if
	we hit EOF after we read something.

	* pt-assign.cc (tree_multi_assignment::rvalue):
	Allow assignments of the form [a,b,c] = x{:}.

2005-03-30  John W. Eaton  <jwe@octave.org>

	* mappers.cc (install_mapper_functions): Use std:: as needed.
	* defun-int.h (DEFUN_MAPPER_INTERNAL): Don't use X_CAST on
	function pointer args.

	* ov-complex.cc, ov-cx-mat.cc, xpow.cc, ls-mat5.cc: Use std:: for
	Complex functions instead of relying on wrappers from oct-cmplx.h.

	* oct-stream.cc (octave_scan): Initialize c1 to EOF.

2005-03-29  John W. Eaton  <jwe@octave.org>

	* utils.cc (get_dimensions): Produce error instead of warning if
	given a matrix argument.

	* load-save.cc (Fload, Fsave): Also accept -V4 option.

	* ls-hdf5.h (hdf5_fstreambase::hdf5_fstreambase,
	hdf5_fstreambase::open): Use & instead of == to test whether mode
	is std::ios::in or std::ios::out.
	(hd5_ifstream::istream, hd5_ifstream::open, hd5_ofstream::istream,
	hd5_ofstream::open): Default mode now includes binary flag.

2005-03-28  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_stream::write): For compatibility, Write
	zeros instead of seeking if SKIP is nonzero.

	* DLD-FUNCTIONS/gplot.l (Fgraw): Recommend __gnuplot_raw__, not
	__gnuplot__raw__.
	(Fgshow): Recommend __gnuplot_show__, not __gnuplot__show__.
	Don't add "mark_as_rawcommand ("replot")" to PKG_ADD file.

2005-03-26  John W. Eaton <jwe@octave.org>

	* input.cc (gnu_readline): Don't wrap call to command_editor::readline
	with {BEGIN,END}_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE.

2005-03-25  John W. Eaton  <jwe@octave.org>

	* toplev.cc (main_loop): Don't use octave_set_current_context here.

	* pt-loop.cc (simple_for_loop::eval): In for i = matrix ... end,
	skip loop if matrix is empty.  Likewise for cell arrays.

2005-03-24  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Texinfoize doc string.

	* Makefile.in (install-oct): Always create $(octfiledir) and
	install PKG_ADD file there.

	* octave.cc (octave_main): Fix logic in test for exit after
	evaluating --eval option code.

2005-03-23  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Require 9 arguments.
	Print error messages and return early if value extractions fail.
	Default for message level now 0.
	Rename local variable error to be errnum.
	(glpk_fault_hook): Call message instead of writing to octave_stderr.
	(glpk_fault_hook): Call error instead of writing to octave_stderr.
	(glpk): Likewise.
	Declare mark static.  Delete declaration of fperr.
	(glpk): Delete unnecessary casts.

	* DLD-FUNCTIONS/__glpk__.cc (OCTAVE_GLPK_GET_REAL_PARAM,
	OCTAVE_GLPK_GET_INT_PARAM): New macros.
	(F__glpk__): Use them.

	* DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Accept lpsolver and
	save_pb in param arg instead of as separate args.
	Arg list now matches new interface for glpk.m.
	Don't return lambda and redcosts fields in extra if isMIP.

	* toplev.cc (do_octave_atexit): Call reset_error_handler before
	each call to feval.

2005-03-22  John W. Eaton  <jwe@octave.org>

	* Makefile.in: Add special rule for __glpk__.oct.

	* toplev.cc (octave_config_info): Add GLPK_LIBS to the list.
	* oct-conf.h.in (OCTAVE_CONF_GLPK_LIBS): Substitute here.

	* DLD-FUNCTIONS/__glpk__.cc (F__glpk__, glpk):
	Adapt to Octave coding style.
	(glpk): Move decls closer to first use.
	(F__glpk__): Eliminate unnecessary loop seting inf values.
	Ensure that isMIP is initialized.
	Declare sense, nz, and isMIP volatile to avoid GCC warnings that
	these variables might be might be clobbered by `longjmp' or `vfork'

	* DLD-FUNCTIONS/__glpk__.cc: New file.

	* Makefile.in (DLD_XSRC): Add it to the list.

2005-03-21  John W. Eaton  <jwe@octave.org>

	* octave.cc (maximum_braindamage):
	Don't set warn_matlab_incompatible to true.

2005-03-17  John W. Eaton  <jwe@octave.org>

	* lex.l (class bracket_brace_paren_nesting_level): Use static
	const int members instead of anonymous enum.

2005-03-16  John W. Eaton  <jwe@octave.org>

	* ov-struct.cc (octave_struct::save_ascii): Don't convert Cell
	object to cs-list.
	(octave_struct::save_binary): Likewise
	(octave_struct::save_hdf5): Likewise.

	* DLD-FUNCTIONS/gplot.l (Fset, Fshow): Delete.
	(F__gnuplot_plot__): Rename from Fgplot.
	(F__gnuplot_splot__): Rename from Fgsplot.
	(F__gnuplot_raw__): Rename from Fgraw.
	(F__gnuplot_set__): Rename from Fgset.
	(F__gnuplot_show__): Rename from Fgshow.
	(F__gnuplot_replot__): Rename from Freplot.
	(WARN_DEPRECATED, DEPRECATED_BODY): New macros.
	(Fgplot, Fgsplot, Fgraw, Fgset, Fgshow): New functions.

2005-03-15  John W. Eaton  <jwe@octave.org>

	* lex.l (<COMMAND_START>{NL}): Reset lexer_flags.doing_rawcommand
	state here.

	* version.h (OCTAVE_API_VERSION): Now 2.9.0.
	(OCTAVE_API_VERSION): Now api-v14.

	* Makefile.in (INCLUDES): Delete sparse-ops.h from the list.

	* cellfun.cc: New function from Octave-forge.  Adapt to Octave
	coding standards.
	* Makefile.in (DLD_XSRC): Add it to the list.

2005-03-14  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/dispatch.cc (Fbuiltin):	Avoid crash if symbol
	lookup fails.

2005-03-10  John W. Eaton  <jwe@octave.org>

	* toplev.cc (Foctave_config_info): Print error instead of crashing
	if struct does not contain field we are looking for.

2005-03-09  John W. Eaton  <jwe@octave.org>

	* load-save.cc (Fload, Fsave): Accept -text as an alias for -ascii.
	Issue warning for future change in meaning of -ascii.

	* Makefile.in (bin-dist): Delete target.
	(BINDISTFILES, BINDISTLIBS): Delete variables.

2005-03-04  John W. Eaton  <jwe@octave.org>

	* octave.cc (octave_main): Concatenate all --eval arguments.

2005-03-03  John W. Eaton  <jwe@octave.org>

	* input.cc (input_from_command_line_file): Move definition here.
	* parse.y: From here.
	* input.h (input_from_command_line_file): Move decl here.
	* parse.h: From here.

	* input.cc (octave_gets):
	Don't save history if input is from command line file.

	* parse.y (parse_and_execute, parse_fcn_file, eval_string):
	Don't alter value of input_from_command_line_file here.
	(input_from_command_line_file): Default value is false.
	(eval_string): Turn off line editing here.

	* toplev.cc, toplev.h (main_loop): Delete fun_to_call arg and all uses.

	* octave.cc (fun_to_call): Delete static variable.
	(persist, code_to_eval): New static variables.
	(long_opts): Delete --funcall, add --eval and --persist.
	(usage_string, verbose_usage, octave_main): Likewise.
	(FUNCALL_OPTION): Delete.
	(EVAL_OPTION, PERSIST_OPTION): New macros.
	(maximum_braindamage): Set persist to true.
	(execute_eval_option_code): New function.
	(restore_program_name): New function.
	(execute_command_line_file): New function.
	(octave_main): Call execute_eval_option code and
	execute_command_line file.  If persist, go interactive even after
	evaluating --eval code and/or command-line file.

	* ov-bool-sparse.h, ov-bool-sparse.cc
	(octave_sparse_bool_matrix::sparse_matrix_value,
	octave_sparse_bool_matrix::sparse_complex_matrix_value):
	Accept bool arg.

	* parse.y (looks_like_copyright): Check first 9 characters, not 14.

2005-03-02  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_scan (std::istream&, const
	scanf_format_elt&, double*)): New specialization to handle Inf,
	NaN, and NA.

	* parse.y (looks_like_copyright):
	Rename from looks_like_octave_copyright.  Change all uses.
	Simply match "Copyright".

2005-03-01  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/odessa.cc: Delete.
	* Makefile.in (DLD_XSRC): Remove it from the list.
	(OPT_HANDLERS): Remove ODESSA-opts.cc from the list.

2005-02-28  John W. Eaton  <jwe@octave.org>

	* toplev.cc (octave_config_info): Remove LIBGLOB and GLOB_INCFLAGS
	from the list.
	* oct-conf.h.in (OCTAVE_CONF_LIBGLOB, OCTAVE_CONF_GLOB_INCFLAGS):
	Delete.
	* Makefile.in (OCTAVE_LIBS): Remove $(LIBGLOB) from the list.

2005-02-25  John W. Eaton  <jwe@octave.org>

	Sparse merge.

	2005-02-25  John W. Eaton  <jwe@octave.org>

	* DLD-SRC/rand.cc (Frand): Accept "state" as an alias for "seed".

	* DLD-SRC/dispatch.cc: New file.
	* Makefile.in (DLD_XSRC): Add it to the list.

	2005-02-13  David Bateman  <dbateman@free.fr>

	* ov-fcn-inline.h, DLD-FUNCTIONS/spparms.cc, DLD-FUNCTIONS/gcd.cc:
	Remove additional licensing clause, with authors permission

	* ov-base-sparse.h: New constructor to cache SparseType, not yet
	used
	* ov-re-sparse.h: likewise
	* ov-cx-sparse.h: likewise
	* ov.h: Likewise

	* sparse-xdiv.cc: Remove spparms umfpack flag

	* DLD-FUNCTIONS/spparms.cc: Warning that umfpack flag is ignored.
	
	2005-01-16  David Bateman  <dbateman@free.fr>

	* ls-mat5.cc (read_mat5_integer_data): Change "T &m" to "T *m" and
	instantiate with values like octave_int8 rather than int8NDArray.
	Modify function to fit
	(read_mat5_binary_element): Use new form of read_mat_integer_data
	to read data directly into sparse matrix
	(write_mat5_integer_data): Change "const T &m" to "T *m", etc. New
	instantiation with int.
	(save_mat5_binary_element): Modify to save sparse data
	
	2005-01-15  David Bateman  <dbateman@free.fr>

	* data.cc (do_cat): Use first non-empty matrix as base for 
	concatenation.
	* pt-mat.cc (tree_matrix::rvalue): ditto.
	
	2005-01-14  John W. Eaton  <jwe@octave.org>

	* ov.cc (do_cat_op): When checking for empty args, use
	all_zero_dims, not numel.
	* ov.h (octave_value::all_zero_dims): New function.

	* ov-bool-sparse.cc (try_narrowing_conversion): Convert to
	bool_matrix, not matrix.

	2005-01-13  David Bateman  <dbateman@free.fr>

	* data.cc (make_diag): Use numel not capacity to remove ambiguity.
	* ov.h (octave_value::capacity): New virtual funtion.
	* ov-base.h (octave_base_value::capacity): New function calls numel.
	* data.cc (Freshape): Use arg.numel() rather than arg.dims().numel() 
	since sparse numel now consistent.
	* symtab.h (symbol_record::symbol_def::capacity, 
	symbol_record::capacity): New methods.
	* symtab.cc (symbol_record::print_symbol_info_line,
	symbol_table::parse_whos_line_format, symbol_table::maybe_list):
	used capacity() and not numel() to properly assess size of
	sparse objects.
	* ov-base-sparse.h (octave_base_sparse::capacity): New function,
	(octave_base_sparse::numel): Delete.
	* ov-re-sparse.cc (octave_sparse_matrix::streamoff_array_value):
	Only fill from non-zero elements of sparse array.
	* DLD-FUNCTIONS/splu.cc (Fsplu): Change use of nelem to numel.
	* ov.cc (do_cat_op): Early return for concatenation with empty
	objects.
	
	2005-01-12  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/find.cc (Ffind): Make it work for character strings.

	2005-01-11  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-double-conv.cc: New conversions for sparse_matrix
	and sparse_bool_matrix to matrix.

	2005-01-11  David Bateman  <dbateman@free.fr>

	* ov-base-sparse.h (octave_base_sparse::any, 
	octave_base_sparse::all): Use new constructors, etc as pointed out
	by JWE.

	2005-01-10  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/sparse.cc (MINMAX_BODY, Fspatan2, make_spdiag):
	Write retval(0) = result instead of retval(0) = octave_value (result).
	* DLD-FUNCTIONS/splu.cc (Fsplu): Likewise.

	2005-01-08  David Bateman  <dbateman@free.fr>

	* ls-mat5.cc (read_mat5_integer_data): Instantiate for Array<int>
	(read_mat5_binary_element): Add code to read sparse matrices
	saved in matlab v5 format

	2005-01-07  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-bm-sbm.cc, OPERATORS/op-b-sbm.cc,
	OPERATORS/op-cm-scm.cc, OPERATORS/op-cm-sm.cc,
	OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc,
	OPERATORS/op-m-scm.cc, OPERATORS/op-m-sm.cc,
	OPERATORS/op-sbm-b.cc, OPERATORS/op-sbm-bm.cc,
	OPERATORS/op-sbm-sbm.cc, OPERATORS/op-scm-cm.cc,
	OPERATORS/op-scm-cs.cc, OPERATORS/op-scm-m.cc,
	OPERATORS/op-scm-s.cc, OPERATORS/op-scm-scm.cc, 
	OPERATORS/op-scm-sm.cc, OPERATORS/op-sm-cm.cc,
	OPERATORS/op-sm-cs.cc, OPERATORS/op-sm-m.cc,
	OPERATORS/op-sm-s.cc, OPERATORS/op-sm-scm.cc,
	OPERATORS/op-sm-sm.cc, OPERATORS/op-s-scm.cc,
	OPERATORS/op-s-sm.cc: New octave_value constructors allow
	macros from ops.h to be used rather than sparse-ops.h. Remove
	other explicit uses of maybe_mutate.

	* sparse-ops.h: delete file.

	* colamd.cc (Fcolamd, Fsymamd, Fetree): Remove no longer needed 
	use of get_rep() and use the sparse matrix conversion functions
	directly.

	* data.cc (Freshape): Use arg.dims().numel() rather than 
	arg.numel() due to definition of numel for sparse matrices.
	
	* sparse.cc (Ffull, Fspfind, SPARSE_DIM_ARG_BODY, MINMAX_BODY,
	Fspatan2, make_spdiag): Convert to use new octave_value sparse
	constructors, sparse matrix conversion functions and remove
	maybe_mutate calls.
	(Fspreshape): Delete

	* splu.cc (Fsplu): Remove remaining explicit octave_value
	construction.
	
	* ov-base-sparse.h (do_index_op, resize, reshape, permute, squeeze):
	Move these methods from the derived classes.
	* ov-base-spase.cc (do_index_op): Move this method from the derived
	classes.
	* ov-bool-sparse.h (do_index_op, resize, reshape, permute, squeeze):
	delete.
	* ov-re-spase.cc (do_index_op): delete.
	* ov-cx-sparse.h (do_index_op, resize, reshape, permute, squeeze):
	delete.
	* ov-cx-spase.cc (do_index_op): delete.
	* ov-bool-spase.cc (do_index_op): delete.
	* ov-re-sparse.h (do_index_op, resize, reshape, permute, squeeze):
	delete.

	* DLD-FUNCTIONS/spdet.cc (Fspdet): Remove use of SparseDet and
	SparseComplexDET classes and use DET and ComplexDET classes.
	
 	* DLD-FUNCTIONS/colamd.cc op-bm-sbm.cc OPERATORS/op-b-sbm.cc
	OPERATORS/op-cm-scm.cc OPERATORS/op-cm-sm.cc OPERATORS/op-cs-scm.cc 
	OPERATORS/op-cs-sm.cc OPERATORS/op-fil-sbm.cc OPERATORS/op-fil-scm.cc
	OPERATORS/op-fil-sm.cc OPERATORS/op-m-scm.cc OPERATORS/op-m-sm.cc 
	OPERATORS/op-sbm-b.cc OPERATORS/op-sbm-bm.cc OPERATORS/op-sbm-sbm.cc 
	OPERATORS/op-scm-cm.cc OPERATORS/op-scm-cs.cc OPERATORS/op-scm-m.cc
	OPERATORS/op-scm-s.cc OPERATORS/op-scm-scm.cc OPERATORS/op-scm-sm.cc 
	OPERATORS/op-sm-cm.cc OPERATORS/op-sm-cs.cc OPERATORS/op-sm-m.cc 
	OPERATORS/op-sm-s.cc OPERATORS/op-sm-scm.cc OPERATORS/op-sm-sm.cc 
	OPERATORS/op-s-scm.cc OPERATORS/op-s-sm.cc ov-base-sparse.cc 
	ov-base-sparse.h ov-bool-sparse.cc ov-bool-sparse.h ov-cx-sparse.cc 
	ov-cx-sparse.h ov-re-sparse.cc ov-re-sparse.h sparse-base-lu.cc 
	sparse-base-lu.h DLD-FUNCTIONS/sparse.cc sparse-xdiv.cc sparse-xdiv.h
	sparse-xpow.cc sparse-xpow.h DLD-FUNCTIONS/spdet.cc 
	DLD-FUNCTIONS/splu.cc DLD-FUNCTIONS/spparms.cc: Remove additional 
	licensing clause with authors permission.
	
	2005-01-05  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/colamd.cc: Rename from colamdoct.cc. Base colamd.h
	now found in COLAMD/colamd.h.
	(Fcolamd): Return value is now used.
	(Fsymamd): ditto.
	
	* Makefile.in: include colamd.cc in DLD_XSRC.

	* ov.h (sparse_matrix_value, sparse_complex_matrix_value,
	sparse_bool_matrix_value): New virtual functions

	* ov-base.cc (octave_base_value::sparse_matrix_value,
	octave_base_value::sparse_complex_matrix_value,
	octave_base_value::sparse_bool_matrix_value): New default sparse
	matrix extraction functions.

	* ov-base.h (sparse_matrix_value, sparse_complex_matrix_value,
	sparse_bool_matrix_value): Declare them.

	* ov-re-mat.cc (octave_matrix::sparse_matrix_value,
	octave_matrix::sparse_complex_matrix_value): Conversion functions.

	* ov-re-mat.h (sparse_matrix_value, sparse_complex_matrix_value):
	Declare them.
	
	* ov-cx-mat.cc (octave_complex_matrix::sparse_matrix_value,
	octave_complex_matrix::sparse_complex_matrix_value): Conversion 
	functions.

	* ov-cx-mat.h (sparse_matrix_value, sparse_complex_matrix_value):
	Declare them.

	* ov-bool-mat.h (sparse_matrix_value, sparse_complex_matrix_value,
	sparse_bool_matrix_value): Conversion functions.

	* DLD_FUNCTIONS/spdet.cc (Fspdet): Use the above constructors
	and conversion functions.
	* DLD_FUNCTIONS/splu.cc (Fsplu): ditto.
	
	2004-12-30  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/splu.cc (Fsplu): Avoid shadow warnings.

	* sparse-xpow.cc (elem_xpow): Delete unsed variables.
	* sparse-xdiv.cc (x_el_div): Likewise.

	* DLD-FUNCTIONS/det.cc (Fdet): Delete unused argument nargout.
	* DLD-FUNCTIONS/spdet.cc (Fspdet): Likewise.

	* DLD-FUNCTIONS/sparse.cc (Fnzmax): Return a value.

	* ov.cc, ov.h (octave_value::octave_value (const SparseMatrix&),
	(octave_value::octave_value (const SparseBoolMatrix&),
	(octave_value::octave_value (const SparseComplexMatrix&)):
	New constructors.

	2004-12-29  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/sparse.cc (SPARSE_DIM_ARG_BODY): Rename from
	DEFUN_DLD_SPARSE_DIM_ARG.  Omit HELP arg.  Omit DEFUN_DLD, so the
	macro only defines the function body.
	(Fspprod, Fspcumprod, Fspsum, Fspcumsum, Fspsumsq): Define with
	DEFUN_DLD, not DEFUN_DLD_SPARSE_DIM_ARG.  Use SPARSE_DIM_ARG_BODY
	to define function body.

	* DLD-FUNCTIONS/sparse.cc (load_sparse_type, sparse_type_loaded):
	Delete function, variable, and all uses.
	* ov.cc: Include ov-bool-sparse.h, ov-re-sparse.h, ov-cx-sparse.h.
	(install_types): Register sparse types.

	Merge of sparse code from David Bateman <dbateman@free.fr> and 
	Andy Adler <adler@site.uottawa.ca>.

	* sparse-xdiv.cc, sparse-xpow.cc: New files.
	* Makefile.in (DIST_SRC): Add them to the list.

	* sparse-ops.h sparse-xdiv.h, sparse-xpow.h: New files.
	* Makefile.in (INCLUDES): Add them to the list.

	* DLD-FUNCTIONS/colamdoct.cc, DLD-FUNCTIONS/sparse.cc,
	DLD-FUNCTIONS/spdet.cc, DLD-FUNCTIONS/splu.cc,
	DLD-FUNCTIONS/spparms.cc: New files.
	* Makefile.in (DLD_XSRC): Add them to the list.

	* ov-base-sparse.cc, ov-base-sparse.h, ov-bool-sparse.cc,
	ov-bool-sparse.h, ov-cx-sparse.cc, ov-cx-sparse.h,
	ov-re-sparse.cc, ov-re-sparse.h: New files.
	* Makefile.in (OV_SPARSE_SRC, OV_SPARSE_INCLUDES): New lists.
	(OV_SRC): Add $(OV_SPARSE_SRC) to the list.
	(INCLUDES): Add $(OV_SPARSE_INCLUDES) to the list.
	
	* OPERATORS/op-bm-sbm.cc, OPERATORS/op-b-sbm.cc,
	OPERATORS/op-cm-scm.cc, OPERATORS/op-cm-sm.cc,
	OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc,
	OPERATORS/op-fil-sbm.cc, OPERATORS/op-fil-scm.cc,
	OPERATORS/op-fil-sm.cc, OPERATORS/op-m-scm.cc,
	OPERATORS/op-m-sm.cc, OPERATORS/op-sbm-b.cc,
	OPERATORS/op-sbm-bm.cc, OPERATORS/op-sbm-sbm.cc,
	OPERATORS/op-scm-cm.cc, OPERATORS/op-scm-cs.cc,
	OPERATORS/op-scm-m.cc, OPERATORS/op-scm-s.cc,
	OPERATORS/op-scm-scm.cc, OPERATORS/op-scm-sm.cc,
	OPERATORS/op-sm-cm.cc, OPERATORS/op-sm-cs.cc,
	OPERATORS/op-sm-m.cc, OPERATORS/op-sm-s.cc,
	OPERATORS/op-sm-scm.cc, OPERATORS/op-sm-sm.cc,
	OPERATORS/op-s-scm.cc, OPERATORS/op-s-sm.cc: New files.
	* Makefile.in (SPARSE_OP_XSRC): New list.
	(OP_XSRC): Add $(SPARSE_OP_XSRC) to the list.

2005-02-23  John W. Eaton  <jwe@octave.org>

	* parse.y (fold (tree_binary_expression*)): Skip constant folding
	for some expressions to preserve warnings.
	(Vwarn_associativity_change): New static variable.
	(warn_associativity_change): New function.
	(symbols_of_parse): DEFVAR warn_associativity_change.
	(maybe_warn_associativity_change): New function.
	(make_binary_op): Use it.

2005-02-22  John W. Eaton  <jwe@octave.org>

	* parse.y (POW, EPOW): Use %left associativity for compatibility.

	* ov-base-int.cc (octave_baes_int_matrix<T>::load_binary):
	Handle arrays with only one dimension.
	* ov-bool-mat.cc (octave_bool_matrix::load_binary): Likewise.
	* ov-cell.cc (octave_cell::load_binary): Likewise.
	* ov-cell.cc (octave_complex_matrix::load_binary): Likewise.
	* ov-re-mat.cc (octave_matrix::load_binary): Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::load_binary): Likewise.

	* ov-mapper.cc (octave_mapper::subsref): Return retval after
	calling next_subsref.

	* ov-mapper.cc (octave_builtin::subsref): If nargout is 0 and we
	have additional indexing to perform, set it to 1 before calling
	do_multi_index_op.

	* oct-map.cc (Octave_map::intfield, Octave_map::stringfield):
	New functions.
	* oct-map.h: Provide decls.
	* DLD-FUNCTIONS/time.cc (extract_tm): Use intfield and stringfield
	to access map elements.

2005-02-21  John W. Eaton  <jwe@octave.org>

	* ov-builtin.cc (octave_builtin::subsref): If nargout is 0 and we
	have additional indexing to perform, set it to 1 before calling
	do_multi_index_op.
	* ov-usr-fcn.cc (octave_user_function::subsref): Likewise.

	* DLD-FUNCTIONS/gplot.l (send_to_plot_stream):
	Replot with no previous plot is a no-op.
	(makeplot): Likewise.
	(Vautomatic_replot): Don't use this variable in low-level functions.

2005-02-18  John W. Eaton  <jwe@octave.org>

	* Makefile.in (oct-gperf.h): Remove -E from list of gperf options.

	* data.cc (do_permute): Use zero-based indexing for permutation
	vector that is passed to octave_value::permute method.
	Allow permutation vector longer	than number of dimenensions of
	permuted matrix.

2005-02-17  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_API_VERSION): Now 2.1.64-cvs.
	(OCTAVE_API_VERSION): Now api-v12-cvs.

2005-02-16  John W. Eaton  <jwe@octave.org>

	* ov-base-mat.h (octave_base_matrix::squeeze): Explicitly convert
	result of matrix.squeeze() to MT.

2005-02-15  John W. Eaton  <jwe@octave.org>

	* dirfns.cc (deftypefn): Don't print to octave_stdout if nargout > 0.

	* pt-mat.cc (tree_matrix::rvalue): Min size of ra_idx is 2.

	* file-io.cc (Ffclear): New function.

	* sighandlers.h: Define SIGCHLD if it is not already defined and
	SIGCLD is defined.

	* sighandlers.cc (octave_set_signal_handler): Request system calls
	restarted if interrupted by signals (except for SIGALRM).
	* dirfns.cc (Fls): Don't bother with sleeping or checking errno.

2005-02-11  John W. Eaton  <jwe@octave.org>

	* sighandlers.cc (sigpipe_handler): Don't try to take action.
	Set octave_signal_caught and octave_signals_caught here.
	(sigchld_handler): Call octave_child_list::wait here.
	Set octave_signal_caught and octave_signals_caught here.
	(octave_signals_caught): New static file-scope variable.
	(sigint_handler): Also set octave_signal_caught.

	* sighandlers.cc (sigpipe_handler): 

	* DLD-FUNCTIONS/gplot.l (plot_stream_event_handler): Rename from
	plot_stream_death_handler.  Return true if plotter has exited.
	Call close_plot_stream with false arg.
	(plot_stream_pid): Delete static file-scope variable and all uses.
	(close_plot_stream): New arg, remove_from_child_list, with default
	value of true.  Only call octave_child_list::remove if
	remove_from_child_list is true.

	* pager.cc (octave_pager_pid, saved_interrupt_handler,
	interrupt_handler_saved): Delete static file-scope variables and
	all uses.
	(clear_external_pager): Do nothing if external_pager is 0.
	(pager_event_handler): Rename from pager_death_handler.
	Improve warning message.  Return true if pager has exited.
	(octave_pager_buf::do_sync): Check errno == EPIPE after write.
	(flush_octave_stdout): No need to check external_pager before
	calling clear_external_pager.

	* toplev.cc (recover_from_exception): Set octave_signal_caught to zero.
	(main_loop): Set octave_signal_hook to octave_signal_handler here.

	* sighandlers.cc (octave_signal_handler): New function.
	* sighanlders.h: Provide decl.

	* sighandlers.cc (install_signal_handlers): Initialize
	octave_signals_caught.

	* sighandlers.h (octave_child::status, have_status): New data members.
	(child_event_handler): Rename from dead_child_handler.
	Change all uses.
	(octave_child_list::reap, octave_child_list::wait): New functions.
	(octave_child_list::length, octave_child_list::do_length,
	octave_child_list::elem, octave_child_list::do_elem,
	octave_child_list::list, octave_child_list::curr_len): Delete.

	* sighandlers.h, sighandlers.cc
	(octave_child_list::octave_child_list_rep): New class.

	* input.cc (gnu_readline, octave_gets, get_user_input):
	Call OCTAVE_QUIT before doing anything.

	* base-list.h (octave_base_list<T>::remove_if): New function.

	* TEMPLATE-INST/Array-oc.cc: Delete.
	* Makefile.in (TI_XSRC): Remove from list.

2005-02-10  Driss Ghaddab  <driss.ghaddab@free.fr>

	* cutils.c (octave_usleep) [HAVE_POLL]: Fix typo.

2005-02-10  John W. Eaton  <jwe@octave.org>

	* variables.cc (symbol_exist): Don't search path if explicitly
	asked for a variable or builtin.  From David Bateman
	<dbateman@free.fr>.

2005-02-09  John W. Eaton  <jwe@octave.org>

	* variables.cc (same_file): New static function.
	(symbol_out_of_date): Use it.

	* syscalls.cc (Fcanonicalize_file_name): New function.

2005-02-08  Walter Landry  <landry@osc.edu>

	* symtab.h (symbol_record::mark_as_command): Avoid AIX compiler error.

2005-02-07  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): Return [] instead
	of [](1x0) for scalar arg of zero.

2005-02-06  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/gplot.l (tmp_files): Delete.
	From Todd Neal <tolchz@tolchz.net>.

2005-02-04  John W. Eaton  <jwe@octave.org>

	* sighandlers.cc (octave_child_list::~octave_child_list): Move here.
	* sighandlers.h: From here.

2005-02-02  John W. Eaton  <jwe@octave.org>

	* Makefile.in (parse.cc): Expect 12 shift/reduce conflicts.
	* parse.y (loop_command): Allow "for (k=1:10) ... endfor".

2005-01-27  David Bateman  <dbateman@free.fr>

	* ov-mapper.cc (octave_mapper::apply): Only work on real arguments
	if c_c_map_fcn or d_d_map_fcn or d_b_map_fcn is defined.xo

2005-01-26  Joel Andersson  <snprintf@gmail.com>

	* help.cc (keywords): Document endswitch.

2005-01-21  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/filter.cc (filter): Avoid slow Marray indexing ops.

2005-01-20  John W. Eaton  <jwe@octave.org>

	* Makefile.in (EXTRAS): Move ov-base-mat.cc ov-base-scalar.cc here.
	(OV_SRC): From here.

2005-01-18  John W. Eaton  <jwe@octave.org>

	* ov-complex.h (octave_complex::any): New function.
	* ov-scalar.h (octave_scalar::any): New function.

	* file-io.cc (Fmkstemp): Fix doc string.  Error message belongs in
	third output value.  From Mats Jansson <mats.e.jansson@home.se>.

2005-01-12  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/find.cc (Ffind): Make it work for character strings.

2005-01-11  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/gplot.l (UNOP): Avoid trailing comment.

2005-01-10  John W. Eaton  <jwe@octave.org>

	* ls-oct-ascii.cc (extract_keyword (std::istream&, const
	string_vector&, std::string&, int&, const bool)):
	Remove duplicate definition.

2004-12-27  Martin Dalecki  <martin@dalecki.de>

	* Cell.cc, c-file-ptr-stream.cc, comment-list.cc, oct-map.cc,
	oct-obj.cc, ov-base.cc, ov-base-int.cc, ov-base-mat.cc,
	ov-base-scalar.cc, ov-bool.cc, ov-bool-mat.cc, ov-builtin.cc,
	ov.cc, ov-cell.cc, ov-ch-mat.cc, ov-colon.cc, ov-complex.cc,
	ov-cs-list.cc, ov-cx-mat.cc, ov-dld-fcn.cc, ov-fcn.cc,
	ov-fcn-handle.cc, ov-fcn-inline.cc, ov-file.cc, ov-int16.cc,
	ov-int32.cc, ov-int64.cc, ov-int8.cc, ov-list.cc, ov-mapper.cc,
	ov-range.cc, ov-re-mat.cc, ov-scalar.cc, ov-streamoff.cc,
	ov-str-mat.cc, ov-struct.cc, ov-typeinfo.cc, ov-uint16.cc,
	ov-uint32.cc, ov-uint64.cc, ov-uint8.cc, ov-usr-fcn.cc,
	ov-va-args.cc, procstream.cc, pt-arg-list.cc, pt-assign.cc,
	pt-binop.cc, pt-bp.cc, pt.cc, pt-cell.cc, pt-check.cc, pt-cmd.cc,
	pt-colon.cc, pt-const.cc, pt-decl.cc, pt-except.cc, pt-exp.cc,
	pt-fcn-handle.cc, pt-id.cc, pt-idx.cc, pt-jump.cc, pt-loop.cc,
	pt-mat.cc, pt-misc.cc, pt-pr-code.cc, pt-select.cc, pt-stmt.cc,
	pt-unop.cc, symtab.cc, token.cc, unwind-prot.cc:
	Delete #pragma implementation.

	* Cell.h, c-file-ptr-stream.h, comment-list.h, oct-map.h,
	oct-obj.h, ov-base.h, ov-base-int.h, ov-base-mat.h,
	ov-base-scalar.h, ov-bool.h, ov-bool-mat.h, ov-builtin.h,
	ov-cell.h, ov-ch-mat.h, ov-complex.h, ov-cs-list.h, ov-cx-mat.h,
	ov-dld-fcn.h, ov-fcn.h, ov-fcn-handle.h, ov-fcn-inline.h,
	ov-file.h, ov.h, ov-int16.h, ov-int32.h, ov-int64.h, ov-int8.h,
	ov-list.h, ov-mapper.h, ov-range.h, ov-re-mat.h, ov-scalar.h,
	ov-streamoff.h, ov-str-mat.h, ov-struct.h, ov-typeinfo.h,
	ov-uint16.h, ov-uint32.h, ov-uint64.h, ov-uint8.h, ov-usr-fcn.h,
	procstream.h, pt-arg-list.h, pt-assign.h, pt-binop.h, pt-bp.h,
	pt-cell.h, pt-check.h, pt-cmd.h, pt-colon.h, pt-const.h,
	pt-decl.h, pt-except.h, pt-exp.h, pt-fcn-handle.h, pt.h, pt-id.h,
	pt-idx.h, pt-jump.h, pt-loop.h, pt-mat.h, pt-misc.h, pt-pr-code.h,
	pt-select.h, pt-stmt.h, pt-unop.h, symtab.h, token.h,
	unwind-prot.h: Delete #pragma interface.

2004-12-27  John W. Eaton  <jwe@octave.org>

	Merge of changes from Teemu Ikonen <tpikonen@pcu.helsinki.fi> to
	remove gnuplot from main parser.

	* pt-plot.cc, pt-plot.h: Delete.
	* Makefile.in (PT_SRC, PT_INCLUDES): Delete them from the lists.

	* DLD-FUNCTIONS/gplot.l: New file.
	* Makefile.in: Include it in the DLD_XSRC list.

	* dirfns.cc (octave_change_to_directory):
	Don't call do_external_plotter_cd.

	* symtab.h (symbol_record::TYPE): New element, RAWCOMMAND.
	(symbol_record::symbol_def::mark_as_rawcommand,
	symbol_record::symbol_def::unmark_rawcommand,
	symbol_record::symbol_def::is_rawcommand): New functions.
	(symbol_record::symbol_def::symbol_type): Bitfield is now 9 bits wide.
	(symbol_record::mark_as_rawcommand,
	symbol_record::unmark_rawcommand, symbol_record::is_rawcommand):
	New functions.
	(SYMTAB_ALL_TYPES): Include RAWCOMMAND.

	* parse.y (make_plot_command): Delete function.
	(tree_plot_command_type, subplot_type, subplot_list_type,
	plot_limits_type, plot_range_type, subplot_using_type,
	subplot_style_type, subplot_axes_type):
	Delete non-terminal type decls.
	(PLOT, STYLE, AXES_TAG): Delete token types.
	(title, plot_command, plot_command2, plot_options, plot_command1,
	ranges, ranges1, using, using1, style, axes): Delete non-terminals.

	* toplev.cc (do_octave_atexit): Don't call close_plot_stream.

	* variables.cc (rawcommand_set): New static variable.
	(is_marked_as_rawcommand, mark_as_rawcommand, unmark_rawcommand,
	Fiscommand, Fmark_as_rawcommand, Funmark_rawcommand,
	Fisrawcommand, is_rawcommand_name): New functions.
	* variables.h: Provide decl for is_rawcommand_name.

	* pt-bp.cc, pt-bp.h, pt-check.cc, pt-check.h, pt-pr-code.cc,
	pt-pr-code.h, pt-walk.h: Delete all declarations, definitions, and
	uses of visit_subplot, visit_subplot_axes, visit_subplot_list,
	visit_subplot_style, and visit_subplot_using methods.

	* lex.h (lexer_flags): New field, doing_rawcommand.
	* lex.l (<COMMAND_START>[\;\,]): Also handle raw commands here.
	(lexer_flags::init): Initialize doing_racommand to false.
	(handle_identifier): Recognize raw commands ere.
	(handle_string): Don't do string escape conversions on raw command
	strings.

	* octave.gperf: Delete gplot_kw, gsplot_kw, replot_kw.

	* lex.h (lexer_flags): Delete fields cant_be_identifier,
	doing_set, in_plot_range, in_plot_using, in_plot_style,
	in_plot_axes, past_plot_range, and plotting.
	* lex.l: Delete all uses of these lexer flags and remove all
	special cases for plotting.
	(plot_style_token, plot_axes_token, is_plot_keyword): Delete.

	* file-io.cc, file-io.h (tmp_files, mark_for_deletion,
	cleanup_tmp_files): Move here.
	* pt-plot.cc, pt-plot.h: From here.

	* Makefile.in (PKG_ADD): New target.
	(all): Depend on PKG_ADD.
	(install-oct): Depend on PKG_ADD.  Install PKG_ADD file.
	(gplot.cc): New target.
	(stamp-prereq): Depend on gplot.cc.
	(VAR): Don't include $(DLD_SRC) here.
	(DLD_OBJ, DLD_DEF_FILES): Include .l files.

	* defun-int.h (DEFVAR, DEFCONST, DEFCONSTX): Move definition here.
	* defun.h: From here.

2004-12-22  John W. Eaton  <jwe@octave.org>

	* ls-oct-ascii.cc (extract_keyword (std::istream&, const
	string_vector&, std::string&, int&, const bool): New function.
	* ls-oct-ascii.h: Provide decl.
	* ov-bool-mat.cc (octave_bool_matrix::load_ascii):
	Use new extract_keyword function to avoid calling tellg/seekg.
	* ov-cell.cc (octave_cell::load_ascii): Likewise.
	* ov-cx-mat.cc (octave_complex_matrix::load_ascii): Likewise.
	* ov-re-mat.cc (octave_matrix::load_ascii): Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::load_ascii): Likewise.

2004-12-20  John W. Eaton  <jwe@octave.org>

	* pt-idx.cc (tree_index_expression::has_magic_end): Return true if
	any argument list element has a magic end token.

2004-12-03  John W. Eaton  <jwe@octave.org>
  
  	* version.h (OCTAVE_VERSION): Now 2.1.64.

2004-12-03  Teemu Ikonen  <tpikonen@pcu.helsinki.fi>

	* file-io.cc: Doc string fixes.

2004-12-02  David Bateman  <dbateman@free.fr>

	* input.cc (get_user_input): Only set nm and line for debugging if
	both debug is true and curr_caller_function is non-null.

2004-12-02  David Bateman  <dbateman@free.fr>

	* ls-mat5.cc (arrayclasstype): Add mxINT64_CLASS, mxUINT64_CLASS,
	mxFUNCTION_CLASS enum values.
	(read_mat5_integer_data): New template function.
	(OCTAVE_MAT5_INTEGER_READ): New macro.
	(read_mat5_binary_element): Handle reading integer types.
	Eliminate automatic conversion from int to double.
	(write_mat5_integer_data): New template function.
	Instantiate it for the 8 integer data types
	(save_mat5_binary_element): Handle integer data types.

	* load-save.cc (Fload): Check file existence here.
	If file does not exist, append ".mat" to name and try again.
	(get_file_format): Delete check for file existence.

2004-11-30  John W. Eaton  <jwe@octave.org>

	* Makefile.in (oct-gperf.h): Use -L C++ instead of -L ANSI_C.
	Use -Z octave_kw_hash option, delete -H and -N options.
	* lex.l (is_keyword_token): Use octave_kw_hash::in_word_set
	instead of octave_kw_lookup.
	(is_keyword): Likewise.

2004-11-22  John W. Eaton  <jwe@octave.org>

	* pt-arg-list.cc (tree_argument_list::convert_to_const_vector):
	Check to see whether object is a function or function handle
	instead of constant.

2004-11-19  John W. Eaton  <jwe@octave.org>

	* ov-str-mat.cc (octave_char_matrix_str::do_index_op):
	Skip indexing operation if indices are invalid.

	* pr-output.cc (set_range_format, set_complex_matrix_format,
	set_complex_format, set_real_matrix_format, set_real_format):
	Also specify std::ios::fixed for bank format.

2004-11-17  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.1.63.
	(OCTAVE_API_VERSION): Now api-v12.

2004-11-17  David Bateman  <dbateman@free.fr>

	* pt-arg-list.cc (F__end__): Ask dv for the number of elements
	instead indexed_object.

2004-11-16  David Bateman  <dbateman@free.fr>

	* ov.h (octave_value::numel): Now virtual.  Call rep->numel ().
	* ov.cc (octave_value::numel): Delete.
	* ov-base.h (octave_base_value::numel): New function.

2004-11-12  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.1.62.

2004-11-09  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-int-concat.cc: New file for mixed integer/other
	concatentation operators.
	* Makefile.in (INTTYPE_OP_XSRC): Add it to the list.

	* ops.h (DEFNDCATOP_FN2): New macro.

	* OPERATORS/op-int.h (OCTAVE_CONCAT_FN2,
	OCTAVE_INSTALL_CONCAT_FN2, OCTAVE_DOUBLE_INT_CONCAT_FN,
	OCTAVE_INSTALL_DOUBLE_INT_CONCAT_FN, OCTAVE_INT_DOUBLE_CONCAT_FN,
	OCTAVE_INSTALL_INT_DOUBLE_CONCAT_FN): New macros.

2004-11-09  David Bateman  <dbateman@free.fr>

	* Cell.cc (concat): Delete.
	(Cell::concat): New method.
	* Cell.h: Provide decls.
	
	* oct-map.cc (concat): Delete
	(Octave_map::concat): New method.
	* oct-map.h: Provide decls.
	
	* ov.h (typedef octave_value (*cat_op_fcn) (octave_value&, 
	const octave_value&, const Array<int>&): Change definition of 
	cat_op_fcn so first argument is not constant.

	* ops.h (CATOPDECL): First arg is no longer constant.
	(DEFCATOP_FN, DEFNDCATOP_FN): Change to use new concat methods.

	* OPERATORS/op-chm.cc, OPERATORS/op-str-m.cc, OPERATORS/op-str-s.cc, 
	OPERATORS/op-str-str.cc (DEFCATOP): Change explicit concat functions
	to use new concatenation methods.

2004-11-05  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.1.61.

	* DLD-FUNCTIONS/det.cc (det): Always compute rcond so we can
	detect numerically singular matrices.

2004-11-04  John W. Eaton  <jwe@octave.org>

	* pt-colon.cc (tree_colon_expression::line,
	tree_colon_expression::column): New functions.
	* pt-colon.h: Provide decls.

	* oct-stream.cc (octave_stream::seek (long, int)): Return error
	(but leave file position unchanged) for attempt to seek beyond end
	of file.

	* DLD-FUNCTIONS/inv.cc (Finv): Check rcond value returned from
	LAPACK routines, and be careful to avoid optimizing away the
	1+rcond == 1.0 check.
	* DLD-FUNCTIONS/det.cc (Fdet): Likewise.

2004-11-03  John W. Eaton  <jwe@octave.org>

	* data.cc (Fsize): Return 1 if requested dimension is larger than
	the number of dimensions of the given object.

2004-11-01  Claude Lacoursiere  <claude@hpc2n.umu.se>a

	* ls-hdf5.cc (read_hdf5_data): Expect num_obj to be in distinct group.
	* ov-cell.cc (octave_cell::load_hdf5): Likewise.
	* ov-list.cc (octave_list::load_hdf5): Likewise.
	* ov-struct.cc (octave_struct::load_hdf5): Likewise.

2004-11-01  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/filter.cc (filter (MArray<T>&, MArray<T>&,
	MArrayN<T>&, MArrayN<T>&, int)): The variable si is now at least 2-D.
	(Ffilter): Force si to be 2-D, while allowing arbitrary vector
	orientation.

2004-11-01  John W. Eaton  <jwe@octave.org>

	* data.cc (INSTANTIATE_EYE): New macro.  Use it to instantiate
	identity matrix functions for various matrix types.

	* variables.cc (do_who): Fix typo in for loop.

2004-10-28  John W. Eaton  <jwe@octave.org>

	* ls-mat5.cc (save_mat5_binary_element): Save structure elements
	in correct order.

2004-10-26  John W. Eaton  <jwe@octave.org>

	* ov-fcn.h (octave_function::octave_va_arg): No longer const.

2004-10-22  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/filter.cc: Remove some unnecessary parens.

2004-10-22  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/filter.cc (filter (MArray<T>&, MArray<T>&,
	MArrayN<T>&, MArrayN<T>&, int)): If value to filter is
	dimensionality 2 it might still be a vector, use special case.

2004-10-21  John W. Eaton  <jwe@octave.org>

	* ov-base.cc (INT_CONV_METHOD): Apply saturation semantics here too.

2004-10-19  John W. Eaton  <jwe@octave.org>

	* ov-range.h (octave_range::write): New function.

2004-10-18  John W. Eaton  <jwe@octave.org>

	* symtab.cc (symbol_record::dimensions_string_req_first_space,
	symbol_record::make_dimensions_string): Use dims() for all objects.

2004-10-18  Oyvind Kristiansen  <oyvinkri@stud.ntnu.no>

	* symtab.cc (symbol_table::parse_whos_line_format): Handle
	size-of-parameter and center-specific format specifiers.

2004-10-18  John W. Eaton  <jwe@octave.org>

	* pt-plot.cc (handle_plot_data): If plotting data from file,
	always use "using" clause.

2004-10-12  David Bateman  <dbateman@free.fr>

	* pt-mat.cc (tm_row_const::tm_row_const_rep::do_init_element,
	tm_const::init): Dimensionality of matrices not necessarily the
	same.  Check before comparing.

2004-10-06  John W. Eaton  <jwe@octave.org>

	* pt-fcn-handle.h (tree_fcn_handle::name): New function.

2004-10-01  John W. Eaton  <jwe@octave.org>

	* ov-range.h (octave_range::valid_as_scalar_index): Ensure int value.
	(octave_range::valid_as_zero_index): Likewise.

	* ov-scalar.h (octave_scalar::valid_as_scalar_index): Ensure int value.
	(octave_scalar::valid_as_zero_index): Likewise.

2004-09-24  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.1.60.
	(OCTAVE_API_VERSION): Now api-v11.

	* OPERATORS/op-int.h (OCTAVE_MM_INT_OPS): Include missing matrix
	by int matrix ops.
	(OCTAVE_INSTALL_MM_INT_OPS): Install them.

	* OPERATORS/op-i64-i64.cc: Define and install missing int64 by
	matrix and scalar ops.

2004-09-24  David Bateman  <dbateman@free.fr>

	* ov-fcn-inline (Finline): Attempt better auto-detection of
	symbols that should be recognized as arguments.

2004-09-24  John W. Eaton  <jwe@octave.org>

	* ov-str-mat.cc (default_numeric_conversion_function): Return
	scalar object if numel == 1.

2004-09-23  John W. Eaton  <jwe@octave.org>

	* ops.h	(DEFSTRDBLCONVFN): New macro.
	* OPERATORS/op-double-conv.cc: Use it to define new conversion op.
	Define new range to double matrix conversion.
	(install_int_conv_ops): Install new ops.	

	* ops.h	(DEFSTRINTCONVFN): New macro.
	* OPERATORS/op-int-conv.cc: Use it to define new conversion ops.
	(install_int_conv_ops): Install them.

	* (OCTAVE_SS_INT_OPS2, OCTAVE_SM_INT_OPS2, OCTAVE_MM_INT_OPS2,
	OCTAVE_INSTALL_SS_INT_OPS2, OCTAVE_INSTALL_SM_INT_OPS2,
	OCTAVE_INSTALL_MS_INT_OPS2, OCTAVE_INSTALL_MM_INT_OPS2):
	Delete unused macros.

	* OPERATORS/op-int.h (OCTAVE_SS_INT_BOOL_OPS): New args Z1 and Z2.
	(OCTAVE_SS_INT_OPS): Pass appropriately typed zero values to
	OCTAVE_SS_INT_BOOL_OPS.
	* OPERATORS/op-i64-i64.cc, OPERATORS/op-ui64-ui64.cc: Likewise.

	* pr-output.cc (pr_plus_format): Now template.
	Specialize for Complex.
	(octave_print_internal): Lookup print_conv_type using
	octave_int<T>, not just T.

	* ov-struct.cc (octave_struct::subsref): Pass skip to next_subsref.

	* oct-stream.cc	(do_read): Hitting EOF should not be an error.

2004-09-22  John W. Eaton  <jwe@octave.org>

	* pt-plot.cc (send_to_plot_stream): Skip automatic replot if in
	multiplot mode.

	* variables.cc (get_global_value): New arg, silent.
	* variables.h (get_global_value): Default value for silent arg is
	false.

2004-09-22  David Bateman  <dbateman@free.fr>

	* ov-fcn-inline.cc (Finline): When called with a single arg, derive
	argument of inline function in a compatible manner.

2004-09-22  Federico Zenith  <zenith@chemeng.ntnu.no>

	* DLD-FUNCTIONS/qz.cc (Fqz): New @tex section(s) in doc string for
	better formating of printed documentation.  Use @var in doc string.

	* DLD-FUNCTIONS/time.cc (Fstrftime): Fix typo in doc string.
	* error.cc (Flasterr, Flastwarn): Likewise.
	* mappers.cc (Farg, Fasinh, Fatanh, Ffinite, Fsin, Fsinh, Ftan):
	Likewise.
	* file-io.cc (Fmktemp): Likewise.
	* pt-plot.cc (symbols_of_pt_plot): Fix typos in doc string for
	gnuplot_has_frames.

	* input.cc (symbols_of_input): Replace --echo-input with new
	--echo-commands in PS4 doc string.

	* pt-assign.cc (symbols_of_pt_assign): Mark print_rhs_assign_val
	as built-in in doc string.

	* symtab.cc (symbols_of_symtab): Mark variables_can_hide_functions
	as built-in in doc string.

2004-09-21  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.1.59.

	* oct-fstrm.h (octave_fstream::octave_fstream,
	octave_fstream::create): Set default float format to actual native
	format, not flt_fmt_native.
	* oct-iostrm.h (octave_base_iostream::octave_base_iostream,
	octave_istream::octave_istream, octave_ostream::octave_ostream):
	Likewise.
	* oct-prcstrm.h (octave_iprocstream::octave_iprocstream,
	octave_oprocstream::octave_oprocstream,
	octave_iprocstream::create, octave_oprocstream::create):
	Likewise.
	* oct-stdstrm.h (octave_stdiostream::octave_stdiostream,
	octave_stdiostream::create):
	Likewise.
	* oct-stream.h (octave_base_stream::octave_base_stream):
	Likewise.
	* oct-strstrm.h (octave_base_strstream::octave_base_strstream,
	octave_istrstream::octave_istrstream, octave_istrstream::create):
	Likewise.

2004-09-21  David Bateman  <dbateman@free.fr>

	* data.cc (Freshape): Allow a single empty dimension argument
	to flag unknown dimension and calculate its value from the
	other dimensions.

2004-09-21  John W. Eaton  <jwe@octave.org>

	* symtab.h (symbol_record::~symbol_record): Delete definition if
	count goes to zero.
	* symtab.cc (symbol_table::~symbol_table): Move here from symtab.h.
	Call delete on each symbol record in the table instead of just
	clearing them.

2004-09-17 David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/sort.cc (ascending_compare, descending_compare):
	Now templates (avoids g++ 3.4.x compile problems).
	Fix other uses of these functions to also treat them as templates.
	(mx_sort): For unsigned EIGHT_BYTE_INT versions correct the test 
	for the position of NaN.  Problems when mode was DESCENDING or
	UNDEFINED.  Use static_cast<unsigned int> (dim) rather than 
	(unsigned int) dim.
	(IFloatFlip): Now static.

2004-09-17  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/det.cc (Fdet): Only compute estimate of the
	condition number if requested as output.

	* DLD-FUNCTIONS/schur.cc (Fschur): Only compute unitary matrix if
	requested as output.

2004-09-17  John W. Eaton  <jwe@octave.org>

	* ov-fcn-inline.cc (octave_fcn_inline::octave_fcn_inline):
	Call eval_string instead of feval ("eval", ...).
	Construct anonymous function handle to avoid going through the
	symbol table.

	* ov-fcn-handle.h (octave_fcn_handle::fcn_val): New function.
	(octave_fcn_handle::octave_fcn_handle (const std:string&)):
	New constructor.

2004-09-16  John W. Eaton  <jwe@octave.org>

	* parse.y (frob_function): Clear id_name from curr_sym_tab, not
	top_level_sym_tab.

	* symtab.cc (maybe_list): Count sizes using size_t, not int.

	* variables.cc (symbol_out_of_date): Always look in LOADPATH.

2004-09-15  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-int-conv.cc: Define and install bool to int
	conversions.
	* OPERATORS/op-double-conv.cc: Define and install bool to double
	conversions.

	* ov.cc (octave_value::assign): Handle subsref for containers.
	* oct-lvalue.cc (octave_lvale::value): Likewise.

	* DLD-FUNCTIONS/sort.cc (mx_sort): Return octave_value, not
	octave_value list.

2004-09-15  David Bateman  <dbateman@free.fr>

	* ov.cc (octave_value::octave_value (const ArrayN<char>&, bool)):
	New Constructor .
	* ov.h: Provide decl.

	* DLD-FUNCTIONS/sort.cc (sortmode): New enum to define sort direction.
	(template <class T> class vec_index): New class to contain values and
	index for indexed sorts, replacing all previous struct versions. 
	Instantiate for double, Complex, char and octave_value.
	(template <class T> static octave_value_list mx_sort (ArrayN<T> &, int,
	sortmode)): New templated version of mx_sort replacing all previous
	versions, but specific to non indexed sorts. Instantiate for char
	and double if not IEEE754.
	(template <> static octave_value_list mx_sort (ArrayN<double> &, 
	int, sortmode)): Specialized function of mx_sort of IEEE754.
	(template <class T> static octave_value_list mx_sort_indexed 
	(ArrayN<T> &, int, sortmode)): New templated version of mx_sort 
	for indexed sorts. Instantiate for double, Complex, char and 
	octave_value.
	(ascending_compare, descending_compare): Comparison functions
	for double, char, vec_index<double> *, vec_index<Complex> *,
	vec_index<char> *, vec_index<octave_value>. Fix Complex comparison
	operator to sort by arg of values if absolute values are equal.
	(Fsort): Update docs for new mode argument and for sorting of 
	strings and cell arrays of strings. Implement mode argument to
	define ascending and descending sorts. Include sorting of cell
	arrays of strings. Adapt for new templated versions of the mx_sort
	function.

2004-09-15  John W. Eaton  <jwe@octave.org>

	* ov-cell.cc (octave_cell::subsref): Pass nargout to next_subsref.
	* ov-builtin.cc (octave_builtin::subsref): Likewise.
	* ov-fcn-handle.cc (octave_fcn_handle::subsref): Likewise.
	* ov-list.cc (octave_list::subsref): Likewise.
	* ov-mapper.cc (octave_mapper::subsref): Likewise.
	* ov-struct.cc (octave_struct::subsref): Likewise.
	* ov-usr-fcn.cc (octave_user_function::subsref): Likewise.

	* ov-struct.cc, ov-struct.h (octave_struct::subsref (const
	std::string&, const std::list<octave_value_list>&, int)):
	Define this version.
	(octave_struct::subsref (const std::string&, const
	std::list<octave_value_list>&)): Panic in this version.
	* ov-list.cc, ov-list.h: Likewise.
	* ov-cell.cc, ov-cell.h: Likewise.

	* ov.cc (octave_value::subsref (int, const std::string&, const
	std::list<octave_value_list>&, size_t)): New function.
	* ov.h: Provide decl.	

	* ov-cell.h (octave_cell::is_constant): Return false.
	* ov-struct.h (octave_struct::is_constant): Delete.
	* ov-list.h (octave_list::is_constant): Delete.

2004-09-14  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/sort.cc (mx_sort (charNDArray&, bool, int)):
	New function to sort character strings.
	(Fsort): Handle character strings.

2004-09-11  John W. Eaton  <jwe@octave.org>

	* ov-fcn-handle.cc (octave_fcn_handle::save_ascii):
	Write directly to OS.
	(octave_fcn_handle::load_ascii,	octave_fcn_handle::load_binary,
	octave_fcn_handle::load_hdf5): Check parse status after calling
	eval_string.  Don't dereference fh unless it is valid.

2004-09-11  David Bateman  <dbateman@free.fr>

	* ov-fcn-handle.cc (octave_fcn_handle::save_ascii,
	octave_fcn_handle::load_ascii, octave_fcn_handle::save_binary,
	octave_fcn_handle::load_binary, octave_fcn_handle::save_hdf5,
	octave_fcn_handle::load_hdf5): New functions. 
	* ov-fcn-handle.h: Provide decls.

	* ov-fcn-inline.cc (octave_fcn_inline::load_ascii):
	Allow spaces in saved function.
 	(octave_fcn_inline::save_hdf5): Properly close all HDF5 objects.

	* ls-oct-ascii.cc (read_ascii_data): Check return type of 
	<octave_value>.load_ascii for errors reading the variables

	* variables.cc (lookup_function_handle, clear_variable,
	clear_symbol): New functions.
	* variables.h: Provide decls.

2004-09-10  John W. Eaton  <jwe@octave.org>

	* ov-builtin.cc (octave_builtin::do_multi_index_op): Use unwind
	protect frame instead of a single unwind_protect::run.
	* ov-mapper.cc (octave_mapper::do_multi_index_op): Likewise.

	* data.cc (fill_matrix, identity_matrix):
	Also allow logical data type.

2004-09-10  David Bateman  <dbateman@free.fr>

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::double_value,
	OCTAVE_VALUE_INT_MATRIX_T::scalar_value,
	OCTAVE_VALUE_INT_SCALAR_T::double_value,
	OCTAVE_VALUE_INT_SCALAR_T::scalar_value): New functions.

2004-09-10  John W. Eaton  <jwe@octave.org>

	* ov-base-scalar.h (octave_base_scalar::clone,
	octave_base_scalar::empty_clone): New functions.

2004-09-09  John W. Eaton  <jwe@octave.org>

	* pt-pr-code.h (tree_print_code::newline): New optional arg, alt_nl.
	* pt-pr-code.cc (tree_print_code::newline): Use it if not printing
	newlines.
	(tree_print_code::visit_statement): If we printed ";", call
	newline with optional arg set to "".
	(tree_print_code::printing_newlines): New data member.
	(tree_print_code::tree_print_code): Initialize it.
	(tree_print_code::suspend_newline, tree_print_code::resume_newline):
	New functions.
	(tree_print_code::newline, tree_print_code::indent): Use it

	* ov-fcn-handle.cc (octave_fcn_handle::print_raw):
	Print code for anonymous function handles.

2004-09-08  John W. Eaton  <jwe@octave.org>

	* ov-fcn-handle.cc (Ffunc2str, Ffunctions): Don't call substr(1)
	on fh_nm, since we no longer need to skip "@" in the name.

	* error.cc (pr_where): Do a better job of printing location info.

	* input.cc (get_user_input): Print location info before the debug
	prompt.  From Keith Goodman <kwgoodman@gmail.com>.

	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Save and set curr_caller_function and curr_caller_statement here.
	* ov-mapper.cc (octave_mapper::do_multi_index_op): Likewise.
	* ov-builtin.cc (octave_builtin::do_multi_index_op): Likewise.

	* pt-stmt.cc (curr_caller_statement): New variable.
	* pt-stmt.h: Provide decl.	

	* toplev.cc (curr_caller_function): New variable.
	* toplev.h: Provide decl.

	* pt-arg-list.cc (convert_to_const_vector):
	Unwind-protect index_position before modifying it.
	Don't protect and set index_position unless stash_object is true.

2004-09-08  David Bateman  <dbateman@free.fr>

	* ov-fcn-inline.cc (octave_fcn_inline::save_ascii,
	octave_fcn_inline::load_ascii, octave_fcn_inline::save_binary,
	octave_fcn_inline::load_binary, octave_fcn_inline::save_hdf5,
	octave_fcn_inline::load_hdf5): New functions. 
	* ov-fcn-inline.h: Provide decls.

2004-09-08  John W. Eaton  <jwe@octave.org>

	* ov.h: Add octave_array_type_traits specialization for
	boolNDArray element type.

2004-09-07  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc: Instantiate octave_stream::write for Array<bool>.
	(octave_stream::read): Expand read_fptr_table to include dt_logical.

	* ov-bool.h (octave_bool::write): New function.
	* ov-bool-mat.h (octave_bool_matrix::write): New function.

	* ov-fcn-inline.h (octave_fcn_inline::octave_fcn_inline): New copy
	constructor.
	(octave_fcn_inline::clone, octave_fcn_inline::empty_clone):
	New functions.

	* ov-fcn-handle.h (octave_fcn_handle::octave_fcn_handle): New copy
	constructor.
	(octave_fcn_handle::clone, octave_fcn_handle::empty_clone):
	New functions.

2004-09-06  John W. Eaton  <jwe@octave.org>

	* ov.cc (install_types): Call octave_fcn_inline::register_type.

	* version.h (OCTAVE_API_VERSION): Now api-v10.

	* OPERATORS/op-b-b.cc, OPERATORS/op-bm-bm.cc: Define and install
	unary plus and unary minus operators.

	* OPERATORS/op-int.h, OPERATORS/op-cm-cm.cc,
	OPERATORS/op-cs-cs.cc, OPERATORS/op-m-m.cc, OPERATORS/op-range.cc:
	Define and install unary plus operator.

	* ov.cc (unary_op_as_string): Handle op_uplus too.

	* parse.y (prefix_expr): Build unary plus op here instead of
	converting to no-op.
	(make_prefix_op): Accept op_uplus.

2004-09-03  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-b-bm.cc (DEFCONV): Define bool scalar to bool
	matrix conversion.
	(install_b_bm_ops): Install it.
	Install conversion for assignment of bool matrix to indexed bool.
	* OPERATORS/op-b-b.cc (install_b_b_ops): Install conversion for
	assignment of bool to indexed bool.

2004-09-03  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-b-b.cc, OPERATORS/op-b-bm.cc, OPERATORS/op-bm-b.cc,
	OPERATORS/op-bm-bm.cc: Modify concatenation between boolean types
	so that it returns a boolean.

	* ov-bool.cc (octave_bool::do_index_op): Return boolean matrix.

	* ov-intx.h (do_index_op (const octave_value_list&, int)):
	New function for indexed subsref of int types.

2004-09-03  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-int.h (OCTAVE_SM_INT_OPS): Define int by double
	mixed comparison and bool ops.
	(OCTAVE_INSTALL_SM_INT_OPS): Install them.
	(OCTAVE_MS_INT_OPS): Define double by int mixed comparison and
	bool ops.
	(OCTAVE_INSTALL_MS_INT_OPS): Install them

	* OPERATORS/op-i8-i8.cc, OPERATORS/op-i16-i16.cc,
	OPERATORS/op-i32-i32.cc, OPERATORS/op-i64-i64.cc,
	OPERATORS/op-ui8-ui8.cc, OPERATORS/op-ui16-ui16.cc,
	OPERATORS/op-ui32-ui32.cc, OPERATORS/op-ui64-ui64.cc:
	Define and install various mixed-type operators.

	* OPERATORS/op-int.h (OCTAVE_MM_INT_OPS): Also define mixed int
	and double matrix comparison and bool ops.
	(OCTAVE_INSTALL_MM_INT_OPS): Install them.
	(OCTAVE_SS_INT_BOOL_OPS, OCTAVE_SM_INT_BOOL_OPS,
	OCTAVE_MS_INT_BOOL_OPS, OCTAVE_MM_INT_BOOL_OPS):
	Define logical AND and OR ops.
	(OCTAVE_INSTALL_SS_INT_BOOL_OPS, OCTAVE_INSTALL_SM_INT_BOOL_OPS,
	OCTAVE_INSTALL_MS_INT_BOOL_OPS, OCTAVE_INSTALL_MM_INT_BOOL_OPS):
	Install them.
	(OCTAVE_MM_INT_CMP_OPS, OCTAVE_MM_INT_BOOL_OPS): Accept prefix arg.
	(OCTAVE_MM_CONV): New macro.
	(OCTAVE_MM_INT_OPS): Use it to define complex matrix conversion.
	(OCTAVE_MIXED_INT_CMP_OPS, OCTAVE_MIXED_INT_BOOL_OPS): New macros.

	* OPERATORS/op-int.h (OCTAVE_MS_INT_OPS): Don't define indexed int
	matrix = complex scalar assignment ops.
	(OCTAVE_MS_INT_OPS): Don't define indexed int matrix = complex
	matrix assignment ops.
	(OCTAVE_SM_CONV): New macro.
	(OCTAVE_SM_INT_OPS): Use it to define int scalar -> (int|complex)
	matrix widening ops.
	(OCTAVE_RE_INT_ASSIGN_OPS, OCTAVE_CX_INT_ASSIGN_OPS): New macros.
	(OCTAVE_INT_OPS): Use them here.
	(OCTAVE_INSTALL_SS_INT_OPS): Install indexed int scalar = scalar
	and indexed int scalar = complex scalar assignment conversions.
	(OCTAVE_INSTALL_SM_INT_OPS): Install int scalar -> (int|complex)
	matrix widening ops.  Install indexed int scalar =
	(int|real|complex) matrix assignment conversions.
	(OCTAVE_INSTALL_MS_INT_OPS): Install indexed int matrix = complex
	scalar assignment conversion.
	(OCTAVE_INSTALL_MM_INT_OPS): Install int matrix -> complex matrix
	widening op.  Install indexed int matrix = complex matrix
	assignment conversion.
	(OCTAVE_INSTALL_RE_INT_ASSIGN_OPS, OCTAVE_INSTALL_CX_INT_ASSIGN_OPS):
	New macros.
	(OCTAVE_INSTALL_INT_OPS): Use them.

	* op-int.h: (OCTAVE_INSTALL_SM_INT_ASSIGNCONV): New macro.
	* OPERATORS/op-i8-i8.cc, OPERATORS/op-i16-i16.cc,
	OPERATORS/op-i32-i32.cc, OPERATORS/op-i64-i64.cc,
	OPERATORS/op-ui8-ui8.cc, OPERATORS/op-ui16-ui16.cc,
	OPERATORS/op-ui32-ui32.cc, OPERATORS/op-ui64-ui64.cc:
	Use it to define mixed size integer scalar/integer matrix
	assignment conversions.

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::complex_array_value,
	OCTAVE_VALUE_INT_SCALAR_T::complex_array_vale):
	New functions.

2004-09-02  John W. Eaton  <jwe@octave.org>

	* DLD-FUNCTIONS/quad.cc (Fquad): Pass "__quad_fcn_" instead of
	"__quad_fcn__" to unique_symbol_name.

	* ov-fcn-inline.cc (octave_fcn_inline): Pass "__inline_" instead
	of "__inline__" to unique_symbol_name.

	* variables.cc (unique_symbol_name): Make better random symbol name.

2004-09-01  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_VERSION): Now 2.1.58.

	* Makefile.in (OP_INCLUDES): New variable.
	Include OPERATORS/op-int.h here.
	* Makefile.in (dist): Also link $(OP_INCLUDES).

	* Makefile.in (DISTFILES): Include $(EXTRAS) in the list.

2004-09-01  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTION/quad.cc: Allow function handle and inline functions.
	Use a unique function name and delete it on exit.

	* ov.h (is_inline_function): New virtual function.
	* ov-fcn-inline.h (is_inline_function): New function.
	* ov-base.h (is_inline_function): New function.

	* ov-fcn-inline.cc (octave_fcn_handle::octave_fcn_handle):
	Use unique_symbol_name and clear_function instead of manipulating
	symbol table directly.

	* variables.cc (unique_symbol_name): New function.
	(clear_function): New function.
	* variables.h: Provide decls.

	* dynamic-ld.cc (do_clear_function): Rename from clear_function.

2004-09-01  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-i8-i8.cc, OPERATORS/op-i16-i16.cc,
	OPERATORS/op-i32-i32.cc, OPERATORS/op-i64-i64.cc,
	OPERATORS/op-ui8-ui8.cc, OPERATORS/op-ui16-ui16.cc,
	OPERATORS/op-ui32-ui32.cc, OPERATORS/op-ui64-ui64.cc:
	Define and install mixed assignment ops.
	* op-int.h: Define mixed integer/double ops.
	Define simple division ops.

	* ov-complex.h (octave_complex_scalar): New typedef to simplify
	various macros where naming consistency matters.

2004-08-31  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-int.h (ss_pow, ms_el_pow, mm_el_pow): New power 
	functions.
	(sm_el_pow): Return correct type.
	(OCTAVE_SS_POW_OPS, OCTAVE_SM_POW_OPS, OCTAVE_MS_POW_OPS,
	OCTAVE_MM_POW_OPS): New macros to define the power operator over
	integer types.
	(OCTAVE_SS_INT_OPS, OCTAVE_SM_INT_OPS, OCTAVE_MS_INT_OPS,
	OCTAVE_MM_INT_OPS): Use the new macros for the power operators.
	(OCTAVE_INSTALL_SS_INT_OPS, OCTAVE_INSTALL_MS_INT_OPS,
	OCTAVE_INSTALL_MM_INT_OPS): Install new power functions.

	* OPERATORS/op-int-conv.cc (INT_CONV_FUNCTIONS): Correct return
	types for unsigned integer scalars and signed integer matrices.

	* ov-type-conv.h (OCTAVE_TYPE_CONV_BODY3): Conversion betwen same
	types returns the original value.

	* bitfcns.cc (BITOP): Fix for mixed scalar/matrix ops. Allow 
	octave_range as an argument, by using class_name rather than
	type_id to test.

2004-08-31  John W. Eaton  <jwe@octave.org>

	* pr-output.cc (pr_int): Also handle bank_format.
	(octave_print_internal (std::ostream& os, const intNDArray<T>&,
	bool, int)): Likewise.

2004-08-31  David Bateman  <dbateman@free.fr>

	* pr-output.cc (pr_int(std::ostream, const T&, int)):
	New template function to print formatted integer types.
	Instantiate it for all of the integer types.
	(octave_print_internal (std::ostream, const intNDArray<T>&, bool,
	int)): Use pr_int.  Align output up in columns, and check for
	free_format or plus_format.
	(octave_print_internal (std::ostream, const octave_int<T>&, bool)):
	Use pr_int.  Check for free_format and plus_format.

	* ls-hdf5.cc (hdf5_read_next_data): When importing hdf5 files,
	allow structures and lists (for backward compatibility).  Also
	allow importation of integer types into octave int and uint types.

2004-08-31  John W. Eaton  <jwe@octave.org>

	* data.cc (fill_matrix, identity_matrix): Convert class name to
	oct_data_conv::data_type and switch on that.
	(identity_matrix (int, int)): New template.
	(identity_matrix (int, int, const std::string&)): Use it.

	* ov.h (octave_type_traits, octave_array_type_traits): Move here.
	* oct-stream.cc: From here.

2004-08-31  David Bateman  <dbateman@free.fr>

	* data.cc (Fzeros, Fones, Feye): Update help text for optional
	class argument.
	(static octave_value identity_matrix (int, int, const std::string&)):
	New function to create identity matrices with an arbitrary type.
	(Feye): Call new version of identity matrix function, even for scalars.
	(static octave_value fill_matrix (const octave_value_list&, double,
	const char *)): Update to allow arbitrary classes of matrices to be
	created.

2004-08-31  John W. Eaton  <jwe@octave.org>

	* ls-mat5.cc (read_int): New function.

	* oct-stream.cc (octave_base_stream::do_read,
	octave_base_stream::read, octave_base_stream::write): Delete.
	* oct-stream.h: Delete decls.

	* oct-stream.cc (octave_stream::read): Handle block_size and
	separate input/output types.
	(octave_stream::write): Handle block_size and various input types.
	(octave_type_traits, octave_array_type_traits):	New traits classes.
	(do_read): New templates to read data and perform type conversion.
	(octave_stream::write (const Array<T>&, int,
	oct_data_conv::data_type, int, oct_mach_info::float_format),
	do_write, write_int):
	New templates to write ints and perform type conversion.
	Instantiate for various Octave types.

	* ov.cc (octave_value::write): New function.
	* ov.h: Provide decl.
	* ov-base.cc (octave_base_value::write): New function.
	* ov-base.h: Provide decl.
	* ov-complex.h (octave_complex::write): New function.
	* ov-cx-mat.h (octave_complex_matrix::write): New function.
	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::write): New function.
	(OCTAVE_VALUE_INT_SCALAR_T::write): New function.
	* ov-re-mat.h (octave_matrix::write): New function.
	* ov-scalar.h (octave_scalar::write): New function.
	* ov-str-mat.h (octave_char_matrix_str::write): New function.

	* file-io.cc (Ffread): Handle block size, to/from format in
	precision argument.
	(Ffwrite): Handle block size in precision argument.

2004-08-25  David Bateman  <dbateman@free.fr>

	* ov-cell.cc (octave_cell::subsasgn): Delete elements of cell array
	when type is "(" and rhs is empty.

2004-08-09  John W. Eaton  <jwe@octave.org>

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::index_vector,
	OCTAVE_VALUE_INT_SCALAR_T::index_vector): New functions.

2004-08-06  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-struct.cc: New file.
	* ov-struct.h (octave_struct::resize (const dim_vector&)):
	New function.
	* oct-map.h (Octave_map::resize (const dim_vector&)): New function.
	* ov-map.cc (Octave_map::reshape):
	Correct return for same sized reshape.
	(Octave_map::resize (const dim_vector&)): New function.
	(concat (const Octave_map&, const Octave_map&, const Array<int>&)):
	Complete concatenation function.
	* Makefile.in (OP_XSRC): Include op-struct.cc in the list.

2004-08-05  John W. Eaton  <jwe@octave.org>

	* pt-stmt.h (tree_statement::set_command,
	(tree_statement::set_expression): New functions.

	* parse.y (param_list_beg): Handle pushing new symbol table
	context for anonymous function handle parameter lists here.
	(anon_fcn_handle): New non-terminal.
	(expression): Include anon_fcn_handle here.
	(make_anon_fcn_handle): New static function.

2004-08-05  David Bateman  <dbateman@free.fr>

	* ov.cc (octave_value::fcn_inline_value): New virtual function.
	* ov.h (octave_value::fcn_inline_value): Provide decl.
	* ov-base.cc (octave_base_value::fcn_inline_value): New function
	* ov-base.h (octave_base_value::fcn_inline_value): Provide decl.
	* ov-fcn-handle.cc (octave_fcn_handle::octave_fcn_handle 
	(const std::string&, const string_vector&, const std::string&),
	octave_fcn_handle::convert_to_str_internal, Finline, Fargnames,
	Fformula, Fvectorize): Delete.
	(octave_fcn_handle::print_raw): Remove inline case.
	* ov-fcn-handle.h (octave_fcn_handle::fcn_type,
	octave_fcn_handle::octave_fcn_handle (const std::string&, const
	string_vector&, const std::string&),
	octave_fcn_handle::inline_fcn_name,
	octave_fcn_handle::inline_fcn_text,
	octave_fcn_handle::inline_fcn_arg_names,
	octave_fcn_handle::is_inline,
	octave_fcn_handle::convert_to_str_internal,
	octave_fcn_handle::typ, octave_fcn_handle::iftext,
	octave_fcn_handle::ifargs): Delete constructors,
	functions, and data members (moved to ov-fcn-inline.h).
	* Makefile.in: Include ov-fcn-inline.h and ov-fcn-inline.cc where
	appropriate.
	* ov-fcn-inline.h, ov-fcn-inline.cc: New class.

2004-08-05  John W. Eaton  <jwe@octave.org>

	* ov-base-int.cc (octave_base_int_matrix<T>::save_ascii,
	octave_base_int_matrix<T>::load_ascii,
	octave_base_int_matrix<T>::save_binary,
	octave_base_int_matrix<T>::load_binary,
	octave_base_int_matrix<T>::save_hdf5,
	octave_base_int_matrix<T>::load_hdf5,
	octave_base_int_matrix<T>::try_narrowing_conversion,
	octave_base_int_scalar<T>::print_raw,
	octave_base_int_scalar<T>::save_ascii,
	octave_base_int_scalar<T>::load_ascii,
	octave_base_int_scalar<T>::save_binary,
	octave_base_int_scalar<T>::load_binary,
	octave_base_int_scalar<T>::save_hdf5,
	octave_base_int_scalar<T>::load_hdf5):
	Sprinkle with this-> as needed.

	* Makefile.in (EXTRAS): New macro.  Move ov-base-int.cc here from
	OV_INTTYPE_SRC.
	(INCLUDES_FOR_INSTALL): New macro.
	(install-inc, uninstall): Use it instead of INCLUDES.

	* variables.h (symbol_exist): Default for type is now "any".

2004-08-05  David Bateman  <dbateman@free.fr>

	* ov-fcn-handle.cc (octave_fcn_handle (const std::string&, 
	const string_vector&, const std::string&)): New constructor for inline
	function handles.
	(octave_fcn_handle::print_raw): Allow inline functions to be printed.
	(octave_fcn_handle::convert_to_str_internal): New function to allow
	Fchar to work on inlined function handles.
	(Finline, Fformula, Fargnames, Fvectorize): New functions.
	* ov-fcn-handle.h (octave_fcn_handle (const std::string&, 
	const string_vector&, const std::string&)): Provide decl.
	(octave_fcn_handle::convert_to_str_internal): Provide decl.
	(fcn_type): New enum for the type of function handle.
	(octave_fcn_handle::inline_fcn_text, octave_fcn_handle::is_inline,
	octave_fcn_handle::inline_fcn_arg_names): New functions.
	(octave_fcn_handle::typ, octave_fcn_handle::iftext,
	octave_fcn_handle::ifargs): New private variables for inline functions.

2004-08-04  John W. Eaton  <jwe@octave.org>

	* parse.y (fcn_handle):
	Recognize '@' FCN_HANDLE rather than just FCN_HANDLE.
	Decrement lexer_flags.looking_at_function_handle here.
	* lex.h (lexical_feedback::looking_at_function_handle):
	New data member.
	(lexical_feedback::init): Initialize it.
	* lex.l (handle_identifier): Only reject keywords if we are
	looking at a function handle.
	("@"): Recognize this separately from what follows.
	Increment lexer_flags.looking_at_function_handle here.

	* ov-fcn-handle.h (octave_fcn_handle::octave_fcn_handle
	(octave_function*, const std::string)): Delete.
	* ov.h, ov.cc (octave_value::octave_value (octave_function *)): Delete.
	(octave_value::octave_value (octave_function *, const std::string)):
	Delete.

	* ov-fcn-handle.h (octave_fcn_handle::fcn): Now octave_value, not
	pointer to octave_function.
	(octave_fcn_handle::octave_fcn_handle (const octave_value&, const
	std::string)): New constructor.
	* variables.cc (lookup_function): Return octave_value, not pointer
	to octave_function.  Change all uses.
	(lookup_user_function): Return octave_value, not pointer
	to octave_user_function.  Change all uses.

2004-08-03  John W. Eaton  <jwe@octave.org>

	* ov-usr-fcn.cc (octave_user_fcn::do_multi_index_op): Call
	install_automatic_vars here.
	(octave_user_fcn::octave_user_fcn): Not here.
	(install_automatic_vars): Don't mark argn_sr, nargin_sr,
	nargout_sr, or varargin_sr as static.

	* oct-stream.cc (octave_scan): Avoid need for pushing two
	characters back on the input stream.

2004-08-02  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_scan): For %i format, recognize numbers
	with leading 0x or 0X as hex and leading 0 as octal.

	* OPERATORS/op-fcn-handle.cc: Delete.
	* Makefile.in (OP_XSRC): Delete it from the list.
	* pr-output.cc (octave_print_internal (std::ostream&, const
	std::string&, bool, int): New function.
	* ov-fcn-handle.cc (octave_value::subsref): New function.
	* ov-fcn-handle.h (class fcn_handle_elt, class fcn_handle_array):
	Delete.
	(class octave_fcn_handle): Derive from octave_base_value, not
	octave_base_matrix<fcn_handle_array>.

	* ov-cx-mat.cc (try_narrowing_conversion): Also allow complex to
	real conversion for N-d arrays.

2004-07-30  John W. Eaton  <jwe@octave.org>

	* lex.l (<COMMAND_START>[^#% \t\r\n\;\,\"\'][^ \t\r\n\;\,]*{S}*):
	Also recognize \r as a word list separator.

2004-07-27  John W. Eaton  <jwe@octave.org>

	* bitfcns.cc (DO_BITSHIFT): Pass mask to bitshift.
	(bitshift (double, int, EIGHT_BYTE_INT): New arg, mask.
	(DO_UBITSHIFT, DO_SBITSHIFT): Use bitshfit, not operator >>.
	Use nbits function from octave_int type to set bits_in_type.

	* ov-struct.cc (Fisfield): Only print usage message if number of
	arguments is incorrect.  Return false for invalid arguments.
	From Andy Adler <adler@site.uottawa.ca>.

2004-07-27  David Bateman  <dbateman@free.fr>

	* Cell.cc (Cell::index): Quit early if an error occurs when
	creating index vector object.

	* ov-int8.cc, ov-int16.cc, ov-int32.cc, ov-int64.cc, ov-uint8.cc, 
	ov-uint16.cc, ov-uint32.cc, ov-uint64.cc (HDF5_SAVE_TYPE): Define
	for HDF5 native format for the type.

	* ov-base-int.h (save_ascii, save_binary, load_binary, save_hdf5):
	Delete unused arguments.

	* ov-base-int.cc (octave_base_int_matrix::save_ascii,
	octave_base_int_matrix::save_binary,
	octave_base_int_scalar::save_ascii,
	octave_base_int_scalar::save_binary,
	octave_base_int_scalar::save_hdf5): Delete unused argument.

	* ov-base-int.cc (octave_base_int_matrix::save_binary,
	octave_base_int_matrix::load_binary,
	octave_base_int_matrix::save_hdf5,
	octave_base_int_matrix::load_hdf5,
	octave_base_int_scalar::save_ascii,
	octave_base_int_scalar::load_ascii,
	octave_base_int_scalar::save_binary,
	octave_base_int_scalar::load_binary,
	octave_base_int_scalar::save_hdf5,
	octave_base_int_scalar::load_hdf5): Implement missing functions.

2004-07-23  David Bateman  <dbateman@free.fr>

	* ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::array_value,
	OCTAVE_VALUE_INT_SCALAR_T::array_value): new methods to extract array
	value from integer types.

	* bitfcns.cc (BITOPX): New Macro renamed from BITOP.
	(BITOP): Alter to allow different types and call BITOP appropriately.
	(DO_SBITSHIFT, DO_UBITSHIFT): New macros for signed, unsigned
	bitshifts.

	(DO_BITSHIFT): Test for shift of more bits than in type, which is
	undefined.  Generalize to allow double args as well.
	(Fbitshift): Add int and double types.
	(Fbitmax): Return 53 bit value which conforms to IEEE754 double
	mantissa.
	(Fintmax, Fintmin): New functions.
	(Fbitget, Fbitset, Fbitcmp): Delete.

	* OPERATORS/op-int.h: Add sm_el_pow function

	* ops.h (CATOPDECL, DEFCATOPX, DEFCATOP, DEFCATOP_FB, DEFNDCATOP_FN, 
	CATOP_NONCONFORMANT, INSTALL_CATOP): New macros.
	
	* OPERATORS/op-b-b.cc, OPERATORS/op-b-bm.cc, OPERATORS/op-bm-b.cc, 
	OPERATORS/op-bm-bm.cc, OPERATORS/op-cell.cc, OPERATORS/op-chm.cc, 
	OPERATORS/op-cm-cm.cc, OPERATORS/op-cm-cs.cc, OPERATORS/op-cm-m.cc, 
	OPERATORS/op-cm-s.cc, OPERATORS/op-cs-cm.cc, OPERATORS/op-cs-cs.cc, 
	OPERATORS/op-cs-m.cc, OPERATORS/op-cs-s.cc, OPERATORS/op-m-cm.cc, 
	OPERATORS/op-m-cs.cc, OPERATORS/op-m-m.cc, OPERATORS/op-m-s.cc, 
	OPERATORS/op-range.cc, OPERATORS/op-s-cm.cc, OPERATORS/op-s-cs.cc, 
	OPERATORS/op-s-m.cc, OPERATORS/op-s-s.cc, OPERATORS/op-str-str.cc,
	OPERATORS/op-str-m.cc, OPERATORS/op-str-s.cc (CATOPDECL, DEFCATOPX,
	DEFCATOP, DEFCATOP_FB, DEFNDCATOP_FN, CATOP_NONCONFORMANT,
	INSTALL_CATOP): Use them to define concatenation functions.

	* OPERATORS/op-int.h (OCTAVE_CONCAT_FN, OCTAVE_INSTALL_CONCAT_FN):
	New macros to define and install concatentaion functions for int/uint
	types.
	
	* TEMPLATE-INST/Array-tc.cc (INSTANTIATE_ARRAY_CAT): Delete.

	* pt-mat.cc (tm_row_const::tm_row_const_rep::do_init_element):
	Also append empty elements to the list of elements to be parsed.
	(tree_matrix::rvalue): Use new concatenation binary operators.

	* data.cc (cat_add_dims): Delete (now dim_vector::concat).
	(do_cat): Use new concatenation binary operators.

	* ov-typeinfo.cc (cat_op_fcn): Instantiate the array of cat functions.
	(register_cat_op, do_register_cat_op, do_lookup_cat_op): New functions.
	(cat_ops): Lookup table of binary concatentaion operators.

	* ov-typeinfo.h (lookup_cat_op): New function.

	* ov.cc (gripe_cat_op, gripe_cat_op_conv, do_cat_op): New functions.

	* ov.h (cat_op_fcn): Definition.
	(resize, do_cat_op): New functions.

	* ov-intx.h (resize): New_function

	* version.h (OCTAVE_API_VERSION): Bump version to api-v9.

	* Cell.cc, Cell.h, oct-map.cc, oct-map.h (cat): Delete.
	(concat): New function.

	* Cell.cc, Cell.h (insert): New function

	* ov-base.cc, ov-base.h, ov-scalar.h, ov-complex.h, ov-bool.h, 
	ov-range.h, ov-base-mat.h, (resize): New function.


2004-07-23  John W. Eaton  <jwe@octave.org>

	* symtab.cc (whos_parameter): Move decl here, from symtab.h.

2004-07-23  Oyvind Kristiansen  <oyvinkri@stud.ntnu.no>

	* symtab.cc (symbol_record::subsymbols_list): New method.
	(symbol_record::maybe_list): Call to subsymbols_list and merge
	result with the original list of symbols.

	* symtab.cc (symbol_record::make_dimensions_string): New method.
	(symbol_record::print_symbol_info_line): Print N-d info.  Output
	for long format now under control of format string.
	(symbol_table::maybe_list): Headers to whos listing updated.
	Also print footer info.
	(symbol_table::print_descriptor): Method printing the 
	header of whos listings.
	(symbol_table::parse_whos_line_format): New method.
	(whos_line_format, Vwhos_line_format): New built-in variables.
	(symbols_of_symtab): DEFVAR them.
	(symbol_record::nelem, symbol_record::symbol_def::nelem,
	symbol_record::byte_size, symbol_record::symbol_def::byte_size):
	New methods.
	(symbol_record::dimensions_string_req_first_space): New	method.
	(symbol_record::dimensions_string_req_total_space): New	method.
	* symtab.h (whos_parameter): New struct.  Container for one
	parameter in whos_line_format.

2004-07-22  Paul Kienzle  <pkienzle@users.sf.net>

	* DLD-FUNCTIONS/dassl.cc (Fdassl): Fix doc string.
	* ov-struct.cc (Fstruct): Likewise.
	* symtab.cc (Fdebug_symtab_lookups): Likewise.

2004-07-22  David Bateman  <dbateman@free.fr>

	* data.cc (Fsize): Return 1 for dimensions exceeding ndim.

	* ov.cc (octave_value::octave_value (const ArrayN<double>)):
	New constructor.
	* ov.h: Provide decl.
	* ov-cx-mat.h (octave_complex_matrix (const ArrayN<Complex>&)):
	New constructor.
	* ov-re-mat.h (octave_complex_matrix (const ArrayN<double>&)):
	New constructor.

	* ov-re-mat.h (octave_matrix(const ArrayN<double>&)): New constructor
	* pt-loop.cc (DO_ND_LOOP): New macro for use of NDArray in for loop.
	(tree_simple_for_command::eval): Use it, and allow iteration over
	cell arrays.

2004-07-12  John W. Eaton  <jwe@octave.org>

	* ov-intx.h: N-d array and scalar extractor functions take no args.

	* ov.h (octave_value::int8_scalar_value,
	octave_value::int16_scalar_value, octave_value::int32_scalar_value,
	octave_value::int64_scalar_value, octave_value::uint8_scalar_value,
	octave_value::uint16_scalar_value, octave_value::uint32_scalar_value,
	octave_value::uint64_scalar_value): New functions.
	* ov-base.cc (octave_base_value::int8_scalar_value,
	octave_base_value::int16_scalar_value,
	octave_base_value::int32_scalar_value,
	octave_base_value::int64_scalar_value,
	octave_base_value::uint8_scalar_value,
	octave_base_value::uint16_scalar_value,
	octave_base_value::uint32_scalar_value,
	octave_base_value::uint64_scalar_value): New functions.
	* ov-base.h: Provide decls.

	* lex.l: (Vtoken_count): New static variable.
	(COUNT_TOK_AND_RETURN): New macro.  Use it everywhere a token is
	returned to the parser.
	(F__token_count__): New function.

2004-06-25  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-int-conv.cc: Add conversions for range type.

2004-06-17  John W. Eaton  <jwe@octave.org>

	* bitfcns.cc (bitfcns): New file.
	* Makefile.in (DIST_SRC): Add it to the list.

2004-06-16  John W. Eaton  <jwe@octave.org>

	* OPERATORS/op-int.h: New file.
	* OPERATORS/op-i16-i16.cc, OPERATORS/op-i8-i8.cc,
	OPERATORS/op-ui32-ui32.cc, OPERATORS/op-i32-i32.cc,
	OPERATORS/op-int-conv.cc, OPERATORS/op-ui64-ui64.cc,
	OPERATORS/op-i64-i64.cc, OPERATORS/op-ui16-ui16.cc,
	OPERATORS/op-ui8-ui8.cc: Use new macros from op-int.h.

2004-06-14  John W. Eaton  <jwe@octave.org>

	* pr-output.h, pr-output.cc (octave_print_conv): New traits class.
	(template <class T> void octave_print_internal (std::ostream&,
	const intNDArray<T>&, bool, int),
	(template <class T> void octave_print_internal (std::ostream&,
	const octave_int<T>&, bool)): New template functions.
	Instantiate versions for new int types.

	* ov-typeinfo.h (octave_value_typeinfo::type_conv_ops):
	New data member.
	(octave_value_typeinfo::register_type_conv_op,
	octave_value_typeinfo::lookup_type_conv_op,
	octave_value_typeinfo::do_register_type_conv_op,
	octave_value_typeinfo::do_lookup_type_conv_op): New functions.

	* ov-re-mat.cc (Fdouble): New function.

	* ov-range.h (octave_range::reshape): Reshape array_value, not
	matrix_value.

	* ov-base-scalar.h (octave_base_scalar<ST>::all,
	octave_base_scalar<ST>::any, octave_base_scalar<ST>::is_true): Use
	ST() instead of 0.0.

	* ov-base-mat.h (octave_base_matrix<MT>::byte_size): New function.
	
	* ops.h (INSTALL_COLNVOP, DEFCONVFNX, DEFDBLCONVFN, DEFCONVFN,
	DEFCONVFN2): New macros.

	* DLD-FUNCTIONS/filter.cc (Ffilter): Kluge type conversions.

	* ov.cc (install_types): Register new integer types.

	* ov.h, ov.cc (octave_value::octave_value (const octave_int8&),
	octave_value::octave_value (const octave_uint8&),
	octave_value::octave_value (const octave_int16&),
	octave_value::octave_value (const octave_uint16&),
	octave_value::octave_value (const octave_int32&),
	octave_value::octave_value (const octave_uint32&),
	octave_value::octave_value (const octave_int64&),
	octave_value::octave_value (const octave_uint64&),
	octave_value::octave_value (const int8NDArray&),
	octave_value::octave_value (const uint8NDArray&),
	octave_value::octave_value (const int16NDArray&),
	octave_value::octave_value (const uint16NDArray&),
	octave_value::octave_value (const int32NDArray&),
	octave_value::octave_value (const uint32NDArray&),
	octave_value::octave_value (const int64NDArray&),
	octave_value::octave_value (const uint64NDArray&)):
	New constructors.

	* ov.h (octave_value::internal_rep): New function.
	(DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Also define
	static_type_id, static_type_name, and static_class_name
	functions.

	* Cell.h (Cell::reshape (const dim_vector&)): New forwarding
	function for return type conversion.

	* ov-int16.cc, ov-int16.h, ov-int32.cc, ov-int32.h, ov-int64.cc,
	ov-int64.h, ov-int8.cc, ov-int8.h, ov-uint16.cc, ov-uint16.h,
	ov-uint32.cc, ov-uint32.h, ov-uint64.cc, ov-uint64.h, ov-uint8.cc,
	ov-uint8.h, ov-type-conv.h, ov-int-traits.h,
	OPERATORS/op-int-conv.cc, OPERATORS/op-double-conv.cc,
	OPERATORS/op-i16-i16.cc, OPERATORS/op-i32-i32.cc,
	OPERATORS/op-i64-i64.cc, OPERATORS/op-i8-i8.cc,
	OPERATORS/op-ui16-ui16.cc, OPERATORS/op-ui32-ui32.cc,
	OPERATORS/op-ui64-ui64.cc, OPERATORS/op-ui8-ui8.cc: New files.
	Makefile.in: Add them to the appropriate lists.

2004-06-03  John W. Eaton  <jwe@octave.org>

	* ov-fcn-handle.h (octave_function_handle::is_matrix_type,
	octave_function_handle::is_numeric_type,
	octave_function_handle::is_constant,
	octave_function_handle::is_true): New functions.
	(octave_function_handle::is_defined): Delete (inherited version is
	OK).

2004-06-03  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/filter.cc: Fix for length(a)=1 && length(b)=2 case.

2004-05-07  John W. Eaton  <jwe@octave.org>

	* ov.cc (octave_value::print_with_name): Only print name tag if
	Vprint_answer_id_name is true.

	* octave.cc (intern_argv): Insert __nargin__ in top_level_sym_tab
	instead of making it a builtin variable.  Mark it static.
	* ov-usr-fcn.cc (octave_user_function::install_automatic_vars):
	Mark local automatic variables static.

2004-04-30  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (octave_base_stream::clearerr): New function.
	(octave_stream::clearerr): New function.
	(seek (long, int)): Call clearerr here.
	* oct-stdstrm.h (octave_stdiostream::clear): New function.
	* c-file-ptr-stream.h (c_file_ptr_buf::clear,
	i_c_file_ptr_stream::clear, o_c_file_ptr_stream::clear,
	io_c_file_ptr_stream::clear): New functions.

2004-04-29  David Bateman  <dbateman@free.fr>

	* load-save.cc (Fload, Fsave): Accept -mat as well as -mat-binary.

2004-04-27  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/sort.cc: Add missing "class" keywords to template
	instantiations.

2004-04-22  John W. Eaton  <jwe@octave.org>

	* pt-plot.cc (Fclearplot): Temporarily turn off automatic_replot.
	Clear display after resetting title, labels, etc.

2004-04-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-colon.cc (tree_colon_expression::rvalue): Also check for
	error_state after evaluating each subexpression.

2004-04-22  David Bateman  <dbateman@free.fr>

	* ov-base-scalar.h (octave_base_scalar<ST>::permute): New function.

	* ov-base-mat.cc (octave_base_matrix<MT>::is_true): Make N-d aware.

2004-04-22  John W. Eaton  <jwe@octave.org>

	* oct-stream.cc (printf_value_cache::curr_value): Now NDArray.
	(printf_value_cache::double_value): Extract N-d array, not Matrix.

2004-04-21  John W. Eaton  <jwe@octave.org>

	* parse.y (function2): Pass id name to frob_function.  Delete id.
	(frob_function): Accept function name instead of identifier.
	Don't try to rename symbol table entry.  Lookup symbol record for
	function name here.  Insert name in symbol table if needed.
	Operate on symbol record instead of identifier.

2004-04-21  David Bateman  <dbateman@free.fr>

	* DLD_FUNCTIONS/fft.cc(do_fft): Correctly initialize the variable dim
	for scalar arguments.

	* DLD-FUNCTIONS/minmax.cc: Handle single vector arg correctly.

2004-04-20  John W. Eaton  <jwe@octave.org>

	* ls-mat-ascii.cc (read_mat_ascii_data): Prepend "X" to keywords.
	Only drop text after last "." in name.

	* lex.l (is_keyword): New function.
	(Fiskeyword): Use it.
	* lex.h: Provide decl.

	* lex.l (is_keyword_token): Rename from is_keyword.

2004-04-16  John W. Eaton  <jwe@octave.org>

	* file-io.cc (maybe_warn_interface_change): New function.
	(fopen_mode_to_ios_mode): Use it.

2004-04-16  Paul Kienzle  <pkienzle@users.sf.net>

	* file-io.cc (fopen_mode_to_ios_mode):  Default to binary mode.
	(Ffopen): Document 't' and 'b' mode flags.

2004-04-16  John W. Eaton  <jwe@octave.org>

	* Makefile.in (DLD_XSRC): Add gcd.cc to the list.

2004-04-16  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/gcd.cc: New file.

2004-04-15  David Bateman  <dbateman@free.fr>

	* ov-ch-mat.h: convert_to_str_interal returns charNDArray.

2004-04-12  John W. Eaton  <jwe@octave.org>

	* version.h (OCTAVE_BUGS_STATEMENT): Bug list is now bug@octave.org.

2004-04-08  John W. Eaton  <jwe@octave.org>

	* ov-base-mat.cc (octave_base_matrix<MT>::do_index_op): Quit early
	if an error occurs when creating index vector object.

	* ov.cc (octave_value::numeric_assign): Always call maybe_mutate
	on return value.

2004-04-06  David Bateman  <dbateman@free.fr>

  	* DLD_FUNCTIONS/sort.cc: Use the new template sort class, adapt for
	N-d arrays, and allow optional dim argument.

	* DLD_FUNCTIONS/fftn.cc: Save result of transpose operation.
	Check for failure of transpose.

2004-04-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool.h (octave_bool::bool_array_value): New function.

	* ov-base-mat.cc (octave_base_matrix<MT>::subsasgn): Don't allow
	expressions like x(i)(j) or x(i){j} when x is empty.

	* load-save.cc (get_file_format): Error if file does not exist.
	(Fload): Also complain here if specific file type is specified and
	file does not exist.

2004-04-02  Quentin Spencer  <qspencer@ieee.org>

	* parse.y: Use persistent instead of static in warnings messages.

2004-04-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-decl.cc (tree_static_command::do_init): Initialize to empty
	matrix by default.

2004-04-02  David Bateman  <dbateman@free.fr>

	* ov-re-mat.cc (octave_matrix::convert_to_str_internal):
	Return charNDArray.
	* ov-bool-mat.cc (octave_bool_matrix::convert_to_str_internal):
	Call array_value.
	
	* DLD-FUNCTIONS/besselj.cc, DLD-FUNCTIONS/betainc.cc,
	DLD-FUNCTIONS/gammainc.cc, DLD-FUNCTIONS/minmax.cc,
	DLD-FUNCTIONS/filter.cc:
	Convert for N-d array, better Matlab compatibility.

	* load-save.cc (Fload): Better handling of non existent files.
	
2004-03-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-list.cc (octave_list::subsref): Correctly create return value.
	Return comma-separate list if {-style indexing extracts more than
	one value.

2004-03-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.57.
	(OCTAVE_API_VERSION): Now api-v8.

	* ov-cell.cc (octave_cell::save_hdf5): Handle empty cells.
	(octave_cell::load_hdf5): Likewise.

2004-03-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-base-mat.cc (octave_base_matrix<MT>::subsasgn): If empty,
	allow type conversion when indexing with "{" and ".".

2004-03-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (init_format_state): Also set compact_format.
	(pr_col_num_header): Print one newline character before column
	headers for compact format.

2004-03-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_WWW_STATEMENT): New macro.
	(OCTAVE_STARTUP_MESSAGE): Include it here.
	(OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS): And here.

	* octave.cc (verbose_usage): Use OCTAVE_WWW_STATEMENT here.

	* DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): If there are no
	nonzero elements, return [](0x1) or [](1x0), not [](0x0).
	Correctly preserve orientation for row vectors.

2004-03-08  Petter Risholm  <risholm@idi.ntnu.no>

	* data.cc (do_cat): Check for length of args before getting dimension.
	New arg, fname.  Print usage message corresponding to fname.
	(Fcat): Pass "cat" as fname arg to do_cat.
	(Fhorzcat): Pass "horzcat" as fname arg to do_cat.
	(Fvertcat): Pass "vertcat" as fname arg to do_cat.

2004-03-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.56.
	(OCTAVE_API_VERSION): Now api-v7.

2004-03-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-struct.cc (Frmfield): New function

	* oct-map.h (Octave_map::contains): Return bool, not int.

	* ov-cell.cc (Fiscellstr): No error if arg is not a cell array.
	(Fcellstr): Return arg if it is already a cell array of character
	strings.

2004-03-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool.cc (octave_bool::load_hdf5, octave_bool::save_hdf5):
	Avoid unnecessary casts.
	* ov-bool-mat.cc (octave_bool_matrix::load_hdf5,
	octave_bool_matrix::save_hdf5): Likewise.
	* ov-cell.cc (octave_cell::load_hdf5, octave_cell::save_hdf5):
	Likewise.
	* ov-complex.cc (octave_complex::load_hdf5,
	octave_complex::save_hdf5): Likewise.
	* ov-cx-mat.cc (octave_complex_matrix::load_hdf5,
	octave_complex_matrix::save_hdf5): Likewise.
	* ov-range.cc (octave_range::load_hdf5, octave_range::save_hdf5):
	Likewise.
	* ov-re-mat.cc (octave_matrix::load_hdf5, octave_matrix::save_hdf5):
	Likewise.
	* ov-scalar.cc (octave_scalar::load_hdf5, octave_scalar::save_hdf5):
	Likewise.
	* ov-str-mat.cc (octave_char_matrix_str::load_hdf5,
	octave_char_matrix_str::save_hdf5): Likewise.

2004-03-03 David Bateman  <dbateman@free.fr>

	* ov-cell.cc (octave_cell::save_hdf5, octave_cell::load_hdf5):
	Make N-d aware.

2004-03-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y: Delete spaces surrounding = in %name-prefix directive.

2004-03-01  Petter Risholm  <risholm@idi.ntnu.no>

        * Cell.cc (Cell::cat): New function.
        * Cell.h: Provide decl.

        * oct-map.cc (Octave_map::cat): New function.
        * oct-map.h: Provide decl.

        * data.cc (Fcat): Speedup implementation.

        * data.cc (Fhorzcat, Fvertcat): New functions.

        * Array-tc.cc: Instantiate cat function.

2004-03-01  David Bateman  <dbateman@free.fr>

	* ls-hdf5.cc (save_hdf5_empty, load_hdf5_empty): New functions
	to save/load empty matrices keeping their dimensions.
	* ls-hdf5.h (save_hdf5_empty, load_hdf5_empty): Provide decls.

	* ov-re-mat.cc (save_hdf5, load_hdf5): Cleanup, check empty matrix.
	* ov-cx-mat.cc (save_hdf5, load_hdf5): Ditto.
	* ov-bool-mat.cc (save_hdf5, load_hdf5): Ditto.

	* ov-str-mat.cc (save_ascoo, load_ascii, save_binary,
	load_binary, save_hdf5, load_hdf5): Cleanup, check empty matrix,
	and save/load N-d arrays.
 
2004-02-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (execute_startup_files): Don't find current directory
	for absolute name of local_rc until after executing home_rc.

2004-02-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (input_event_hook): Return type is now int.  Return 0.

	* file-io.cc (do_stream_open): Don't call ::error if stream can't
	be created.  Don't call ::fopen if arch is invalid.  Set error
	state for stream if fopen fails.
	* oct-stream.h (octave_stream::error (const char *)): New function.
	(octave_stream::error (const std::string&)): Now public.

2004-02-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (Fftell): Return long integer instead of streamoff_array.
	(do_stream_open): Create octave_stdiostream instead of octave_fstream.

	* oct-fstrm.cc (octave_fstream::seek, octave_fstream::tell):
	Always fail.  Signatures now match C library functionsb.
	* oct-iostrm.cc (octave_base_iostream::seek,
	octave_base_iostream::tell): Likewise.
	* oct-strstrm.cc (octave_base_strstream::seek,
	octave_base_strstream::tell): Likewise.

	* oct-stream.cc (octave_stream::seek, octave_stream::tell):
	Signatures now match C-library functions.

	* oct-stdstrm.cc (octave_stdiostream::seek, octave_stdiostream::tell):
	Call io_c_file_ptr_stream::seek and tell.  Signatures now match
	C-library functions.

	* c-file-ptr-stream.h (c_file_ptr_buf::seek, c_file_ptr_buf::tell): 
	New functions.
	(i_c_file_ptr_stream::seek, i_c_file_ptr_stream::tell): Likewise.
	(o_c_file_ptr_stream::seek, o_c_file_ptr_stream::tell): Likewise.
	(io_c_file_ptr_stream::seek, io_c_file_ptr_stream::tell): Likewise.

2004-02-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.55.
	(OCTAVE_API_VERSION): Now api-v6.

	* sighandlers.cc (sigfpe_handler, sigpipe_handler):
	Don't increment	octave_interrupt_state if it is less than 0.
	(sigint_handler): If octave_interrupt_state is less than zero,
	reset it.

	* pt-except.cc (do_catch_code): Call OCTAVE_QUIT here so the catch
	code won't run if an interrupt is pending.  Don't run catch code
	if octave_interrupt_state is less than zero.

2004-02-20  Per Persson  <persquare@mac.com>

	* Makefile.in (OCT_LINK_DEPS, OCTINTERP_LINK_DEPS):
	Include	$(LIBS) in the list before $(FLIBS).

2004-02-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (octave_print_internal (std::ostream&, const
	Range&, bool, int)): Don't print values beyond the limits of the
	range.

	* sighandlers.cc (sigint_handler): Print message after two
	consecutive interrupts, dump core after three or more.

	* load-save.cc (dump_octave_core): Handle core size limit.
	Rename from save_user_variables.  Change all callers.
	(Fload, dump_octave_core, Fsave): Open HDF5 fils in binary mode.
	(do_save): Extract switch over file types to separate function.

	* load-save.cc (Voctave_core_file_limit): New variable.
	(octave_core_file_limit): New function.
	(symbols_of_load_save): Add DEFVAR for octave_core_file_limit.

	* load-save.cc (Voctave_core_file_name): New variable.
	(octave_core_file_name): New function.
	(symbols_of_load_save): Add DEFVAR for octave_core_file_name.

	* load-save.cc (Voctave_core_file_format):
	Rename from Voctave_core_format.
	(octave_core_file_format): Rename from octave_core_format.
	(symbols_of_load_save): Fix DEFVAR to match.

2004-02-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.cc (Fsizeof): New function.

	* ov.h (octave_value::byte_size): New function.
	* ov-base.h (octave_base_value::byte_size): New function.
	* ov-base-scalar.h (octave_base_scalar::byte_size): New function.
	* ov-bool-mat.h (octave_bool_matrix::byte_size): New function.
	* ov-ch-mat.h (octave_char_matrix::byte_size): New function.
	* ov-cx-mat.h (octave_complex_matrix::byte_size): New function.
	* ov-re-mat.h (octave_matrix::byte_size): New function.
	* ov-range.h (octave_range::byte_size): New function.
	* ov-cell.cc (octave_cell::byte_size): New function.
	* ov-cell.h: Provide decl.
	* ov-struct.cc (octave_struct::byte_size): New function.
	* ov-struct.h: Provide decl.
	* ov-streamoff.h (octave_streamoff::byte_size): New function.
	* ov-list.cc (octave_list::byte_size): New function.
	* ov-list.h: Provide decl.

	* xpow.cc (elem_xpow (const Matrix&, double)):
	Convert both operands to Complex if any element of A is negative.
	(elem_xpow (const NDArray&, double)): Likewise.

2004-02-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (Voctave_core_format): New static_variable.
	(octave_core_format): New function.
	(symbols_of_load_save): Add DEFVAR for octave_core_format.
	(get_save_format): Rename from get_default_save_format.
	Pass name of format as arg.  New optional arg, fallback_format.
	Change all uses.
	(save_user_variables): Use pass Voctave_core_format to
	get_save_format here.  Pass LS_BINARY as fallback_format.

	* sighandlers.cc (my_friendly_exit): New optional arg, save_vars.
	Only call save_user_variables if save_vars is true.
	(sigint_handler): If interactive, offer to abort and save
	workspace after three consecutive interrupts.
	(sigint_handler, sigpipe_handler, sigfpe_handler):
	Increment octave_interrupt_handler instead of setting it to 1.

2004-02-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.54.
	(OCTAVE_API_VERSION): Now api-v5.

	* Makefile.in (DLD_XSRC): Always include fftw_wisdom.cc.

	* DLD-FUNCTIONS/fftw_wisdom.cc:
	Rename from DLD-FUNCTIONS/fft_wisdom.cc.
	(Vfftw_wisdom_prog): Delete extern decl.
	(Ffftw_wisdom): Rename from Ffft_wisdom.
	Use Vfftw_wisdom_prog instead of Vwisdom_prog.
	Always define function.  Signal error if not configured to use FFTW3.

	* defaults.cc (symbols_of_defaults): Rename WISDOM_PROGRAM to be
	FFTW_WISDOM_PROGRAM.
	(Vfftw_wisdom_prog): Rename from Vwisdom_prog.
	(fftw_wisdom_program): Rename from wisdom_program.
	For simplicity, always define FFTW_WISDOM_PROGRAM even when not
	using fftw3.
	(set_default_wisdom_prog): Look for OCTAVE_FFTW_WISDOM_PROGRAM in
	the environment instead of OCTAVE_WISDOM_PROGRAM.
	(set_default_fftw_wisdom_prog): Rename from set_default_wisdom_prog.
	* defaults.h.in (Vfftw_wisdom_prog): Provide extern decl.

2004-02-16 David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/fft.cc: Adapt for Nd arrays, combine with ifft.cc.
	* DLD-FUNCTIONS/ifft.cc: Delete.
	* DLD-FUNCTIONS/fft2.cc: Adapt for Nd arrays, combine with ifft.cc.
	* DLD-FUNCTIONS/ifft2.cc: Delete.
	* DLD-FUNCTIONS/fftn.cc: New function for Nd FFT and inverse FFT.
	* DLD-FUNCTIONS/fft_wisdom.cc: New function to manipulate FFTW 
	wisdom.

	* Makefile.in: Remove ifft.cc and ifft2.cc.  Add fftn.cc and 
	ifftn.cc.  Make building of fft-wisdom.cc conditional on the 
	value of FFTW_LIBS.
	* defaults.cc (Vwisdom_prog): New variable
	(set_default_wisdom_prog, wisdom_prog): New functions.
	(symbols_of_defaults): Add DEFVAR for wisdom_prog.
	
2004-02-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-list.cc (octave_list::subsasgn): Call assign for Cell objects
	here, not the base octave_value::assign.

2004-02-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (yywrap): Don't #undef this symbol.

2004-02-15  Petter Risholm  <risholm@stud.ntnu.no>

	* pt-mat.cc: Make [,] concatenation work for N-d arrays.

2004-02-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (do_cat): Merge with Fcat.

2004-02-15  Petter Risholm  <risholm@stud.ntnu.no>

	* ov-cell.cc (Fstruct2cell): New function.

2004-02-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (OCTINTERP_LINK_DEPS, OCT_LINK_DEPS): Always define.

	* oct-conf.h.in: Add OCTAVE_CONF_DL_LD, OCTAVE_CONF_DL_LDFLAGS,
	and OCTAVE_CONF_MKOCTFILE_DL_LDFLAGS.
	Delete OCTAVE_CONF_MKOCTFILE_SH_LDFLAGS.

	* toplev.cc (octave_config_info): Delete MKOCTFILE_SH_LDFLAGS.
	Add DL_LD, DL_LDFLAGS, and MKOCTFILE_DL_LDFLAGS to the struct.

2004-02-14  Per Persson  <persquare@mac.com>

	* Makefile.in (%.oct): Use DL_LD instead of SH_LD to build .oct files.

2004-02-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-base-scalar.h (octave_base_scalar::squeeze): New function.

2004-02-13  Petter Risholm  <risholm@stud.ntnu.no>

	* data.cc (Fcat): New function.
	* data.cc (do_cat): New function.
	* data.cc (cat_add_dims): New function.

2004-02-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (main_loop): Call octave_parse, not yyparse.
	* octave.cc (octave_main): Increment octave_debug, not yydebug.
	* parse.y (%name-prefix): New directive, set to "octave_".
	* parse.h: Provide declarations for octave_lex and octave_parse
	instead of yylex and yyparse.
	* lex.l (%option prefix): New directive, set to "_octave".
	Define yylval to be octave_lval.
	Move definitions of YY_INPUT, YY_FATAL_ERROR, TOK_RETURN,
	TOK_PUSH_AND_RETURN, BIN_OP_RETURN, XBIN_OP_RETURN here.
	* lex.h: From here.

2004-02-07  Petter Risholm  <risholm@stud.ntnu.no>

	* ov-struct.cc (Fcell2struct): New function.
	(cell2struct_check_args, cell2struct_construct_idx): Likewise.

2004-02-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-scalar.h (octave_scalar::empty_clone):
	Return empty octave_matrix, not an octave_scalar object.
	* ov-complex.h (octave_complex::empty_clone):
	Return empty octave_complex_matrix, not an octave_complex object.

2004-02-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-usr-fcn.h (octave_user_function::function_name): Delete.
	(octave_user_function::fcn_name): Delete unused data member.
	(octave_user_function::stash_function_name): Save name in
	tree_function::my_name instead of fcn_name.
	Change all uses of fcn_name to be my_name instead.

	* pt.h, pt.cc (tree::break_function): Now pointer to
	octave_function rather than octave_user_function object.

	* pt-bp.h (MAYBE_DO_BREAKPOINT): Use name instead of function_name
	to get name from curr_function.
	* pt-pr-code.cc (tree_print_code::visit_octave_user_function_header):
	likewise.
	* debug.cc (Fdbwhere, Fdbtype, ): Likewise
	* error.cc (pr_where): Likewise.
	* variables.cc (Fmlock, Fmunlock, Fmislocked): Likewise.
	(lookup_function, lookup_user_function,	link_to_builtin_or_function):
	Likewise, for curr_parent_function.

	* debug.cc (get_user_function, Fdbwhere):
	Cast curr_function to pointer to octave_user_function.

	* ov-mapper.cc (octave_mapper::do_multi_index_op):
	Save and restore curr_function here.
	* ov-builtin.cc (octave_builtin::do_multi_index_op): Likewise.

	* toplev.h, toplev.cc (curr_function, curr_parent_function): Now
	pointers to octave_function rather than octave_user_function objects.

	* ov-usr-fcn.h (octave_user_function::is_user_function): New function.
	* ov-fcn.h (octave_function::takes_varargs,
	octave_function::octave_va_start, octave_function::octave_va_arg,
	octave_function::octave_all_va_args,
	octave_function::takes_var_return, octave_function::octave_vr_val, 
	octave_function::is_user_function): New virtual functions.

2004-02-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-struct.cc (Fstruct): Use new Octave_map constructor to create
	structures with specified sizes but no keys.

	* ov-struct.cc (Fstruct): New function, from Paul Kienzle
	<pkienzle@users.sf.net> and Petter Risholm  <risholm@stud.ntnu.no>.

	* oct-map.h (Octave_map::Octave_map): Allow dimension to be
	specified for map with no keys.

	* ov-struct.cc (fieldnames): Return 0x1 cell array if no fieldnames.

2004-02-05  Petter Risholm  <risholm@stud.ntnu.no>

	* ov-base-mat.cc (octave_base_matrix<MT>::do_index_op):
	Don't fail if number of indices is greater than 2.

2004-02-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Fsize): Update for N-d objects.

	* ls-mat5.cc (read_mat5_binary_element): Force conversion.

	* ov-base.cc (octave_base_value::char_matrix_value):
	Pass force arg to convert_to_str.

	* data.cc (Freshape): Chop trailing singletons from new dimensions.

2004-02-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* error.cc (defun_usage_message): Only accept one arg, a const
	std::string& object.  Change all uses.  Pass nul-terminated string
	to defun_message_1.
	(defun_usage_message_1): New function, equivalent to old
	defun_usage_message.

	* ov-base.cc (nint_value): Use fix, not NINT.
	(INT_CONV_METHOD): Likewise, use fix instead of just casting.

	* data.cc (make_diag): Use int_value instead of nint_value to
	extract k for Matlab compatibility.
	(Flinspace): Likewise, for npoints.
	(fill_matrix): Likewise, for extracting dims.
	(Fsize): Likewise, for extracting dim argument.  Require int value.
	* utils.cc (get_dimensions): Likewise.  Use fix, not NINT.

2004-02-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* error.cc (verror, error_1): New arg, os.  Use this instead
	of always printing to std:cerr.  Change all callers.

	* error.cc (defun_usage_message): New function.
	* error.h: Provide decl.
	* defun.cc (print_usage): Use it to display error message.

	* error.cc (verror): New arg, save_last_error.  Change all callers.
	(usage): Set error_state after calling verror.

	* oct-map.cc (Octave_map::assign (const std::string, const Cell&)):
	Set dimensions to RHS dimensions, not 1x1.

2004-01-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool.cc, ov-cx-mat.cc, ov-re-mat.cc, ov-str-mat.cc:
	Include <vector>.
	* file-io.cc, ls-hdf5.cc, ls-mat4.cc, ls-mat5.cc, ls-oct-binary.cc:
	Include <vector>, not <memory> for new defn of OCTAVE_LOCAL_BUFFER.
	* load-save.cc, ls-mat-ascii.cc, ls-oct-ascii.cc
	No need to include <memory> now.

	* DLD-FUNCTIONS/eig.cc (Feig): Use new optional arg for EIG to
	avoid computing eigenvectors if not requested.
	Based on a patch from David Bateman  <dbateman@free.fr>.

2004-01-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (all_strings): Always compute total required length
	of retval.

2004-01-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.53.
	(OCTAVE_API_VERSION): Now api-v4.

	* error.cc (pr_where): New arg, print_code with default value true.
	(warning): Call pr_where with second arg false.

	* file-io.cc (Ffrewind): Only return value if nargout > 0.
	(Ffprintf): Likewise.
	(Fprintf): Likewise.

	* file-io.cc (Ffrewind): Return 0 for success, -1 for failure.
	Make docs match.

	* Makefile.in (distclean): Remove DOCSTRINGS.
	(maintainer-clean): Remove $(OPT_HANDLERS).

2004-01-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (octave_cell::subsref): Make '{' case N-d aware.

	* ov-scalar.cc (streamoff_array_value): New function.
	* ov-scalar.h: Provide decl.

	* OPERATORS/op-streamoff.cc (STREAMOFF_COMP_OP): New maco.
	Use it to define streamoff by matrix, streamoff by scalar, scalar
	by streamoff, and matrix by streamoff comparison operators.
	(install_streamoff_ops): Install them.

	* Cell.h (Cell::operator ()): Delete (we inherit them from Array<T>).
	(maybe_resize, elem_internal): Delete unused functions.

	* ls-mat5.cc (write_mat5_cell_array): Cell& arg is now const.

2004-01-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (is_valid_function): If warn, also print error
	message if arg is not a string.

	* ov-usr-fcn.cc (Fnargin, Fnargout): New functions.

	* octave.cc (intern_argv): Lookup __nargin__ instead of nargin.
	* ov-usr-fcn.cc (octave_user_function::install_automatic_vars):
	Lookup __nargin__ and __nargout__ instead of nargin and nargout.

	* variables.h (at_top_level): Now extern.
	(lookup_user_function): New function.
	* variables.cc: Provide decls.

	* ov.h, ov.cc (octave_value::user_function_value):
	New virtual function.
	* ov-base.h, ov-base.cc (octave_base_value::user_function_value):
	Provide default version.
	* ov-usr-fcn.h (octave_user_function::user_function_value):
	New function.

	* ov-re-mat.cc (complex_array_value): New function.
	* ov-re-mat.h: Provide decl.

	* ov-cell.cc (Fiscellstr): Don't return value on usage error.

	* error.cc: (symbols_of_error): Delete DEFVAR for error_text.
	Define __error_text__ and error_text as aliases for lasterr.

	* error.cc (bind_global_error_variable,	clear_global_error_variable):
	Delete.
	* variables.h: Delete decls.

	* parse.y (Feval, Fevalin): Don't call bind_global_error_variable.
	Don't add clear_global_error_variable to the unwind_protect stack.
	Increment buffer_error_messages before evaluating "eval" code,
	decrement it before evaluating "catch" code.	

	* pt-except.cc (do_catch_code): Don't call bind_global_error_variable.
	Don't add clear_global_error_variable to the unwind_protect stack.
	Decrement buffer_error_messages here.
	(tree_try_catch_command::eval): Increment buffer_error_messages here.

	* error.cc, error.h (buffer_error_messages): Now an int.

2004-01-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (octave_config_info): Add float_format,
	words_big_endian, and words_little_endian to the struct.

2004-01-14  David Bateman  <dbateman@free.fr>
	
	* ov-cell.cc (octave_cell::load_hdf5): Fix for HDF5 version 1.6
	handling of number of objects in a group.
	* ov-struct.cc (octave_struct::load_hdf5): Likewise.
	* ov-list.cc (octave_list::load_hdf5): Likewise.
	* ls-hdf5.cc (read_hdf5_data): Likewise.

2004-01-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ls-hdf5.h: Surround contents with #if defined (HAVE_HDF5).

2004-01-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (convert_to_valid_int, get_size):
	Use lo_ieee_is_NaN_or_NA instead of xisnan.
	(octave_base_stream::do_printf): Correct special case check for
	NA, NaN, Inf, or out of range integers.

	* dirfns.cc (Fglob): Always return list of files as a cell array.
	(Freaddir): Likewise.

	* dirfns.cc (Fls): If nargout > 0, return ls output.

2004-01-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (Fload): Assume -force by default.

	* oct-stream.cc (octave_base_stream::write):
	Allow fwrite (fid, "some string") to work.

	* toplev.cc (Fcomputer): Delete.
	(octave_config_info): Add unix and windows fields to the struct.

2004-01-06  David Bateman  <dbateman@free.fr>

	* ls-hdf5.cc: Fix handle of old versus new format files.

 	* ls-oct-binary.cc: Split the load/save functionality into the types
 	themselves.  Backward compatibility maintained.
	
 	* ov-struct.cc (save_binary, load_binary):
 	* ov-str-mat.cc (save_binary, load_binary):
 	* ov-scalar.cc (save_binary, load_binary):
 	* ov-re-mat.cc (save_binary, load_binary):
 	* ov-range.cc (save_binary, load_binary):
 	* ov-list.cc (save_binary, load_binary):
 	* ov-cx-mat.cc (save_binary, load_binary):
 	* ov-complex.cc (save_binary, load_binary):
 	* ov-cell.cc (save_binary, load_binary):
 	* ov-bool.cc (save_binary, load_binary):
 	* ov-bool-mat.cc (save_binary, load_binary):
	New functions for loading and saving structures in octave binary
	format.

 	* ov-str-mat.h (save_binary, load_binary):
 	* ov-scalar.h (save_binary, load_binary):
 	* ov-re-mat.h (save_binary, load_binary):
 	* ov-range.h (save_binary, load_binary):
 	* ov-list.h (save_binary, load_binary):
 	* ov-cx-mat.h (save_binary, load_binary):
 	* ov-complex.h (save_binary, load_binary):
 	* ov-cell.h (save_binary, load_binary):
 	* ov-bool.h (save_binary, load_binary):
 	* ov-bool-mat.h (save_binary, load_binary):
 	* ov-struct.h (save_binary, load_binary):
	Provide decls.

 	* ov.h (save_binary, load_binary): New virtual functions.

 	* ov-base.cc (save_binary, load_binary): New functions, for fallbacks
 	with error message.
 	* ov-base.h: Provide decls.

 	* load-save.cc: Remove "-import" flag and make it the default.
 	* load-save.h: Likewise.

 	* ls-oct-ascii.cc: Split the load/save functionality into the types
 	themselves. Save "string" variables with the name "string" rather than
 	string array. Backward compatiability maintained in ov-cs-mat.cc.
 	Include new version of extract_keyword that halts if the next value is
 	invalid rather that searching for the next valid value.
 
 	* ls-oct-ascii.h: Extract_keyword header updated.
	Include definition of OCT_RBV and CELL_ELT_TAG, since they are now
	used elsewhere.
 
 	* ls-hdf5.cc: Split load/save functionality into the types themselves.
 	The hdf5 format is changed so that each object is a group with a
 	dataset "type" being a string with the octave_value type and the
 	dataset or group "value" containing the value of the data, struct, etc.
 	This allows extensibility. Backward compatibility is maintained. The
 	"import" flag is now assumed to always be true and has been removed.
  
 	* ov-struct.cc (save_ascii, load_ascii, save_hdf5, load_hdf5): 
 	* ov-str-mat.cc (save_ascii, load_ascii, save_hdf5, load_hdf5): 
 	* ov-scalar.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
	* ov-re-mat.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-range.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-list.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-cx-mat.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-complex.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-cell.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-bool.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-bool-mat.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	New functions for loading and saving structures in octave ascii
	and hdf5 formatted files.

 	* ov-struct.h (save_ascii, load_ascii, save_hdf5, load_hdf5): 
 	* ov-str-mat.h (save_ascii, load_ascii, save_hdf5, load_hdf5): 
 	* ov-scalar.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-re-mat.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-range.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-list.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-cx-mat.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-complex.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-cell.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-bool.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	* ov-bool-mat.h (save_ascii, load_ascii, save_hdf5, load_hdf5):
 	Provide decls.
 
 	* ov-typeinfo.cc (octave_value_typeinfo::do_lookup_type): Include
 	make_unique so that the stored type value is not used for all loaded
 	variables.
 
 	* ov.h: (save_ascii, load_ascii, save_hdf5 and load_hdf5):
	New virtual functions.
 	
  	* ov-base.cc (save_ascii, load_ascii, save_hdf5, load_hdf5):
	New functions, for fallbacks with error message.
	* ov-base.h: Provide decls.

2003-12-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cx-mat.cc (octave_complex_matrix::assign): RHS arg is N-d.
	* ov-cx-mat.h: Fix decl.

	* ops.h (DEFNDASSIGNOP_FN): New macro.
	* OPERATORS/op-bm-b.cc, OPERATORS/op-bm-bm.cc,
	OPERATORS/op-cm-cm.cc, OPERATORS/op-cm-cs.cc,
	OPERATORS/op-cm-m.cc, OPERATORS/op-cm-s.cc, OPERATORS/op-m-m.cc,
	OPERATORS/op-m-s.cc: Use it instead of DEFASSIGNOP_FN.

2003-12-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* xpow.cc (xpow (double, double)): Avoid apparent GNU libm bug.

2003-12-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* symtab.cc (symbol_record::print_symbol_info_line):
	Also check is_static to see if a symbol can be cleared.

2003-12-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (is_keyword): Also allow varargout_kw if
	lexer_flags.looking_at_return_list is false provided that we are
	defining a function and we haven't seen the function name yet.
	* parse.y (return_list): Don't require [] around varargout.

	* DLD-FUNCTIONS/find.cc (DO_FIND_OP): Delete macro.
	(find_to_fortran_idx): Delete.  Move guts of function to
	find_nonzero_elem_idx.
	(find_nonzero_elem_idx): Now a template function.  Handle overall
	array index here too.  Make it N-d aware.

	* pt-pr-code.cc (tree_print_code::visit_complex_for_command, 
	tree_print_code::visit_octave_user_function_header,
	tree_print_code::visit_matrix, tree_print_code::visit_cell,
	tree_print_code::visit_multi_assignment): Keep track of nearest
	[, {, or ( nesting level.
	(tree_print_code::visit_index_expression): Likewise.  Check nesting
	level to decide how to print index.
	(tree_print_code::reset): Also reset nesting level stack.

	* pt-pr-code.h (tree_print_code::nesting): New data member.
	(tree_print_code::tree_print_code): Initialize it.

	* ov-base-mat.h (octave_base_matrix::octave_base_matrix (const MT&)):
	If arg has no dimensions, resize to be 0x0.

2003-12-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-map.cc (Octave_map::assign): Use Octave_map::contents member
	function instead of operator [].
	* ov-struct.cc (octave_struct::subsasgn): Likewise.
	* DLD-FUNCTIONS/time.cc (extract_tm): Likewise.

	* DLD-FUNCTIONS/time.cc	(mk_tm_map): Use Octave_map::assign member
	function instead of operator [].
	* DLD-FUNCTIONS/getrusage.cc (Fgetrusage): Likewise.
	* DLD-FUNCTIONS/getgrent.cc (mk_gr_map): Likewise.
	* DLD-FUNCTIONS/getpwent.cc (mk_pw_map): Likewise.
	* load-save.cc (do_load): Likewise.
	* ls-hdf5.cc (hdf5_read_next_data): Likewise.
	* ls-mat5.cc (read_mat5_binary_element): Likewise.
	* oct-map.cc (Octave_map::reshape): Likewise.
	* oct-map.cc (Octave_map::index): Likewise.
	* ov-fcn-handle.cc (Ffunctions): Likewise.
	* pt-idx.cc (make_arg_struct): Likewise.
	* sighandlers.cc (make_sig_struct): Likewise.
	* syscalls.cc (mk_stat_map): Likewise.
	* toplev.cc (Foctave_config_info): Likewise.

	* ls-hdf5.cc (add_hdf5_data): Temporary Octave_map is now const.
	* ls-mat5.cc (save_mat5_binary_element): Likewise.

	* oct-map.cc (Octave_map::assign (const std::string&, const
	octave_value&)): New function.
	* oct-map.h: Provide decl.
	(Octave_map::contents (const std::string&)): New function.
	(Octave_map::operator [] (const std::string&) const): Delete.
	(Octave_map::operator [] (const std::string&)): Delete.

2003-12-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-cell.cc: Allow transpose for cell arrays.
	* OPERATORS/op-m-m.cc, OPERATORS/op-cm-cm.cc,
	OPERATORS/op-bm-bm.cc, OPERATORS/op-streamoff.cc,
	OPERATORS/op-str-str.cc: Improve error message for attempt to
	transpose N-d object.

2003-11-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-arg-list.cc (F__end__): Handle N-d objects.

2003-11-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-b-bm.cc: New file.

	* OPERATORS/op-bm-b.cc (op_el_and, op_el_or): Define and install.
	* OPERATORS/op-bm-bm.cc (op_el_and, op_el_or, assign): Likewise.

	* ov-str-mat.cc (CHAR_MATRIX_CONV): New macro.
	* ov-str-mat.h (octave_char_matrix_str::double_value,
	octave_char_matrix_str::matrix_value,
	octave_char_matrix_str::array_value,
	octave_char_matrix_str::complex_value,
	octave_char_matrix_str::complex_matrix_value,
	(octave_char_matrix_str::complex_array_value): Use it.

	* ov-bool-mat.cc (default_numeric_conversion_function):
	Convert to NDArray, not Matrix.
	* ov-str-mat.cc (default_numeric_conversion_function): Likewise.

	* ov-range.h (octave_range::array_value): New function.
	(octave_range::complex_array_value): Likewise.
	* ov-ch-mat.h (charNDArray::array_value): New function.
	(charNDArray::complex_array_value): Likewise.
	* ov-str-mat.h (octave_char_matrix_str::array_value): Likewise.
	(octave_char_matrix_str::complex_value): Likewise.
	(octave_char_matrix_str::complex_matrix_value): Likewise.
	(octave_char_matrix_str::complex_array_value): Likewise.

	* mappers.cc (acosh, log, log10, sqrt):
	Use octave_Inf instead of DBL_MAX for range limit.

2003-11-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.52.
	(OCTAVE_API_VERSION): Now api-v3.

	* DLD-FUNCTIONS/rand.cc (do_rand): Pass function name from arg
	list in calls to error.

	* ov-cs-list.cc, ov-cs-list.h (octave_cs_list::octave_cs_list):
	Explicitly initialize base class in constructors.

	* ov.h (octave_value::all_strings): Pass second arg to rep function.

	* ov.h (octave_value::string_value): Pass arg to rep function.

	* DLD-FUNCTIONS/dasrt.cc (dasrt_user_f): Delete unused arg names.
	* DLD-FUNCTIONS/rand.cc (Frand, Frandn): Likewise.
	* ls-hdf5.h (hdf5_streambase::hdf5_streambase): Likewise.
	* ls-hdf5.cc (read_hdf5_data): Likewise.
	* ls-utils.cc (get_save_type): Likewise.
	* parse.y (Fassignin): Likewise.
	* utils.cc (empty_arg): Likewise.
	* ov-usr-fcn.h (octave_user_function::subsref): Likewise.
	* ov-base-mat.h (octave_base_matrix::subsref): Likewise.
	* ov-mapper.h (octave_mapper::subsref): Likewise.
	* ov-builtin.h (octave_builtin::subsref): Likewise.
	* ov-complex.cc (octave_complex::complex_array_value): Likewise.
	* ov-cell.h (octave_cell::subsref): Likewise.
	* ov-base-scalar.h (octave_base_scalar::subsref): Likewise.
	* ov-struct.h (octave_struct::subsref): Likewise.
	* ov-range.h (octave_range::subsref): Likewise.
	* ov-list.h (octave_list::subsref): Likewise.
	* ov-base.cc (octave_base_value::print_info): Likewise.
	* pt-check.cc (tree_checker::visit_subplot_axes): Likewise.
	* pr-output.cc (octave_print_internal (std::ostream&, double, bool),
	octave_print_internal (std::ostream&, const Complex&, bool),
	octave_print_internal (std::ostream&, const ArrayN<std::string>&,
	bool, int): Likewise.
	* oct-stream.cc (octave_scan<> (std::istream&, const
	scanf_format_elt&, char*): Likewise
	* TEMPLATE-INST/Array-tc.cc (resize_fill_value<octave_value>):
	Likewise.
	* pt-bp.cc (tree_breakpoint::visit_octave_user_function,
	tree_breakpoint::visit_octave_user_function_header,
	tree_breakpoint::visit_octave_user_function_trailer,
	tree_breakpoint::visit_plot_limits,
	tree_breakpoint::visit_plot_range,
	tree_breakpoint::visit_subplot,
	tree_breakpoint::visit_subplot_axes,
	tree_breakpoint::visit_subplot_list,
	tree_breakpoint::visit_subplot_style,
	tree_breakpoint::visit_subplot_using): Likewise.
	* ov.cc (octave_value::column_vector_value,
	(octave_value::complex_column_vector_value,
	(octave_value::row_vector_value,
	octave_value::complex_row_vector_value,
	octave_value::do_non_const_unary_op): Likewise.

	* load-save.cc: Only include ls-hdf5.h if HAVE_HDF5 is defined.
	From Melqart <melqart@free.fr>.

	* pr-output.h (octave_fcn_handle::print_as_scalar): Delete.

	* pr-output.cc (octave_print_internal): New version for
	ArrayN<std::string> objects.
	* pr-output.h: Provide decl.
	* ov-fcn-handle.cc (octave_fcn_handle::print_raw): Use it.

	* OPERATORS/op-fcn-handle.cc: New file.
	* Makefile.in (OP_XSRC): Add it to the list.

	* ov-fcn-handle.h, ov-fcn-handle.cc (octave_fcn_handle):
	Now an array of function handle objects.

	* ov.h, ov.cc (octave_value::octave_value (const fcn_handle_array&),
	(octave_value::octave_value (octave_function *f, const std::string&)):
	New constructors.
	(octave_value::octave_value (const octave_fcn_handle&)): Delete.

	* ov-base-mat.cc (octave_base_matrix<T>::print_as_scalar):
	Check dims instead of rows and columns.

	* ov.h (octave_value::is_function_handle): New function.
	* ov-base.h (octave_base_value::is_function_handle): New function.

2003-11-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool-mat.h (octave_bool_matrix::array_value): Construct return
	value directly from matrix data member, not matrix.matrix_value ().

	* ov-re-mat.h (octave_matrix::index_vector): Construct idx_vector
	from NDArray, not Matrix.

	* ov-bool-mat.h (octave_bool_matrix::index_vector): Construct
	idx_vector from boolNDArray, not boolMatrix.

	* ov.cc (install_types): Also register dld function type.

	* OPERATORS/op-streamoff.cc: Install increment and decrement operators.
	* ov-streamoff.h (octave_streamoff::increment,
	octave_streamoff::decrement): New functions.

	* ov-streamoff.h, ov-streamoff.cc: Move streamoff_array class to
	liboctave/so-array.h and liboctave/so-array.cc.

	* oct-stream.cc (octave_stream::seek): Extract std::streamoff from
	tc_offset instead of int.

	* ov-re-mat.cc (octave_matrix::double_value): Use numel, not length.

	* ov-re-mat.cc (octave_matrix::streamoff_array_value): New function.
	* ov-re-mat.h: Provide decl.

	* ov-scalar.cc (octave_scalar::streamoff_value): New function.
	* ov-scalar.h: Provide decl.

	* ov.cc (octave_value::streamoff_array_value,
	octave_value::streamoff_value): New functions.
	* ov.h: Provide decls.

	* ov-base.cc (octave_base_value::streamoff_array_value,
	octave_base_value::streamoff_value): New functions.
	* ov-base.h: Provide decls.

	* ov-usr-fcn.cc (install_automatic_vars): Don't do anything unless
	sym_tab is defined.

	* ov-streamoff.h, ov-streamoff.cc, OPERATORS/op-streamoff.cc:
	New files.

	* ov-cell.h (octave_value_cell::is_matrix_type): New function.

	* ov-mapper.h (octave_mapper::octave_mapper): No copying.
	* ov-fcn.h (octave_function::octave_function): Likewise.
	* ov-usr-fcn.h (octave_function::octave_function): Likewise.
	* ov-builtin.h (octave_builtin::octave_builtin): Likewise.
	* ov-dld-fcn.h (octave_dld_function::octave_dld_function): Likewise.

2003-11-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-mapper.h (octave_mapper::octave_mapper): Make public.
	Provide copy constructor and assignment operator.
	* ov-fcn.h (octave_function::octave_function): Likewise.
	* ov-builtin.h (octave_builtin::octave_builtin): Likewise.
	* ov-dld-fcn.h (octave_dld_function::octave_dld_function): Likewise.

	* ov-typeinfo.cc (octave_value_typeinfo::register_type,
	octave_value_typeinfo::do_register_type): New arg, val.
	Save it	in vals array.
	(octave_value_typeinfo::lookup_type,
	octave_value_typeinfo::do_lookup_type): New functions.
	* ov-typeinfo.h: Provide decl.
	(octave_value_typeinfo::vals): New data member.
	(octave_value_typeinfo::octave_value_typeinfo): Initialize it.

	* ov.h (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Pass

	* ov.h (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Define register_type
	here.  Also pass an empty object of the to-be-registered type to
	register_type.
	(DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Declare register_type
	here, but don't define it.

2003-11-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-fcn-handle.h (octave_fcn_handle::octave_fcn_handle (void)):
	New constructor.

	* ov-usr-fcn.h (octave_user_function::octave_user_function):
	Delete decl for private constructor.

	* ov-str-mat.cc (octave_char_matrix_str::matrix_value):
	Conversion to matrix is an error unless explicitly forced.

	* ov-str-mat.cc (octave_char_matrix_str::double_value): New function.
	* ov-str-mat.h: Provide decl.

	* ov-file.cc (print_raw): Use parens around ?: conditional used on
	RHS of << output operator.

	* c-file-ptr-stream.cc (c_file_ptr_buf::seekoff,
	c_file_ptr_buf::seekpos): Can't use fseek here, so just fail (by
	returning -1) until we have a better solution.

	* oct-stream.cc (octave_stream::tell): Return std::streamoff, not long.
	* oct-iostrm.cc (octave_base_iostream::tell): Likewise.
	* oct-stdstrm.cc (octave_stdiostream::tell): Likewise.
	* oct-strstrm.cc (octave_base_strstream::tell): Likewise.
	* oct-stream.h, oct-iostrm.h, oct-stdstrm.h, oct-strstrm.h:
	Fix decls to match.

2003-11-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ls-mat-ascii.cc (get_lines_and_columns): Delete second arg in
	call to istream::seekg.

	* ov-mapper.cc (MAPPER_LOOP_2, any_element_less_than,
	any_element_greater_than, octave_mapper::apply):
	Handle N-d arrays.

2003-11-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ls-mat5.cc (read_mat5_binary_element, save_mat5_binary_element):
	Handle N-d arrays.

	* lex.l (next_token_is_index_op): New function.
	(handle_close_bracket): Use it.

	* ls-hdf5.cc, ls-mat-ascii.cc, ls-mat4.cc, ls-mat5.cc,
	ls-oct-ascii.cc, ls-oct-binary.cc, ls-utils.cc, ls-hdf5.h,
	ls-mat-ascii.h, ls-mat4.h, ls-mat5.h, ls-oct-ascii.h,
	ls-oct-binary.h, ls-utils.h: New files, extracted from load-save.cc.
	* Makefile.in: Add them to the appropriate lists.

2003-11-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (octave_print_internal): Don't indent rows for
	plus_format.  Use pr_plus_format for Range type with plus_format.
	(plus_format_chars): New static variable.
	(set_format_style): Allow optional arg for plus format to set it.
	(pr_plus_format): Use it.

	* ov-bool.h (octave_bool::array_value,
	octave_bool::complex_array_value): New functions.

	* ov-base-mat.cc (octave_base_matrix<MT>::do_index_op):
	Ensure correct number of indices for Array indexing code.

2003-11-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/qz.cc (qz): Use x.data()+offset instead of &a(i,j).
	First and third args for dlag2 are const.

	* DLD-FUNCTIONS/sort.cc (Fsort): Use const qualifier as appropriate.

	* DLD-FUNCTIONS/balance.cc (balance): Use data() instead of
	fortran_vec where appropriate in call to dggbak.

	* DLD-FUNCTIONS/dasrt.cc (dasrt_user_j): Simplify inserting x and
	xdot in arg vector.
	(dasrt_user_f): Likewise.
	(dasrt_user_cf): Likewise.
	* DLD-FUNCTIONS/dassl.cc (dassl_user_function): Likewise.
	(dassl_user_jacobian): Likewise.
	* DLD-FUNCTIONS/lsode.cc (lsode_user_function): Likewise.
	(lsode_user_jacobian): Likewise.
	* DLD-FUNCTIONS/daspk.cc (daspk_user_function): Likewise.
	(daspk_user_jacobian): Likewise.

2003-11-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-range.h (octave_range::reshape): New function.

2003-11-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.51.
	(OCTAVE_API_VERSION): Now api-v2.

	* version.h (OCTAVE_BUGS_STATEMENT): Also tell people to look at
	http://www.octave.org/bugs.html.

	* oct-map.cc (Octave_map::assign): Use resize, not resize and fill.
	* ov-typeinfo.cc (octave_value_typeinfo::do_register_type): Likewise.

	* Cell.cc (Cell::Cell): Pass dim_vector to resize instead of two ints.

2003-11-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (stamp-liboctave-prereq): New target.
	($(DEF_FILES), $(MAKEDEPS)): Depend on it.	
	(distclean): Remove it.

	* parse.y (cancel_obj_idx): New rule.
	(postfix_expr, prefix_expr): Use begin_obj_idx after every
	postfix_expr on RHS.  Use cancel_obj_idx as soon as possible for
	cases where we are not working on an index expression.

	* lex.l (maybe_unput_comma, handle_close_bracket):
	Don't insert comma if we are looking at an object index and the
	closest nesting level is a brace.

	* parse.y (postfix_expr): Use begin_obj_idx between postfix_expr
	and the indexing delimiter rather than after it.

	* lex.h (lexical_feedback::braceflag): New member variable.
	* lex.l	(lexical_feedback::init): Initialize braceflag.
	(\{{S}*): Increment lexer_flags.braceflag, not
	lexer_flags.bracketflag.
	(handle_close_bracket): Handle lexer_flags.braceflag and
	lexer_flags.bracketflag separately based on bracket_type.
	Delete unnecesary yyinput/yyunput.

	* lex.l (next_token_is_postfix_unary_op): Also recognize ++ and --.

	* ov-typeinfo.cc (octave_value_typeinfo::register_type,
	octave_value_typeinfo::do_register_type):
	New arg, c_name for class name.
	* ov-base.cc, ov-bool-mat.cc, ov-bool.cc, ov-builtin.cc,
	ov-cell.cc, ov-ch-mat.cc, ov-colon.cc, ov-complex.cc,
	ov-cs-list.cc, ov-cx-mat.cc, ov-dld-fcn.cc, ov-fcn-handle.cc,
	ov-file.cc, ov-list.cc, ov-mapper.cc, ov-range.cc, ov-re-mat.cc,
	ov-scalar.cc, ov-str-mat.cc, ov-struct.cc, ov-usr-fcn.cc,
	ov-va-args.cc: Pass class name to DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA.
	* ov.h (octave_value::class_name): New virtual function.
	(DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Define c_name, for class name.
	Pass c_name to octave_value_typeinfo::register_type.
	(DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Declare static member
	c_name for class name.  Provide class_name member function.

	* ov-typeinfo.cc (Fclass): New function.

2003-11-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (Fisvarname): Pass correct name to make_argv.

	* ov-cell.cc (Fiscellstr): New function.

	* ov-file.h (octave_file::all, octave_file::any,
	octave_file::dims, octave_file::is_real_type,
	octave_file::ist_real_scalar): New functions.

	* lex.l (bracket_brace_paren_nesting_level::is_bracket_or_brace):
	New function.
	(handle_close_bracket): New arg, bracket_type.  Change all uses.
	First arg is now bool.
	(<MATRIX_START>{SNLCMT}*\}{S}*): New pattern.
	(maybe_unput_comma): Handle brace nesting level the same as brackets.
	(handle_close_brace): Likewise.
	(<MATRIX_START>{S}+): Likewise.
	(<MATRIX_START>{S}*{COMMENT}{SNLCMT}*): Likewise.
	(<MATRIX_START>{S}*{NL}{SNLCMT}*): Likewise.
	({NL}): Likewise.
	({CCHAR}): Likewise.
	(")"): Likewise.
	(\{{S}*): Handle the same as \[{S}*.
	("}"): Handle the same as \].

	* Makefile.in (stamp-prereq): Add oct-gperf.h, parse.cc, and
	lex.cc to the list.

2003-11-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (print_as_scalar): New function.
	* ov-cell.h: Provide decl.

	* ov-cell.cc (octave_cell::print_name_tag): Delete.
	* ov-cell.h: Delete decl.

	* ov-base-mat.cc (octave_base_matrix::print_name_tag): Delete.
	* ov-base-mat.h: Delete decl.

	* ov-base.cc (octave_base_value::print_name_tag):
	Use print_as_scalar here. 
	* ov.h (octave_base_value::print_as_scalar): New virtual function.
	* ov-base.h (octave_base_value::print_as_scalar):
	New default implementation.
	* ov-base-mat.h (octave_base_matrix::pirnt_as_scalar):
	Don't declare as virtual here.

	* ov-struct.cc (octave_struct::print_raw): If only printing keys,
	also print dimensions of fields and overall array.

	* sysdep.cc (Fnative_float_format): New function.

	* input.cc (generate_possible_completions): Also append all
	possible filename completions here.

2003-11-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc: Explicitly instantiate octave_scan functions.

	* TEMPLATE-INST/Array-c.cc, TEMPLATE-INST/Array-os.cc,
	TEMPLATE-INST/Array-sym.cc, ov-typeinfo.cc:
	Use new INSTANTIATE_ARRAY macro.

	* data.cc (do_permute): New function.
	(Fpermute, Fipermute): Use it.

	* ov-base.cc (octave_base_value::permute): New function.
	* ov-base.h: Provide decl.

	* ov.h (octave_value::ipermute): New function.

2003-11-11  Petter Risholm  <risholm@stud.ntnu.no>

	* data.cc (Fpermute, Fipermute): New functions.
	* ov.h (octave_value::permute): New function.
	* ov-base-mat.h (octave_base_matrix::permute): New function.

2003-11-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-obj.h (octave_value_list): Internal representation is now
	std::vector instead of Array.

	* ov-list.h, ov-list.cc: Internal representation is now Cell, not
	octave_value_list.
	(Flist): Print one-time warning.

	* ov.cc (octave_value::octave_value (const octave_value_list&, bool)):
	Cope with octave_cs_list not being derived from octave_list.

	* ov-cs-list.cc (octave_cs_list): Handle conversion of Cell array
	to octave_value_list here.

	* ov-cs-list.h (class octave_cs_list): Derive from
	octave_base_value, not octave_list.

	* ov-cs-list.h, ov-cs-list.cc: Remove commented-out code.

	* TEMPLATE-INST/Array-tc.cc (resize_fill_value): Use modern
	specialization syntax.

	* ov-cell.cc (octave_cell::print_raw): Use dim_vector::str.

	* Cell.cc, Cell.h, debug.cc, file-io.cc, load-save.cc,
	oct-fstrm.cc, oct-iostrm.cc, oct-iostrm.h, oct-map.cc, oct-map.h,
	oct-prcstrm.cc, oct-stdstrm.h, oct-stream.cc, oct-strstrm.h,
	octave.cc, ov-base.h, ov-cell.cc, ov.cc, ov.h, pt-cell.h,
	pt-mat.cc, pt-mat.h, pt-plot.cc, pt-stmt.cc, variables.cc,
	DLD-FUNCTIONS/rand.cc: Avoid -Wshadow warnings.

2003-11-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_base_value::is_bool_matrix): New virtual function.
	* ov-base.h (octave_base_value::is_bool_matrix): New function.

2003-10-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.cc (octave_value::length): If any dim is zero, return 0.

	* ov-cell.cc (octave_cell::subsref): When indexing with '{', quit
	early if an error occurs in do_index_op.

	* ov.cc (octave_value::next_subsref): Don't do anything if
	error_state is true.

	* cutils.c (octave_usleep) [HAVE_SELECT]: Introduce new local
	scope for declaration of delay.
	[HAVE_POLL]: Likewise, for delay and pfd.

	* ov-base.cc (octave_base_value::bool_array_value):
	Function takes no args.
	* ov-base.h: Likewise, for decl.
	* ov-bool-mat.h (boolNDArray::bool_array_value): Likewise.

	* ov-fcn.cc, ov-fcn.h (octave_value::clone,
	octave_value::empty_clone): Return type is octave_value*, not
	octave_function*.

2003-10-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-str-mat.h (octave_char_matrix_str::reshape): New function.
	Force result to be a string.

2003-10-29  Petter Risholm  <risholm@stud.ntnu.no>

	* data.cc (DATA_REDUCTION): Work on NDArray and ComplexNDArray
	objects instead of Matrix and ComplexMatrix objects.

2003-10-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-bool-mat.h (octave_bool_matrix::NDArray,
	octave_bool_matrix::ComplexNDArray): New functions.

	* ov-complex.cc (octave_complex::array_value,
	octave_complex::complex_array_value): New functions.
	* ov-complex.h: Provide decls.

	* ov-scalar.cc (octave_scalar::array_value,
	octave_scalar::complex_array_value): New functions.
	* ov-scalar.h: Provide decls.

	* oct-map.cc (Octave_map::reshape): New function.
	* oct-map.h: Provide decl.

	* ov-struct.h (octave_struct::reshape): New function.

	* Cell.h (Cell:Cell (const Array<octave_value>&): New constructor.

	* data.cc (Freshape): New function.
	* ov.h (octave_value::reshape): New function.
	* ov-base-mat.h (octave_base_matrix::reshape): New function.
	* ov-base.cc (octave_base_value::reshape): New function.
	* ov-base.h: Provide decl.

	* DLD-FUNCTIONS/balance.cc: lscale and rscale args for dggbak are
	const.  Use data() instead of fortran_vec where possible.
	* DLD-FUNCTIONS/qz.cc: Likewise.

	* data.cc (fill_matrix): Remove trailing singletons before
	allocating the result matrix.

	* input.cc (get_user_input): Don't forget about the diary here.

2003-10-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-list.h (octave_list::nelem): Delete.
	(octave_list::dims): New function.
	* ov-range.h (octave_list::dims): New function.
	* ov-struct.h (octave_struct::dims): New function.
	* ov-base-scalar.h (octave_base_scalar::dims): New function.

	* ov.h (octave_value::rows): No longer virtual.
	* ov.cc (octave_value::rows): Provide common implementation.
	* ov-base.h (octave_base_value::rows): Delete.
	* ov-base-mat.h (octave_base_matrix<T>::rows): Delete.
	* ov-base-scalar.h (octave_base_scalar<T>::rows): Delete.
	* ov-struct.h (octave_struct::rows): Delete.
	* ov-range.h (octave_range::rows): Delete.

	* ov.h (octave_value::columns): No longer virtual.
	* ov.cc (octave_value::columns): Provide common implementation.
	* ov-base.h (octave_base_value::columns): Delete.
	* ov-base-mat.h (octave_base_matrix<T>::columns): Delete.
	* ov-base-scalar.h (octave_base_scalar<T>::columns): Delete.
	* ov-struct.h (octave_struct::columns): Delete.
	* ov-range.h (octave_range::columns): Delete.

	* ov.h (octave_value::numel): No longer virtual.
	* ov.cc (octave_value::numel): Provide common implementation.
	* ov-base.h (octave_base_value::numel): Delete.
	* ov-base-mat.h (octave_base_matrix<T>::numel): Delete.
	* ov-base-scalar.h (octave_base_scalar<T>::numel): Delete.
	* ov-struct.h (octave_struct::numel): Delete.

	* ov-cs-list.h (octave_cs_list::dims): New function.
	(octave_cs_list::length): Delete.

	* ov.h (octave_value::ndims): No longer virtual.
	* ov.cc (octave_value::ndims): Provide common implementation.
	* ov-base.h (octave_base_value::ndims): Delete.
	* ov-base-mat.h (octave_base_matrix<T>::ndims): Delete.
	* ov-base-scalar.h (octave_base_scalar<T>::ndims): Delete.
	* ov-struct.h (octave_struct::ndims): Delete.

	* ov-cell.cc (Fcell): Make it work for N-d cells.

	* Cell.h (Cell::Cell  (const dim_vector&, const octave_value&)):
	New constructor.

	* ov.h (octave_value::length): No longer virtual.
	* ov.cc (octave_value::length): Provide common implementation.
	* ov-base.h (octave_base_value::length): Delete.
	* ov-base-mat.h (octave_base_matrix<T>::length): Delete.
	* ov-base-scalar.h (octave_base_scalar<T>::length): Delete.
	* ov-struct.h (octave_struct::length): Delete.
	* ov-cs-list.h (octave_cs_list::length): Delete.
	* ov-list.h (octave_list::length): Delete.
	* ov-range.h (octave_range::length): Delete.

	* load-save.cc (save_mat5_binary_element): Use numel instead of
	array_length.
	* ov-struct.cc (octave_struct::print_raw): Likewise.
	* pt-loop.cc (tree_complex_for_command::eval): Likewise.
	* oct-map.cc (Octave_map::numel): New function.
	* oct-map.h: Provide decl.

	* oct-map.cc, oct-map.h (Octave_map::array_length): Delete.
	(common_size): New static function.
	(Octave_map::assign): Make resizing work for N-d cell objects.

	* oct-map.cc (Octave_map::dims): New function.
	* oct-map.h: Provide decl.

	* pr-output.cc 	(print_empty_nd_array): New static function.
	(PRINT_ND_ARRAY): Use it.

	* ov.h (octave_value::is_empty): No longer virtual.  Return value
	based on numel.
	* data.cc (Fisempty): Use it.
	(Fnumel): New function.

	* ov.h (octave_value::numel): New function.
	* ov-base.h (octave_base_value::numel): Likewise.
	* ov-base-mat.h (octave_base_matrix<T>::numel): Likewise.
	* ov-base-scalar.h  (octave_base_scalar<T>::numel): Likewise.

2003-10-27  Petter Risholm  <risholm@stud.ntnu.no>

	* ov-base-mat.cc (octave_base_matrix<MT>::is_true):
	Only work for 2-dimensional objects.
	* data.cc (ANY_ALL (FCN)): Allow dim to take values large than 2.

	* ov.h (octave_value::ndims): New function.
	* ov-base.h (octave_base_value::ndims): Likewise.
	* ov-base-scalar.h (octave_base_scalar<T>::ndims): Likewise.
	* ov-base-mat.cc (octave_base_matrix<MT>::ndims): New function.
	(octave_base_matrix<MT>::length): Move here from ov-base-mat.h.
	Make it work for N-d arrays.
	* ov-base-mat.h (octave_base_matrix<MT>::ndims): Provide decl.
	* data.cc (Fndims): New built-in function.

2003-10-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/balance.cc, DLD-FUNCTIONS/qz.cc:
	Use new F77 arg macros in declarations of external Fortran
	subroutines and for calling them.

	* ops.h (DEFNDUNOP_OP, DEFNDUNOP_FN): New arg e, to name value
	extractor function prefix.
	* OPERATORS/op-bm-bm.cc, OPERATORS/op-cm-cm.cc,	OPERATORS/op-m-m.cc:
	Change all uses.

	* ov-cx-mat.h (octave_complex_matrix::complex_array_value,
	octave_char_matrix::char_array_value,
	octave_bool_matrix::bool_array_value): Rename from array_value.
	* OPERATORS/op-bm-bm.cc, OPERATORS/op-cm-cm.cc,
	OPERATORS/op-cm-cs.cc, OPERATORS/op-cm-m.cc,
	OPERATORS/op-cm-s.cc, OPERATORS/op-cs-cm.cc,
	OPERATORS/op-m-cm.cc, OPERATORS/op-m-m.cc,
	OPERATORS/op-s-cm.cc: Use complex_array, char_array, and
	bool_array as appropriate (instead of just array).

	* ov-base.cc (octave_base_value::array_value,
	octave_base_value::bool_array_value,
	octave_base_value::complex_array_value,
	octave_base_value::char_array_value): Provide default implementations.
	* ov-base.h: Provide decls.

	* ov.h (octave_value::array_value, octave_value::bool_array_value,
	octave_value::complex_array_value, octave_value::char_array_value):
	New virtual functions.

2003-10-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-idx.cc (make_subs_cell): Pass dim_vector object to resize.

	* ov-typeinfo.cc (octave_value_typeinfo::do_register_type):
	Use resize_and_fill for types.

	* oct-obj.h (octave_value_list::maybe_resize): Use resize_and_fill.
	(octave_value_list::resize (int, const octave_value&)): Likewise.

	* oct-map.cc (Octave_map::assign): Use resize_and_fill as needed.

	* Cell.h (Cell (void)): Default size is now 0x0.

2003-10-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-cm-m.cc, OPERATORS/op-cm-s.cc,
	OPERATORS/op-cs-m.cc, OPERATORS/op-m-cm.cc, OPERATORS/op-s-cm.cc:
	Include headers for N-d operators.

2003-10-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ops.h (DEFNDUNOP_OP, DEFNDUNOP_FN, DEFNDBINOP_OP,
	DEFNDBINOP_FN): New N-dimensional macros.
	* OPERATORS/op-bm-bm.cc, OPERATORS/op-cm-cm.cc,
	OPERATORS/op-cm-cs.cc, OPERATORS/op-cm-m.cc,
	OPERATORS/op-cm-s.cc, OPERATORS/op-cs-cm.cc,
	OPERATORS/op-cs-m.cc, OPERATORS/op-m-cm.cc,
	OPERATORS/op-m-cs.cc, OPERATORS/op-m-m.cc,
	OPERATORS/op-m-s.cc, OPERATORS/op-s-cm.cc,
	OPERATORS/op-s-m.cc: Use N-dimensional macros as appropriate.

	* DLD-FUNCTIONS/rand.cc (do_rand, Frand, Frandn):
	Handle N-dimensions.

	* xpow.cc (elem_xpow (double, const NDArray&),
	elem_xpow (double, const ComplexNDArray&),
	elem_xpow (const NDArray&, double),
	elem_xpow (const NDArray&, const NDArray&),
	elem_xpow (const NDArray&, const Complex&),
	elem_xpow (const NDArray&, const ComplexNDArray&),
	elem_xpow (const Complex&, const NDArray&),
	elem_xpow (const Complex&, const ComplexNDArray&),
	elem_xpow (const ComplexNDArray&, double),
	elem_xpow (const ComplexNDArray&, const NDArray&),
	elem_xpow (const ComplexNDArray&, const Complex&),
	elem_xpow (const ComplexNDArray&, const ComplexNDArray&):
	New functions.
	* xpow.h: Provide decls.

	* xdiv.cc (x_el_div (double, const NDArray&),
	x_el_div (double, const ComplexNDArray&),
	x_el_div (const Complex, const NDArray&),
	x_el_div (const Complex, const ComplexNDArray&)): New functions.
	* xdiv.h: Provide decls.

	* ov-bool-mat.h (boolNDArray::array_value): New function.
	* ov-ch-mat.h (charNDArray::array_value): New function.
	* ov-cx-mat.h (ComplexNDArray::array_value): New function.
	* ov-re-mat.h (NDArray::array_value): New function.
	(NDArray::double_nd_array_value): Delete.

2003-10-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (text_getc): New static function.
	(gobble_leading_white_space): Use it to simplify EOL processing.

2003-10-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc (fopen_mode_to_ios_mode): Ignore "t" in mode string.

	* strfns.cc (Fischar): rename from Fisstr.

2003-10-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (PRINT_ND_ARRAY): New macro.
	(octave_print_internal): Use it.

2003-10-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.cc	(octave_value::octave_value (const ArrayN<octave_value>&,
	bool)):	New constructor.
	* ov.h: Provide decl.

	* ov.h (octave_value::squeeze): New virtual function.
	* ov-base.cc (squeeze): Provide default implementation.
	* ov-base-mat.h (octave_base_matrix::squeeze): New function.
	* data.cc (Fsqueeze): New function.

2003-10-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (make_valid_identifier): Return new string.
	Arg is now string, not char *.
	(ident_is_all_digits): New function.
	(hdf5_read_next_data): Use it.

2003-10-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* input.cc (input_event_hook): Clear the event hook if hook_fcn
	does not name a valid function.

2003-10-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* mappers.cc (xabs): New function.
	(install_mapper_functions): Use it instead of abs for complex args
	in Octave's abs mapper function.

2003-09-27  Joseph P. Skudlarek  <Jskud@Jskud.com>
 
 	* DLD-FUNCTIONS/minmax.cc (min, max): Use @deftypefn machinery,
 	doc missing semantics, and add more examples to texinfo strings.

2003-09-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (read_mat5_binary_element): Return early if the
	miMATRIX element has length zero.

2003-09-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (octave_cell::subsasgn): Also attempt empty
	conversion after extracting single element from cell array to
	allow things like x{i}.elt = rhs to work.

2003-09-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value::dim_vector): New function.

	* ov.h, ov.cc (octave_value::octave_value (const Cell&)):
	New arg, is_cs_list.
	(octave_value::octave_value (const NDArray&)):
	Create octave_matrix object, not octave_double_nd_array object.
	(octave_value::octave_value (const ComplexNDArray&),
	octave_value::octave_value (const boolNDArray&),
	octave_value (const charNDArray&, bool)): New constructors.

	* ov.h, ov.cc (octave_value::nil_rep): New function.
	(octave_value::octave_value (void)): Use it to initialize empty
	octave_value objects.

	* ov-list.h, ov-list.cc (octave_list::octave_list (const Cell&)):
	New constructor.
	* ov-cs-list.h (octave_cs_list::octave_cs_list (const Cell&)):
	Likewise.

	* data.cc (Fsize): Handle N-d objects.

	* pr-output.cc (octave_print_internal): New versions for NDArray,
	ComplexNDArray, boolNDArray, and charNDArray objects.
	* pr-output.h: Provide decls.

	* ov-re-nd-array.h, ov-re-nd-array.cc: Delete.

	* Cell.h, Cell.cc, 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, ov-str-mat.h,
	ov-str-mat.cc: Now N-dimensional.

	* oct-map.h, oct-map.cc: Now based on Cell ojects instead of
	octave_value_list objects.  Change all uses.

	* TEMPLATE-INST/Array-tc.cc: Also instantiate ArrayN objects.
	Don't instantiate assign funcitons for Array2 objects.

2003-09-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc (symbols_of_pt_plot): Default for automatic replot is
	now true.

	* pr-output.cc (Fformat): Doc fix.
	(current_output_max_field_width, current_output_precision):
	New functions.
	(float_format::float_format (int, int, int)): Use them to provide
	default values for field width and precision.
	(print_g): New static variable.
	(set_real_format, set_real_matrix_format, set_complex_format) 
	(set_complex_matrix_format, set_range_format): Handle print_g.
	(pr_float, pr_complex): Don't scale if using print_g.
	(set_format_style): Accept new "g" and "G" modifiers for short and
	long formats and set print_g.
	Set default precision and width for short to 5, 10.
	Set default precision and width for long to 15, 20.

2003-09-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-m-cs.cc (complex_matrix_conv): Delete function.
	(install_m_cs_ops): Don't install complex_matrix_conv here.

	* OPERATORS/op-s-cs.cc (complex_matrix_conv): Delete function.
	(install_s_cs_ops): Don't install complex_matrix_conv here.

	* OPERATORS/op-s-s.cc (matrix_conv): Delete function.
	(install_s_s_ops): Don't install matrix_conv here.

	* OPERATORS/op-cs-s.cc (complex_matrix_conv): Delete function.
	(install_cs_s_ops): Don't install complex_matrix_conv here.

	* OPERATORS/op-cs-m.cc (complex_matrix_conv): Delete function.
	(install_cs_m_ops): Don't install complex_matrix_conv here.

	* OPERATORS/op-cs-cs.cc (complex_matrix_conv): Delete function.
	(install_cs_cs_ops): Don't install complex_matrix_conv here.

	* ov-typeinfo.cc (do_register_unary_op,
	do_register_non_const_unary_op, do_register_binary_op,
	do_register_assign_op, do_register_assignany_op,
	do_register_pref_assign_conv, do_register_widening_op):
	Print warning if installing a duplicate function.

2003-09-10  Petter Risholm  <risholm@stud.ntnu.no>

	* data.cc, ov-base.cc, ov-base.h, ov.h, ov.cc, ov-re-mat.h,
	ov-scalar.h, ov-re-nd-array.h, ov-re-nd-array.cc: Use NDArray, not
	ArrayN<double>.

2003-09-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (octave_value::double_nd_array_value): New function.
	(octave_value::is_real_nd_array): New function.

	* ov-base.cc (octave_base_value::double_nd_array_value): New function.
	* ov-base.h: Provide decl.
	(octave_base_value::is_real_nd_array): New function.

2003-09-09  Petter Risholm  <risholm@stud.ntnu.no>

	* ov-re-mat.h (octave_matrix::double_nd_array_value): New function.
	* ov-scalar.h (octave_scalar::double_nd_array_value): New function.

	* ov-re-nd-array.cc (octave_double_nd_array::assign): New function.
	(octave_double_nd_array::try_narrowing_conversion): Likewise.
	(octave_double_nd_array::valid_as_scalar_index): Likewise.
	(octave_double_nd_array::double_value): Likewise.
	(octave_double_nd_array::matrix_value): Likewise.
	(octave_double_nd_array::complex_value): Likewise.
	(octave_double_nd_array::convert_slice_to_matrix): Likewise.
	* ov-re-nd-array.h: Provide decls.
	(octave_double_nd_array::is_real_nd_array): New function.
	(octave_double_nd_array::double_nd_array_value): New function.
	(octave_double_nd_array::double_nd_array_value): New function.

	* OPERATORS/op-m-nd.cc, OPERATORS/op-nd-m.cc,
	OPERATORS/op-nd-nd.cc, OPERATORS/op-nd-s.cc, OPERATORS/op-s-nd.cc:
	New files.
	* Makefile.in (OP_XSRC): Add them to the list.

2003-09-09  David Bateman  <dbateman@free.fr>

	* OPERATORS/op-cs-s.cc (DEFBINOP): First arg is complex, second is
	double.

2003-09-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-cell.cc (tree_cell::rvalue): Don't assume that the number of
	elements in a tree_argument_list is the same as the number of
	objects it contains (cs-list objects expand to more than one).

	* pt-mat.cc (tm_row_const::tm_row_const_rep::do_init_element):
	New function, extracted from tm_row_const::tm_row_const_rep::init.
	(tm_row_const::tm_row_const_rep::init): Use it.
	Also handle cs-list objects.

	* ov-cs-list.cc (octave_cs_list::print_raw): New function.
	* ov-cs-list.h (octave_cs_list::print_raw): Provide decl.
	* ov-list.h (octave_list::lst): Now protected instead of private.

2003-09-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc (subplot_style::columns_ok): Allow boxes style to
	have 2 columns as well.

2003-08-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dirfns.cc (Fls): Check EAGAIN to avoid losing output.
	* toplev.cc (run_command_and_return_output): Likewise.

2003-08-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* OPERATORS/op-str-s.cc, OPERATORS/op-str-m.cc: New files.
	* Makefile.in (OP_XSRC): Add them to the list.

2003-08-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.cc (maybe_add_or_del_packages): Use source_file instead
	of parse_and_execute.
	* parse.y (source_file): New function.
	(Fsource): Use it.
	* parse.h (source_file): Provide decl.

2003-08-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (octave_vsnprintf): Copy va_list to avoid using more
	than once.

2003-08-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (octave_vsnprintf): Call octave_raw_vsnprintf instead
	of calling vsnprintf directly.
	(octave_vsnprintf) [HAVE_C99_VSNPRINTF]: Declare nchars to be size_t.

2003-08-06  Heine Kolltveit  <kolltvei@idi.ntnu.no>

	* utils.cc (check_dimensions(Array<int>&, char),
	get_dimensions(octave_value&, char, Array<int>&): New functions.
	* utils.h (check_dimensions (Array<int>&, char), 
	get_dimensions (octave_value&, char, Array<int>&)): Provide decl.

	* data.cc (fill_matrix): Also create N-d arrays.
 	(Fones, Fzeros): Handle more than 2 args to create N-d arrays.

2003-07-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (make_diag): Use std::abs instead of our own ABS macro.

	* utils.cc (identity_matrix): Move here from data.cc.
	(identity_matrix): Use std::min instead of our own MIN macro.

	* utils.h (identity_matrix): Provide decl.

	* DLD-FUNCTIONS/svd.cc (Fsvd): Improve handling of empty matrix arg.

	* ov.cc (octave_value(const ArrayN<Complex>&)): New constructor.
	* ov.h (octave_value(const ArrayN<Complex>&)): Provide decl.

2003-07-30  Heine Kolltveit  <kolltvei@idi.ntnu.no>

	* ov.cc (octave_value(const ArrayN<double>&)): New constructor.
	* ov.h (octave_value(const ArrayN<double>&)): Provide decl.

2003-07-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h (Vpropagate_empty_matrices): Delete decl.
	* ov.cc: (Vpropagate_empty_matrices): Delete.
	(propagate_empty_matrices): Delete.
	(symbols_of_ov): Delete DEFVAR for propagate_empty_matrices.

	* utils.cc (empty_arg): Behave as though propagate_empty_matrices
	is always 1.
	* ov-range.cc (octave_range::is_true): Likewise.
	* ov-base-mat.cc (octave_base_matrix<MT>::is_true): Likewise.

	* octave.cc (maximum_braindamage): Also set
	warn_matlab_incompatible to TRUE.

	* lex.l (Vwhitespace_in_literal_matrix): Delete.
	(whitespace_in_literal_matrix): Delete.
	(symbols_of_lex): Delete DEFVAR for whitespace_in_literal_matrix.
	(<MATRIX_START>{S}*\,{S}*, <MATRIX_START>{S}+,
	(<MATRIX_START>{S}*{COMMENT}{SNLCMT}*,
	<MATRIX_START>{S}*{NL}{SNLCMT}*, maybe_unput_comma): Behave as though
	old Vwhitespace_in_literal_matrix varaible is always 1.

	* octave.cc (maximum_braindamage): Don't set
	whitespace_in_literal_matrix.

2003-07-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (install-lib): Use $(INSTALL), not
	$(INSTALL_PROGRAM) for $(SHLLIB) files.

2003-07-29  Paul Kienzle  <pkienzle@users.sf.net>

	* Makefile.in: Don't need special system.c for Cygwin.
	* oct-procbuf.cc: Use popen rather than fork/exec for Windows.

2003-07-28  Paul Kienzle  <pkienzle@users.sf.net>

	* sysdep.cc (CYGWIN_init): Convert TMPDIR to system agnostic path.

2003-07-25  Paul Kienzle  <pkienzle@users.sf.net>

	* help.cc (try_info, display_help_text):
	Protect spaces in filenames with quotes.
	* oct-hist.cc (do_edit_history): Likewise.
	* pt-plot.cc (open_plot_stream): Likewise.

2003-07-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (get_size, octave_base_stream::error,
	octave_base_stream::do_gets, octave_base_stream::getl,
	octave_base_stream::gets, octave_base_stream::do_scanf,
	octave_base_stream::scanf, octave_base_stream::do_oscanf,
	octave_base_stream::oscanf, do_printf_conv,
	octave_base_stream::do_printf, octave_base_stream::printf,
	octave_base_stream::puts, octave_base_stream::invalid_operation,
	octave_stream::getl, octave_stream::gets, octave_stream::scanf,
	octave_stream::oscanf, octave_stream::printf, octave_stream::puts,
	octave_stream::invalid_stream_error): Handle name of calling
	function for error messages as a std::string object.  Change all
	callers.

	* file-io.cc (Fprintf, Fputs): New functions, so we can get
	function prefixes on error messages right.
	(Ffgetl, Ffgets, Ffprintf, Fsprintf, Fputs, Ffscanf, Fsscanf):
	Pass name of calling function to octave_stream method.

	* oct-stream.h (octave_base_stream::do_char_scanf,
	octave_base_stream::do_real_scanf): Delete unused decls.

	* load-save.cc (read_mat5_binary_element): Correctly read struct
	arrays.

	* pt-misc.cc (tree_parameter_list::initialize_undefined_elements):
	New args, warnfor and nargout.  Change all callers.
	(symbols_of_pt_misc): New function.
	(warn_undefined_return_values): New function.

	* octave.cc (maximum_braindamage): Don't set
	define_all_return_values.

	* ov-usr-fcn.cc (ov_user_function::do_multi_index_op): Always
	intiialize undefined elements in ret_list to [].
	Never return last computed value.
	(Vreturn_last_computed_value, Vdefine_all_return_values): Delete.
	(return_last_computed_value, define_all_return_values): Delete.
	(symbols_of_ov_usr_fcn): Delete DEFVARs for
	return_last_computed_value, define_all_return_values, and
	default_return_value.

2003-07-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-misc.cc (tree_parameter_list::convert_to_const_vector):
	Don't skip undefined elements.

2003-07-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (maximum_braindamage): Don't set
	default_global_variable_value or initialize_global_variables.

	* pt-decl.cc (Vinitialize_global_variables): Delete.
	(initialize_global_variables): Delete.
	(symbols_of_pt_decl): Delete.
	(tree_global_command::do_init): Default initial value is now
	always [].

2003-07-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (maximum_braindamage): Don't set default_eval_print_flag.

	* parse.y (Vdefault_eval_print_flag): Delete: 
	(default_eval_print_flag): Delete.
	(symbols_of_parse): Delete DEFVAR for default_eval_print_flag.
	(Feval, Fevalin): Return empty octave_value_list and turn printing
	on in eval_string if nargout is zero.

	* ov-list.cc (octave_list::assign): Check
	Vwarn_resize_on_range_error, not Vresize_on_range_error.

	* ov.cc (Vwarn_resize_on_range_error): New variable.
	(warn_resize_on_range_error): New function.
	(symbols_of_ov): Add DEFVAR for warn_resize_on_range_error.

	* ov.cc (Vresize_on_range_error): Delete.
	(resize_on_range_error): Delete.
	(symbols_of_ov): Delete DEFVAR for resize_on_range_error.

	* pt-mat.cc (Vwarn_empty_list_elements): New variable.
	(warn_empty_list_elements): New function.
	(symbols_of_pt_mat): Add DEFVAR for warn_empty_list_elements.
	(tm_row_const::tm_row_const_rep::init, tm_const::init): 
	Check Vwarn_empty_list_elements, not Vempty_list_elements_ok.

	* pt-mat.cc (Vempty_list_elements_ok): Delete.
	(empty_list_elements_ok): Delete.
	(symbols_of_pt_mat): Delete DEFVAR for empty_list_elements_ok.

2003-07-11  Russell Standish  <R.Standish@unsw.edu.au>

	* TEMPLATE-INST/Array-tc.cc (resize_fill_value): Provide
	specialization.

2003-07-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* strfns.cc (Fchar): Force string conversions without warnings.

	* ov.h (octave_value::convert_to_str, octave_value::all_strings,
	octave_value::string_value, octave_value:convert_to_str_internal):
	New arg, force.  Fix all derived classes to match.

	* strfns.cc (Fchar): Temporarily reset Vwarn_num_to_str to avoid
	warnings.

	* ov.cc (convert_to_str): New arg, force.

	* octave.cc (maximum_braindamage): Don't set treat_neg_dim_as_zero.

	* utils.cc (Vwarn_neg_dim_as_zero): New variable.
	(warn_neg_dim_as_zero): New function.
	(symbols_of_utils): Add DEFVAR for warn_neg_dim_as_zero.
	(check_dimensions): Check Vwarn_neg_dim_as_zero, not
	Vtreat_neg_dim_as_zero.

	* utils.cc (Vtreat_neg_dim_as_zero): Delete.
	(treat_neg_dim_as_zero): Delete.
	(symbols_of_utils): Delete DEFVAR for treat_neg_dim_as_zero.

2003-07-09  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (maximum_braindamage): Don't set prefer_column_vectors.

	* ov.cc (Vprefer_column_vectors): Delete.
	(prefer_column_vectors): Delete.
	(symbols_of_ov): Delete DEFVAR for prefer_column_vectors.

	* octave.cc (maximum_braindamage): Don't set do_fortran_indexing.

	* ov-re-mat.cc (octave_matrix::double_value,
	octave_matrix::complex_value): Use Vwarn_fortran_indexing, not
	Vdo_fortran_indexing.
	* ov-range.cc (octave_range::double_value,
	octave_range::complex_value): Likewise.
	* ov-cx-mat.cc (octave_complex_matrix::double_value,
	octave_complex_matrix::complex_value): Likewise.
	* ov-ch-mat.cc (octave_char_matrix::double_value,
	octave_char_matrix::complex_value): Likewise.
	* ov-bool-mat.cc (octave_bool_matrix::double_value,
	octave_bool_matrix::complex_value): Likewise.

	* ov.cc (Vwarn_fortran_indexing): New variable.
	(warn_fortran_indexing): New function.
	(symbols_of_ov): Add DEFVAR for warn_fortran_indexing.
	(octave_value::vector_value, octave_value::int_vector_value,
	(octave_value::complex_vector_value): Check
	Vwarn_fortran_indexing, not Vdo_fortran_indexing.

	* ov.h (Vwarn_fortran_indexing): Provide decl.

	* ov.cc (Vdo_fortran_indexing): Delete unused variable.
	(do_fortran_indexing): Delete unused function.
	(symbols_of_ov): Delete DEFVAR for do_fortran_indexing.
	* ov.h (Vdo_fortran_indexing): Delete decl.

	* ov.cc (octave_value::convert_to_str): Call convert_to_str_internal.
	(octave_value::convert_to_str_internal): New virtual function.
	Rename all derived class convert_to_str functions to match.	

	* variables.cc (generate_struct_completions): Set
	discard_warning_messages, not Vwarning_option.  Also protect
	warning_state.

	* parse.y (fold): Temporarily discard warning messages.
	Also protect warning_state.

	* error.cc (discard_warning_messages): New variable.
	(vwarning): Use it.
	(warning): Don't print backtrace if discard_warning_messages is true.

	* ov.cc (octave_value::convert_to_str):
	Handle type conversion warning here.

	* gripes.cc (gripe_implicit_conversion):
	New function accepting std::string args.

	* octave.cc (maximum_braindamage): Don't set
	implicit_num_to_str_ok or implicit_str_to_num_ok.

	* ov-base.cc (octave_base_value::char_matrix_value):
	Vimplicit_num_to_str_ok no longer exists.
	(octave_base_value::all_strings): Likewise.
	(octave_base_value::string_value): Likewise.

	* ov-str-mat.cc (octave_char_matrix_str::matrix_value): Warn based
	on Vwarn_str_to_num instead of Vimplicit_str_to_num_ok.

	* ov.cc (Vwarn_num_to_str, Vwarn_str_to_num): New variables.
	(warn_num_to_str, warn_str_to_num): New functions.
	(symbols_of_ov): Add DEFVARs for warn_num_to_str and Vwarn_str_to_num.
	* ov.h (Vwarn_num_to_str, Vwarn_str_to_num): Provide decl.

	* ov.cc (Vimplicit_num_to_str_ok, Vimplicit_str_to_num_ok):
	Delete unused variables.
	(implicit_num_to_str_ok, implicit_str_to_num_ok):
	Delete unused functions.
	(symbols_of_ov): Delete DEFVARs for implicit_num_to_str_ok and
	implicit_str_to_num_ok.
	* ov.h (Vimplicit_num_to_str_ok, Vimplicit_str_to_num_ok):
	Delete decls.

	* pt-mat.cc (tree_matrix::rvalue): Vimplicit_num_to_str_ok no
	longer exists.

	* ov.cc (Vwarn_imag_to_real): New variable.
	(warn_imag_to_real): New function.
	(symbols_of_ov): Add DEFVAR for warn_imag_to_real.
	* ov.h (Vwarn_imag_to_real): Provide decl.

	* ov.cc (Vok_to_lose_imaginary_part): Delete unused variable.
	(ok_to_lose_imaginary_part): Delete unused function.
	(symbols_of_ov): Delete DEFVAR for ok_to_lose_imaginary_part.
	* ov.h (Vok_to_lose_imaginary_part): Delete decl.

	* ov-complex.cc (octave_complex::double_value): Warn based on
	Vwarn_imag_to_real instead of Vok_to_lose_imaginary_part.
	(octave_complex::matrix_value): Likewise.
	* ov-cx-mat.cc (octave_complex_matrix::double_value): Likewise.
	(octave_complex_matrix::matrix_value): Likewise.

	* octave.cc (maximum_braindamage): Don't set ok_to_lose_imaginary_part.

2003-07-08  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (sig_hup_or_term_handler): New function.
	(install_signal_handlers): Install sig_hup_or_term_handler for
	SIGHUP and SIGTERM instead of generic_sig_handler.
	(Vsighup_dumps_octave_core, Vsigterm_dumps_octave_core):
	New static variables.
	(sighup_dumps_octave_core, sigterm_dumps_octave_core):
	New static functions.
	(symbols_of_sighandlers): Add DEFVARs for sighup_dumps_octave_core
	and sigterm_dumps_octave_core.

	* defaults.h.in (OCTAVE_LOCALAPIFCNFILEDIR, OCTAVE_LOCALAPIOCTFILEDIR):
	Subsitute new variables. 

	* defun.cc (check_version): Compare version to OCTAVE_API_VERSION,
	not OCTAVE_VERSION.  Mismatch is now fatal.
	* defun-int.h (DEFINE_FUN_INSTALLER_FUN3): Pass
	OCTAVE_API_VERSION instead of OCTAVE_VERSION to check_version.
	* version.h (OCTAVE_API_VERSION): New macro, initial value api-v1.

	* defaults.cc (Vdefault_exec_path): New static variable.
	(set_default_default_exec_path): New function.
	(install_defaults): Call it.
	(exec_path): Use it.
	(default_exec_path): New function.
	(symbols_of_defaults): Add DEFVAR for DEFAULT_EXEC_PATH.

2003-07-07  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* defaults.h.in (OCTAVE_LOCALSTARTUPFILEDIR, OCTAVE_STARTUPFILEDIR):
	Set values directly instead of constructing them.

2003-06-28  Arno J. Klaassen  <arno@heho.snv.jussieu.fr>

	* toplev.cc (octave_config_info): Key for OCTAVE_CONF_DEFS should
	be DEFS, not UGLY_DEFS.

2003-06-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.50.

2003-06-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (symbol_exist): Distinguish between user and dld
	functions loaded in memory.

2003-06-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-mat.cc (tm_row_const::init, tm_const::init): Don't ignore
	empty matrices that have one non-zero dimension.

	* variables.cc (symbol_exist): Use dir_path::find_first_of to
	search for .oct and .m files.

	* ov-base.cc (octave_base_value::subsasgn): Also allow type
	conversion for empty numeric objects with more than one index.
	* ov-base-mat.cc (octave_base_matrix<T>::subsasgn): Likewise.

2003-06-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (do_who): New arg, return_list.  If return_list is
	true, return values in cell or struct arrays instead of printing.
	(Fwho, Fwhos): If nargout is 1, ask do_who to return lists of values.
	* oct-map.h (Octave_map (const std::string&, const octave_value_list&):
	New constructor.

2003-06-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-idx.cc (tree_index_expression::rvalue):
	Correctly handle index expressions like x(end).f(end).
	(tree_index_expression::lvalue): Likewise.

	* pt-arg-list.cc (F__end__): Add nr, nc info to error messages.

2003-06-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pr-output.cc (set_format (const Matrix&, int&, double&)): Ask
	any_element_is_negative to return true for negative zero as well.
	(set_format (const ComplexMatrix&, int&, int&, double&)): Likewise.

2003-06-16  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (main_loop): Set octave_interrupt_hook and
	octave_bad_alloc_hook to unwind_protect::run_all here.
	(recover_from_exception): Don't call unwind_protect::run_all here.

	* pt-except.cc (do_catch_code): Return immediately if
	octave_interrupt_immediately is nonzero.

	* sighandlers.cc (sigint_handler): If jumping, don't set
	octave_interrupt_state.

2003-06-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (get_save_type): Avoid all save types other than
	LS_DOUBLE to avoid apparent Matlab bugs.

2003-06-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (frob_function, parse_fcn_file): Handle help_buf as
	stack of strings.
	* lex.l ({CCHAR}): Handle help_buf as stack of strings.
	Store text returned from grab_help_text in help_buf here.
	(reset_parser): Handle help_buf as stack of strings.
	(prep_for_nested_function): Push empty string onto help_buf stack.
	(grab_help_text): Return help text instead of storing it in help_buf.
	* parse.h, parse.y (help_buf): Now a stack of strings.

	* oct-stream.cc (printf_value_cache::string_value): Don't attempt
	to extract values when none are available.

2003-06-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-plot.cc (Vgnuplot_has_multiplot): Delete variable.
	(gnuplot_has_multiplot): Delete.
	(symbols_of_pt_plot): Delete DEFVAR for gnuplot_has_multiplot.

2003-05-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.49.

2003-05-28  Teemu Ikonen  <tpikonen@pcu.helsinki.fi>

	* load-save.cc (save_mat5_binary_element, save_mat_binary_data):
	Allow saving of non-7-bit ASCII characters.

2003-05-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (FINISH_CHARACTER_CONVERSION,
	octave_base_stream::do_scanf): Do a better job of resizing for
	charachter conversions.

2003-05-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cx-mat.cc (octave_complex_matrix::assign): Move definition here.
	* ov-cx-mat.h: From here.

2003-05-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-range.cc (octave_range::try_narrowing_conversion): Convert to
	[](1x0) instead of [](0x0) if range is empty.

2003-05-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in: Handle DESTDIR.

2003-05-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l: Use yyunput (X, yytext) instead of unput (X) for newer
	versions of flex.

2003-05-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.48.

2003-05-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.47.

2003-05-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (save_ascii_data): If saving a range with
	non-integer base, limit, or increment, save as matrix instead.
	(get_save_type): Avoid unsigned types.

2003-04-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (initialize_pathsearch): Don't save old and set new
	value of TEXMFDBS.

	* toplev.cc (restore_texmfdbs_envvar): Delete function.
	(Fsystem): Don't set and reset TEXMFDBS.

	* toplev.h, toplev.cc (octave_original_texmfdbs): Delete variable.

2003-04-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/getpwent.cc (Fgetpwnam): Delete unnecessary
	c_str() method.

2003-04-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* file-io.cc: Include <memory> for auto_ptr.

2003-04-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (octave_config_info): Delete LIBKPATHSEA from struct.
	* oct-conf.h.in: Don't substitute LIBKPATHSEA.

	* octave.cc (octave_main): Don't call dir_path::set_program_name.

2003-04-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-file.h (octave_file::empty_clone): Create an octave_scalar
	object, not an octave_file object.

2003-04-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (hdf5_read_next_data): Extract list before
	assigning to map element.
	(add_hdf5_data): Prefix faked names with '_' so they are valid
	identifiers.

2003-03-24  Mats Jansson  <mats.e.jansson@home.se>

	* syscalls.cc (Fkill): Fixed docstring typo.

2003-03-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.h (octave_cell::is_matrix_type): New function.

2003-03-09  Duncan Temple Lang  <duncan@research.bell-labs.com>

	* octave.cc (octave_main): New arg, embedded.
	* octave.h: Fix decl.
	* main.c: Pass 0 for embedded here.

2003-03-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* version.h (OCTAVE_VERSION): Now 2.1.46.

	* oct-conf.h.in: Undo previous change.

	* load-save.cc (read_mat5_binary_element): Handle structure arrays.
	(save_mat5_binary_element): Likewise.

2003-03-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-cell.cc (octave_cell::subsasgn): Use make_unique in
	appropriate places to preserve copy on write semantics.

	* oct-conf.h.in: Substitute OCTAVE_CONF_KPATHSEA_INCFLAGS.

	* oct-stdstrm.h (octave_stdiostream::output_stream): Return stream
	if mode is out, not in.

2003-02-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* strfns.cc (Fchar): New function.

	* ov-cell.cc (octave_cell::all_strings): Allow elements to be
	string arrays.
	* ov.cc (octave_value::all_strings, octave_value::convert_to_str):
	New optional arg, pad.  Change all derived classes.

	* ov-struct.cc (Ffieldnames, Fisfield): Move here from data.cc.

	* data.cc (Ffieldnames): Rename from Fstruct_elements.  Return
	cell array instead of a string array.
	(Fisfield): Rename from struct_contains.

2003-02-22  Paul Kienzle  <pkienzle@users.sf.net>

	* toplev.cc: Put config info in array of strings, then convert to map.

2003-02-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (symbol_exist): For names like foo.bar, don't omit
	the part after the dot.

2003-02-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (fun_to_call): New static variable.
	(octave_main): Pass it to main_loop.
	(long_opts): Accept --funcall.
	(usage_string, verbose_usage): Add --funcall.

	* toplev.cc (main_loop): New arg, fun_to_call.  If non-empty,
	evaluate this function before continuing.

2003-02-21  Paul Kienzle  <pkienzle@users.sf.net>

	* file-io.cc (Fmkstemp): Use OCTAVE_LOCAL_BUFFER instead of using
	std::auto_ptr directly.

2003-02-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov.h, ov.cc (octave_value (long long int)): New constructor.
	(octave_value (unsigned long long int)): Likewise.

	* oct-obj.h (octave_value_list::operator delete): Handle systems
	with or without placement delete.

2003-02-21  Paul Kienzle  <pkienzle@users.sf.net>

	* utils.cc (octave_vsnprintf): Return value of vsnprintf is int,
	not size_t.  Make sure there is some space left in the buffer for
	vsnprintf versions which return the number of characters written
	even when the buffer is too short.

2003-02-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* debug.cc (get_user_function): Use dynamic_cast, not static_cast.

	* ov-usr-fcn.cc (octave_user_function::traceback_error): Now const.

	* ov.cc (octave_value (const octave_fcn_handle&)): New constructor.
	(octave_value::fcn_handle_value): New virtual function.
	* ov-base.cc (octave_value::fcn_handle_value): Provide default.
	* ov-usr-fcn.cc (octave_user_function::stash_fcn_file_name): New
	arg, nm.  Change all callers.
	* ov-fcn.h (octave_function::is_nested_function): New virtual function.
	* parse.y (get_feval_args): New function.
	(feval (octave_function *, const octave_value_list&, int)): Likewise.
	(feval (const octave_value_list&, int)): Allow the first arg to be
	a function handle as well as a string.
	* variables.cc (load_function): New function.
	* pt-walk.h, pt-pr-code.h, pt-pr-code.cc, pt-check.h, pt-check.cc,
	pt-bp.h, pt-bp.cc: Handle new tree_fcn_handle class.
	* pt-all.h: Include pt-fcn-handle.h.
	* pt-fcn-handle.h, pt-fcn-handle.cc, ov-fcn-handle.h,
	ov-fcn-handle.cc: New files.

2003-02-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (FCN_HANDLE): New token type.
	(fcn_handle): New non-terminal.
	(primary_expr): Also accept fcn_handle.
	(tree_fcn_handle_type): New %type.
	(union): New field, tree_fcn_handle_type.
	(make_fcn_handle): New function.

	* lex.l (@{IDENT}): Recognize function handle syntax.
	(@): Don't recognize "@" as a single token.

	* load-save.cc (struct hdf5_callback_data): Provide constructor.
	(hdf5_callback_data::name, hdf5_callback_data::doc): Now
	std::string instead of char*.  Change all uses.

2003-02-18  Roger Banks  <rbanks@colsa.com>

	* load-save.cc (read_ascii_data, read_ascii_data,
	read_mat5_binary_element, save_mat5_binary_element,
	save_ascii_data): Handle cell arrays.
	(write_mat5_cell_array): New function.

2003-02-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (DLD_XSRC): Delete log.cc from the list.
	Add sqrtm.cc to the list.

	* DLD-FUNCTIONS/log.cc: Delete.

2003-02-18  Paul Kienzle  <pkienzle@users.sf.net>

	* DLD-FUNCTIONS/sqrtm.cc: New file.

2003-02-18  David Bateman  <dbateman@free.fr>

	* DLD-FUNCTIONS/lu.cc (Flu): Allow non-square matrices.

2003-02-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (read_binary_file_header, do_load, do_save,
	write_header): No longer static.
	(load_save_format): Move enum decl to load-save.h.

2003-02-15  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stdstrm.h, oct-stdstrm.cc (octave_base_stdiostream,
	octave_iostdiostream, octave_istdiostram, octave_ostdiostream):
	Combine all functionality into one class, octave_stdiostream.
	Change all uses.	

	* file-io.cc (Ftmpfile, Fmkstemp): New functions.
	* oct-stdstrm.h (octave_iostdiostream): New class.
	(octave_istdiostream::octave_istdiostream,
	octave_istdiostream::create,
	octave_ostdiostream::octave_ostdiostream, octave_ostdiostream::create, 
	octave_iostdiostream::octave_iostdiostream,
	octave_iostdiostream::create): Make close function the last arg.
	Change all uses.

	* c-file-ptr-stream.h (io_c_file_ptr_stream): New class.

2003-02-14  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* octave.cc (maximum_braindamage): Set boolean built-in variables
	to true and false instead of 1.0 and 0.0.
	(octave_main): Likewise.
	* error.cc (Fwarning): Likewise.

	* pager.cc (Fmore): Make the no-arg case work too.

	* ov-str-mat.h (octave_char_matrix_str::is_real_type, 
	octave_char_matrix_str::is_matrix_type,
	octave_char_matrix_str::is_numeric_type): Always return false.

2003-02-13  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* lex.l (<CCHAR>): If we are parsing a command, reset start state.
	Use BEGIN (INITIAL) instead of BEGIN 0.  Use parens around start
	state in BEGIN statements.

2003-02-13  Paul Kienzle  <pkienzle@users.sf.net>

	* variables.cc (Fmlock, Fmunlock, Fmislocked): New functions.

	* variables.cc (mlock, munlock, mislocked): New functions.
	* variables.h: Provide decls.

	* symtab.h (symbol_record::unmark_static): New function.

2003-02-12  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* error.cc (reset_error_handler): New function.
	* toplev.cc (main_loop): Use it here.
	* lex.l (reset_parser): Don't set error_state and warning_state here.
	* parse.y (eval_string): Reset parser before calling yyparse.

2003-01-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* data.cc (Ffmod): New function.

	* c-file-ptr-stream.cc (c_file_ptr_buf::underflow_common): New
	function.
	* c-file-ptr-stream.h (c_file_ptr_buf::underflow,
	c_file_ptr_buf::uflow): Use it.
	(c_file_ptr_buf): Derive from std::streambuf, not OCTAVE_STD_FILEBUF.
	Don't cache file descriptor.

2003-01-28  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/minmax.cc: Move min and max functions from here to
	liboctave/dMatrix.cc and liboctave/CMatrix.cc.

2003-01-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/rand.cc: Rewrite to use new octave_rand functions.

2003-01-23  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (octave_base_stream::do_printf): Handle values
	outside the range of integers in int conversions for
	compatibilitiy wtih Matlab.

2003-01-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (get_mat_data_input_line): Handle lines with CR
	only as separator.

	* oct-stream.cc (octave_base_stream::do_printf): Handle Inf and
	NaN in int conversions for compatibility with Matlab.

	* data.cc (symbols_of_data): Doc fix for realmin.

	* cutils.c (octave_raw_vsnprintf): New function.
	* utils.cc (octave_snprintf): Move here from cutils.c.
	(octave_Vsnprintf): Likewise.  Allow octave_raw_vsnprintf to be
	interrupted.
	* utils.h (octave_vsnprintf, octave_snprintf): No longer extern "C".

2003-01-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-loop.cc (tree_complex_for_command::eval): Fix typo.

2003-01-16  Mumit Khan  <khan@nanotech.wisc.edu>

	* mk-oct-links: Use $SED if set.
	* mkbuiltins: Likewise.
	* mkdefs: Likewise.
	* mkdocs: Likewise.
	* mkgendoc: Likewise.
	* mkops: Likewise.

2003-01-11  Paul Kienzle  <pkienzle@users.sf.net>

	* Makefile.in (gendoc$(BUILD_EXEEXT)): Pass $(BUILD_CXXFLAGS) and
	$(BUILD_LDFLAGS) to compiler.

2003-01-11  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (Fassignin): New function.

2003-01-10  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sighandlers.cc (make_sig_struct): New function.
	(symbols_of_sighandlers): Add DEFCONST for SIG struct.

	* syscalls.cc (Fkill): New function.

2003-01-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* oct-stream.cc (get_size): If only one dimension is specified and
	it is zero, also set the other dimension to zero instead of one.

2003-01-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* sysdep.cc [__DECCXX]: Add a kluge for some missing template
	functions.

2003-01-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* ov-usr-fcn.cc (octave_vr_val): Assert vr_list != 0, not vr_list.
	* variables.cc (builtin_string_variable, builtin_any_variable,
	builtin_real_scalar_variable, bind_builtin_variable): Likewise.

	* TEMPLATE-INST/Array-tc.cc: Provide specialization of
	Array<octave_value>::resize_fill_value before instantiation of
	Array<octave_value>.

	* oct-obj.h (octave_value_list::operator delete): Define version
	of delete operator to correspond to placement new operator.

	* mkgendoc: In generated code, define __USE_STD_IOSTREAM if using
	Compaq C++.

	* Makefile.in (distclean): Also remove doc-files and gendoc.cc.

	* input.cc (initialize_command_input): Use const for
	initialization of char * from literal string.

	* pt-plot.cc (subplot::extract_plot_data): Call single_subsref,
	not subsref.
	* ov.h, ov.cc (single_subsref (const std::string&, const
	octave_value_list&)): Rename from subsref.

	* symtab.cc (symbol_table::rename): Explicitly convert C string to
	std::string so type of second arg of ?: matches third.
	(symbol_table::lookup): Likewise.

	* mappers.cc: Remove std:: qualifiers from C library names.

2003-01-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-exp.h (tree_expression::has_magic_end): New pure virtual function.
	* pt-id.h (tree_identifier::has_magic_end): New function.
	* pt-colon.h (tree_colon_expression::has_magic_end): Likewise.
	* pt-idx.h (tree_index_expression::has_magic_end): Likewise.
	* pt-const.h (tree_constant::has_magic_end): Likewise.
	* pt-unop.h (tree_unary_expression::has_magic_end): Likewise.
	* pt-binop.h (tree_binary_expression::has_magic_end): Likewise.
	* pt-assign.h (tree_multi_assignment::has_magic_end): Likewise.
	(tree_simple_assignment::has_magic_end): Likewise.
	* pt-mat.cc (tree_matrix::has_magic_end): Likewise.
	* pt-arg-list.cc (tree_argument_list::has_magic_end): Likewise.

	* pt-arg-list.cc (tree_argument_list::append): Check all
	expression types for magic end token..

	* file-io.cc (Ftmpnam): Improve error checking.
	(symbols_of_file_io): Move definition of P_tmpdir here from dirfns.cc.

	* dirfns.cc (symbols_of_dirfns): Install new built-in constant
	P_tmpdir.

2003-01-02  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* dirfns.cc (symbols_of_dirfns): New function.
	Install new built-in constant filesep.

	* utils.cc (Fisvaranme): New function.
	(valid_identifier): Identifiers can't start with digits!  Doh!

	* lex.l (Fiskeyword): New function.

	* Makefile.in (INCLUDES): Don't forget base-list.h.

	* symtab.cc (symbol_record::define): If definition already exists,
	redefine it instead of replacing it.

	* variables.cc (symbol_exist): Don't use reference when handling
	sr->def ().

	* pt-plot.cc (save_in_tmp_file): octave_value arg is now const.
	* pt-misc.cc (tree_parameter_list::initialize_undefined_elements):
	Likewise.

	* symtab.cc (symbol_record::clear): Don't do anything if the
	symbol record is already undefined.

2003-01-01  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-arg-list.cc (tree_argument_list::append): New function.
	(tree_argument_list::convert_to_const_vector): Don't save and
	set pointer to indexed object if list_includes_magic_end is false.
	* pt-arg-list.h (tree_argument_list::append): Provide decl.
	(tree_argument_list::list_includes_magic_end): New data member.
	(tree_argument_list::tree_argument_list): Initialize it.

	* ov-base.cc (octave_base_value::char_matrix_value,
	octave_base_value::all_strings,	octave_base_value::string_value):
	Attempt conversions here if Vimplicit_num_to_num_ok is true.

	* ov.cc (Vimplicit_num_to_str_ok): Move here from pt-mat.cc and
	make extern.
	* ov.h: Provide decl.

	* oct-stream.cc (printf_value_cache::looking_at_string): Delete.
	(printf_value_cache::string_value): Just attempt conversion.
	(octave_base_stream::do_printf): When doing '%s' format,
	just attempt converstion.

	* file-io.cc (Ffread): Allow size to be omitted even when
	additional arguments are given.

2002-12-31  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-arg-list.cc (F__end__): Fail if rows or columns is negative.
	(tree_argument_list::convert_to_const_vector): Only protect and
	save pointer to the indexed object if it is a constant.

	* syscalls.cc (Fmkfifo): Use long_value instead of cast.

	* ov.h (octave_value::short_value, octave_value::ushort_value,
	octave_value::uint_value, octave_value::long_value,
	octave_value::ulong_value): New functions.

	* syscalls.cc (mk_stat_map, Fgetegid, getgid, geteuid): Likewise.
	Delete unnecessary casts.
	* file-io.cc (Ffgetl, Ffgets, Fftell, Fsscanf): Likewise.
	* toplev.cc (Fsystem): Likewise.

	* ov-file.h (octave_file::double_value,	octave_file::scalar_value):
	Delete unnecessry cast.

	* ov.cc (octave_value::octave_value): Add constructors for
	octave_time, short int, unsigned short int, unsigned int, long
	int, unsigned long int, 

	* ov.h (octave_value::do_subsref (const std::string&, const
	octave_value_list&)): Rename from subsref.  Change all derived classes.

	* input.cc (generate_completion): Delete unused variable prefix_len.

	* ov.h (DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Delete volatile
	qualifier for decls of static_type_id and t_id.
	(DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Likewise, for def of t_id.

2002-12-30  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (Ffile_in_path): Index args correctly.

	* utils.cc (Ffile_in_path): Call error, not print_usage, for
	invalid option error.
	(Ffile_in_loadpath): Likewise.

	* load-save.cc: Use OCTAVE_LOCAL_BUFFER instead of local automatic
	arrays or using new/delete.

	* lex.l (.): Try another approach to handling EOF here.

	* load-save.cc (read_mat_ascii_data): Use isalpha and isalnum, not
	::isalpha and ::isalnum.

	* defaults.cc (maybe_add_or_del_packages): SCRIPT_FILE arg is now
	a const reference type.

	* ov.h (octave_value::subsref, octave_value::subsasgn,
	octave_value::assign, octave_value::do_non_const_unary_op,
	octave_value::numeric_assign): TYPE arg is now a const reference
	type.  Change all derived classes.

	* ov.cc (octave_value::subsref (const std::string&, const
	octave_value_list&)): Move body here, from ov.h.

	* octave.cc (octave_main): Return 0 at end of function to avoid
	compiler warnings.

2002-12-30  Paul Kienzle  <pkienzle@users.sf.net>

	* parse.y: Fix typo in doc string.

2002-12-29  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/lpsolve.cc (Flpsolve): Rename from Flp_solve.
	(Flpsolve_options): Rename ffrom Flp_solve_options.

2002-12-27  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (Fevalin): New function.

	* variables.cc (curr_caller_sym_tab): New global variable.
	* variables.h: Provide decl.
	(initialize_symbol_tables): Initialize it.
	* ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
	Protect	and set it here.

2002-12-26  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* utils.cc (search_path_for_file): Second arg now string_vector.
	Use find_first_of, not find.
	(search_path_for_all_files): Second arg now string_vector.
	Use find_all_first_of, not find_all.
	(Ffile_in_path): Accept cell array of strings as first argument.
	(Ffile_in_loadpath): Likewise.

	* dynamic-ld.cc (octave_dynamic_loader::load): New arg, file_name.
	(octave_dynamic_loader::do_load): Likewise.  If file_name is not
	empty, use it instead of searching in path.

	* parse.y (load_fcn_from_file): Use find_first_of to perform search.

	* ov-cell.cc (octave_cell::all_strings): New function.
	* ov-cell.h: Provide decl.

2002-12-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (function_end): If parsing a nested function, set
	lexer_flags.parsing_nested_function to -1.
	(frob_function): If lexer_flags.parsing_nested_function is
	negative, set it to zero.
	* lex.h (lexical_feedback::parsing_nested_function): Now int.
	Change uses as needed.

	* lex.l (NESTED_FUNCTION_BEGIN): Rename from NESTED_FUNCTION_START.
	Now an exclusive start state.
	(NESTED_FUNCTION_END): New exclusive start state.
	(is_keyword): When matching a new function keyword in a nested
	function context, explicitly return END and set start state to
	NESTED_FUNCTION_END.
	(.): Accept EOF here too.

	* variables.cc (link_to_builtin_or_function): Maybe prepend parent
	function name symbol name.

	* parse.y (parent_function_name): New variable.
	(fcn_name): New non-terminal.
	(function2): Use it.
	(parsed_fcn_name): Fold into fcn_name.
	(function_end): Don't call check_for_garbage_after_fcn_def.
	Set lexer_flags.parsing_nested_function on EOF.
	* parse.h: Provide decl for parent_function_name.

	* ov-usr-fcn.h (octave_user_function::mark_as_nested_function,
	(octave_user_funciton::is_nested_function): New functions.
	(octave_user_function::nested_function): New data member.
	(octave_user_function::do_multi_index_op): Maybe protect and set
	curr_parent_function pointer.
	* parse.y (frob_function): Maybe mark as nested function.

	* toplev.cc (curr_parent_function): New global variable.
	* toplev.h: Provide decl.

	* lex.l (check_for_garbage_after_fcn_def): Delete.
	* lex.h: Delete decl.

	* lex.l (prep_for_nested_function): New function.
	(<NESTED_FUNCTION_START>): Use it here.
	(is_keyword): And here.
	(lookup_identifier): Maybe prepend parent function name.

	* variables.cc (initialize_symbol_tables): Give names to the three
	main symbol tables.
	* symtab.cc (symbol_table::lookup, symbol_table::rename): Print
	debugging info if Vdebug_symtab_lookups is nonzero.
	(debug_symtab_lookups): New function.
	(Vdebug_symtab_lookups): New static varaible.
	(symbols_of_symtab): DEFVAR it.
	* symtab.h (symbol_table::table_name): New member variable.
	(symtab_count): New static member variable.
	(symbol_table::symbol_table): Handle table name.

2002-12-24  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* parse.y (frob_function): Don't give nested functions the same
	name as the function file.

	* lex.h (lexical_feedback::parsing_nested_function): New data member.
	* lex.l (lexical_feedback::init): Initialize it to false.
	(<NESTED_FUNCTION_START>): Set lexer_flags.parsing_nested_function
	to true.

	* parse.y (symtab_context): Now a stack.  Change all uses.

	* lex.l (NESTED_FUNCTION_START): New start state to handle
	"function" keyword in a nested function context.
	(prep_for_function): New function.
	(is_keyword): Allow functions to be nested in function files.

	* lex.l (is_keyword): Maybe ignore END tokens.
	Increment and decrement end_tokens_expected as appropriate.
	(handle_identifier): If is_keyword returns -1, return immediately.
	({IDENT}{S}*): Do nothing if handle_identifier returns -1.

	* parse.y (end_tokens_expected): New variable.
	(parse_fcn_file): Protect and set it.

	* parse.y (begin_obj_idx): Increment
	lexer_flags.looking_at_object_index.
	(postfix_expr): Decrement it as appropriate here.

	* lex.h (lexical_feedback::looking_at_object_index): Now int.

	* parse.y (postfix_expr): Reset	lexer_flags.looking_at_object_index
	in () and {} cases too.

2002-12-21  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-arg-list.cc (indexed_object, indexed_position):
	New file-scope static variables.
	(tree_argument_list::convert_to_const_vector): New arg, object.
	Protect and set indexed_object and indexed_position.
	(F__end__): New function.

	* octave-lvalue.h (octave_lvalue::object): New member function.
	* pt-idx.cc (make_value_list): New arg, object.  Change all
	callers.  Pass object to convert_to_const_vector.

	* lex.h (lexical_feedback.looking_at_object_index): New data member.
	* lex.l (lexical_feedback::init): Initialize it.
	(is_keyword): If looking at object index, end is not a keyword.
	(handle_identifier): If end is not a keyword, transform it to __end__.
	* parse.y (begin_obj_idx): New non-terminal.
	(postfix_expr): Use it.

	* defun.cc (install_builtin_function): New arg, can_hide_function.
	* defun-int.h: Fix decl.
	(DEFCONSTFUN_INTERNAL): New macro.
	* defun.h (DEFCONSTFUN): New macro.
	* mkbuiltins (XDEFCONSTFUN_INTERNAL): New macro.
	* mkgendoc: Likewise.
	* Makefile.in (DEFUN_PATTERN): Make it work for DEFCONSTFUN too.
	* symtab.h (symbol_record::can_hide_function): New data member.
	(symbol_record::symbol_record): Initialize it.
	* symtab.cc (symbol_record::variable_reference): Also check
	can_hide_function flag.

2002-12-20  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* DLD-FUNCTIONS/time.cc (extract_tm): Use int_value() instead of
	casting double_value() to int.

	* ov.cc (octave_value::next_subsref): Arg "skip" is now size_t.

	* oct-obj.h (octave_value_list::octave_value_list (double),
	octave_value_list::octave_value_list (const Matrix&),
	octave_value_list::octave_value_list (const DiagMatrix&),
	octave_value_list::octave_value_list (const RowVector&),
	octave_value_list::octave_value_list (const ColumnVector&),
	octave_value_list::octave_value_list (const Complex&),
	octave_value_list::octave_value_list (const ComplexMatrix&),
	octave_value_list::octave_value_list (const ComplexDiagMatrix&),
	octave_value_list::octave_value_list (const ComplexRowVector&),
	octave_value_list::octave_value_list (const ComplexColumnVector&),
	octave_value_list::octave_value_list (const char *),
	octave_value_list::octave_value_list (const std::string&),
	octave_value_list::octave_value_list (const string_vector&),
	octave_value_list::octave_value_list (double, double, double),
	octave_value_list::octave_value_list (const Range&): Delete.
	Adjust uses of octave_value/octave_value_list to handle this change.

	* ov.cc (octave_value::octave_value (int)): New constructor.
	* ov.h: Provide decl.
	In files that construct integer-valued octave_value objects, use
	ints instead of casing to double.

2002-12-19  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* load-save.cc (read_mat_ascii_data): Allow commas to separate values.
	Try harder to convert filenames to valid identifiers in a
	Matlab-compatible way.

2002-12-18  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in: No need to add $(LIBKPATHSEA) to LINK_DEPS, since
	it is not included in liboctave.

2002-12-18  JD Cole  <jdcole@san.rr.com>

	* pt-check.cc (tree_checker::visit_subplot_axes,
	tree_checker::visit_do_until_command): New functions.
	* pt-check.h: Provide decl.

2002-12-17  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* variables.cc (Fclear): Fix off-by-one error.

	* oct-stream.cc (octave_base_stream::do_gets): Correctly read
	last line of file even if it does not end with new line
	character.

	* pt-select.cc (equal): Don't look up == op, just try it and see
	whether it works.

	* oct-stream.cc (printf_format_list::printf_format_list):
	Handle empty format string.

2002-12-06  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-mat.cc (class tm_row_const::tm_row_const_rep): Derive from
	octave_base_list instead of SLList.  Fix tm_row_const member
	functions as needed, change all uses.
	(class tm_const): Derive from octave_base_list, not SLList.  Fix
	member functions as needed, change all uses.
	* pt-mat.h (class tree_matrix): Derive from octave_base_list
	instead of including SLList object as data member.  Fix member
	functions as needed, change all uses.

	* pt-idx.h (tree_index_expression::args,
	tree_index_expression::arg_nm, tree_index_expression::dyn_field):
	Now std::list, not SLList.  Fix member functions as needed, change
	all uses.

	* oct-map.h (Octave_map::map): Now std::map instead of CHMap.
	Fix member functions as needed, change all uses.

	* oct-lvalue.h (octave_lvalue::idx): Now std::list instead of
	SLList object.  Fix member functions as needed, change all uses.

	* dynamic-ld.cc (octave_shlib_list::lib_list): Now std::list
	instead of DLList object.  Fix member functions as needed, change
	all uses.

	* ov.h (octave_value::subsref, octave_value::subsasgn):
	Index arg is not std::list, not SLList.  Change all derived
	classes, all uses.

	* pt-stmt.h (tree_statement_list): Derive from base_octave_list
	object instead of including SLList object as data member.  Fix
	member functions as needed, change all uses.
	* pt-select.h (tree_switch_case_list): Likewise.
	(tree_if_command_list): Likewise.
	* pt-misc.h (tree_parameter_list, tree_return_list,
	tree_va_return_list): Likewise.
	* pt-plot.h (subplot_list): Likewise.
	* pt-mat.h (tree_matrix): Likewise.
	* pt-decl.h (tree_decl_init_list): Likewise.
	* pt-arg-list.h (tree_argument_list): Likewise.
	* comment-list.h (octave_comment_list): Likewise.

	* BaseSLList.cc, DLList.cc, Map.cc, SLList.cc, SLStack.cc,
	Stack.cc: Delete.
	* Makefile.in (DIST_SRC): Delete them from the list.

	* BaseSLList.h, DLList.h, Map.h, Pix.h, SLList.h, SLStack.h,
	Stack.h: Delete
	* Makefile.in (INCLUDES): Delete them from the list.

	* Map-oct-obj.cc, SLList-expr.cc, SLList-misc.cc, SLList-plot.cc,
	SLList-tc.cc, SLList-tm.cc: Delete.
	* Makefile.in (TI_XSRC): Delete them from the list.

	* ov-base-mat.cc (octave_base_matrix::assign): Pass
	MT::resize_fill_value () as third arg for ::assign.	

	* Cell.h (Cell::resize_fill_value): Use empty Matrix object, not
	undefined octave_value object.
	(Cell::Cell (int, int, const octave_value&)): Use
	resize_fill_value () as default value, not undefined octave_value
	object.

2002-12-05  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (DEFUN_PATTERN): Make it work for DEFCMD too.

	* base-list.h: New file.

2002-12-04  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* toplev.cc (octave_interpreter_ready): New global variable.
	* toplev.h: Provide decl.

	* octave.cc (octave_main): Call execute_default_pkg_add_files just
	before executing startup files.  Set octave_interpreter_ready to
	true before calling execute_default_pkg_add_files.

	* defaults.cc (maybe_add_or_del_packages, default_load_path,
	update_load_path_dir_path): New static functions. 
	(set_default_path, loadpath): Call update_load_path_dir_path.
	(symbols_of_defaults): Use DEFVAR, not DEFCONST for DEFAULT_LOADPATH.
	(execute_default_pkg_add_files): New function.
	* defaults.h.in: Provide decl.

	* utils.cc (search_path_for_all_files): New function.
	(Ffile_in_loadpath, Ffile_in_path): Allow search to return all
	files in the path.

	* Cell.cc (Cell (const string_vector&)): New constructor.

	* oct-obj.cc (octave_value_list::assign): Allow optional fill
	value for resizing.
	* oct-map.cc (Octave_map::assign): Pass fill_value in initial
	assignment too.

2002-12-03  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* TEMPLATE-INST/Map-tc.cc, TEMPLATE-INST/Map-fnc.cc: Delete.
	* Makefile.in (TI_XSRC): Delete them from the list.

	* fn-cache.h (octave_fcn_file_name_cache::cache): Now std::map,
	not CHMap.

	* TEMPLATE-INST/SLStack-i.cc, TEMPLATE-INST/SLStack-ovl.cc,
	TEMPLATE-INST/SLStack-pc.cc, TEMPLATE-INST/SLStack-str.cc,
	TEMPLATE-INST/SLStack-sym.cc, TEMPLATE-INST/SLStack-tok.cc,
	TEMPLATE-INST/SLStack-ue.cc, TEMPLATE-INST/SLStack-ui.cc:
	Delete unnecessary files.
	* Makefile.in (TI_XSRC): Delete them from the list.

	* toplev.cc (octave_atexit_functions): Now std::stack, not SLStack.
	* pt-plot.cc (tmp_files): Likewise. 
	* lex.l (token_stack): Likewise.
	(class bracket_brace_paren_nesting_level): Make context a data
	member instead of deriving from SLStack object.
	Use std::stack instead of SLStack.
	* ov-usr-fcn.h (octave_user_function::saved_args): Likewise.
	* symtab.h (symbol_record::context): Likewise.
	(symbol_record::global_link_context): Likewise.

	* unwind-prot.h (unwind_protect::elt_list): Rename from list.
	Now std::stack, not SLStack.

	* pt-stmt.h (tree_statement_list): Make list member data instead
	of deriving from SLList object.
	* pt-select.h (tree_switch_case_list): Likewise.
	(tree_if_command_list): Likewise.
	* pt-plot.h (subplot_list): Likewise.
	* pt-mat.h (tree_matrix): Likewise.
	* pt-decl.h (tree_decl_init_list): Likewise.
	* pt-arg-list.h (tree_argument_list): Likewise.
	* comment-list.h (octave_comment_list): Likewise.

	* defun.h (DEFCMD): Rename from DEFUN_TEXT.  Provide DEFUN_TEXT as
	an alias for DEFCMD.  Change all uses.

	* variables.cc (at_top_level): New function.
	(do_who, Fmark_as_command, Funmark_command): Use it.

	* lex.l (COMMAND_START): Rename from TEXT_FCN.  Change all uses.
	(MATRIX_START): Rename from MATRIX.  Change all uses.
	* variables.cc (command_function_set): Rename from
	text_function_set.
	(mark_as_command): Rename from mark_as_text_function.
	(is_marked_as_command): Rename from is_marked_as_text_function.
	(Fmark_as_command): Rename from Fmark_as_text_function.
	(Funmark_command): Rename from Funmark_text_function.
	(is_command_name): Rename from is_text_function_name.
	* symtab.h (symbol_record::COMMAND): Rename from TEXT_FUNCTION.
	(symbol_record::mark_as_command): Rename from mark_as_text_function.
	(symbol_record::unmark_command): Rename from
	symbol_record::unmark_text_function.
	(symbol_record::is_command): Rename from
	symbol_record::is_text_function.
	(symbol_record::symbol_def::mark_as_command): Rename from
	symbol_record::symbol_def::mark_as_text_function.
	(symbol_record::symbol_def::unmark_command): Rename from
	symbol_record::symbol_def::unmark_text_function.
	(symbol_record::symbol_def::is_command): Rename from
	symbol_record::symbol_def::is_text_function.

	* pt-jump.h, pt-jump.cc: Undo previous changes.
	* parse.y: Undo previous changes for brea, continue, and return.

2002-11-25  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* pt-stmt.cc (tree_statement::eval): Allow the lookup to execute
	script files.  If script file has been executed, don't bother to
	call expr->rvalue ().

2002-11-22  John W. Eaton  <jwe@bevo.che.wisc.edu>

	* Makefile.in (OCTINTERP_LINK_DEPS): Include $(FLIBS) in
	OCTINTERP_LINK_DEPS.

	* variables.cc (text_function_set): New static data.
	(mark_as_text_function, unmark_text_function,
	is_marked_as_text_function, Fmark_as_text_function,
	Funmark_text_function): New functions.
	(is_text_function_name): Handle functions marked as text functions
	in special list, not just those marked in the symbol record.
	* symtab.h (symbol_record::mark_as_text_function,
	symbol_record::unmark_text_function,
	symbol_record::symbol_def::mark_as_text_function,
	symbol_record::symbol_def::unmark_text_function): New functions.

	* oct-map.h (Octave_map::rows, Octave_map::columns): New functions.
	* ov-struct.h (octave_struct::rows, octave_struct::columns,
	octave_struct::length): New functions.