Mercurial > hg > octave-max
view src/ChangeLog @ 12074:e7c3e9ad2286 release-3-2-x
fix order of args in fmod
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 26 Aug 2009 08:17:08 +0200 |
parents | fe30458b1de8 |
children | 762999a046e9 |
line wrap: on
line source
2009-08-26 Jaroslav Hajek <highegg@gmail.com> * data.cc (Ffmod): Reverse order of args. 2009-08-25 John W. Eaton <jwe@octave.org> * graphics.cc (gnuplot_backend::send_quit): Wait for gnuplot process. 2009-08-12 Jaroslav Hajek <highegg@gmail.com> * data.cc (Fissorted, F__sort_rows_idx__, Fnorm): Mark as Built-in Functions in the inline help. 2009-08-10 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/dlmread.cc (Fdlmread): Perform tilde expansion on filename argument. 2009-06-11 John W. Eaton <jwe@octave.org> * display.h (display_info::no_window_system): New static function. (display_info::display_info, display_info::init, display_info::instance_ok): New argument, QUERY. (display_info::init): Skip query if QUERY is false. * octave.cc (long_opts, octave_main): Handle --no-window-system option. (NO_WINDOW_SYSTEM_OPTION): New defined value. (usage_string, verbose_usage): Mention --no-window-system option. 2009-08-09 John W. Eaton <jwe@octave.org> * parse.y (Fevalin): Also return output from CATCH expression. 2009-08-06 Jaroslav Hajek <highegg@gmail.com> * OPERATORS/op-dm-template.cc, OPERATORS/op-pm-template.cc: Also define conversions for null string and null sq_string. 2009-08-06 John W. Eaton <jwe@octave.org> * OPERATORS/op-cdm-m.cc, OPERATORS/op-dm-m.cc, OPERATORS/op-pm-m.cc: Define LDMATRIX and DEFINENULLASSIGNCONV. * OPERATORS/op-dm-template.cc, OPERATORS/op-pm-template.cc: Include ov-null-mat.h and define assignment conversion for null matrices if DEFINENULLASSIGNCONV is defined. Define OCTAVE_LDMATRIX. 2009-08-05 John W. Eaton <jwe@octave.org> * pt-eval.cc (tree_evaluator::visit_complex_for_command): Use key_list order for iterating through map. 2009-08-07 Jaroslav Hajek <highegg@gmail.com> * pt-idx.cc (tree_index_expression::lvalue): Implant code from development version. (get_numel): New assistant function. 2009-07-29 John W. Eaton <jwe@octave.org> * ov-float.cc, ov-flt-re-mat.cc, ov-re-mat.cc, ov-re-sparse.cc, ov-scalar.cc: Use complex function for acos mapper if arg is out of range [-1, 1]. 2009-07-29 John W. Eaton <jwe@octave.org> * parse.y (param_list_end): Also set lexer_flags.looking_for_object_index to false. 2009-07-24 John W. Eaton <jwe@octave.org> * pt-mat.cc (DO_SINGLE_TYPE_CONCAT_NO_MUTATE): New macro. (tree_matrix::rvalue1): Use it to avoid complex -> real conversion. 2009-07-23 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/chol.cc (Fcholupdate, Fcholinsert, Fcholdelete, Fcholshift): Replace is_matrix_type -> is_numeric_type. 2009-07-20 Aleksej Saushev <asau@inbox.ru> * sysdep.cc: Also define BSD_init if __NetBSD__ is defined. (sysdep_init): Also call BSD_init if __NetBSD__ is defined. 2009-07-20 Jaroslav Hajek <highegg@gmail.com> * bitfcns.cc (DO_UBITSHIFT): Avoid overflow. (DO_SBITSHIFT): Fix mask calculation. 2009-07-17 Benjamin Lindner <lindnerb@users.sourceforge.net> * DLD-FUNCTIONS/__magick_read__.cc (F__magick_read__): Determine correct number of bits required when reading images. 2009-07-16 John W. Eaton <jwe@octave.org> * graphics.cc (get_array_limits): Require min_pos value to be greater than zero. 2009-07-08 John W. Eaton <jwe@octave.org> * pt-assign.cc (maybe_warn_former_built_in_variable): Improve message. 2009-07-21 Jaroslav Hajek <highegg@gmail.com> Version 3.2.2 released. 2009-07-03 Jaroslav Hajek <highegg@gmail.com> * pt-eval.cc (do_unwind_protect_cleanup_code): Add missing unwind_protect::run. 2009-07-02 Jaroslav Hajek <highegg@gmail.com> * help.cc (do_which): Also look for files. 2009-07-02 Jaroslav Hajek <highegg@gmail.com> * Cell.cc (Cell::index): Use proper resize_fill_value. 2008-07-01 David Bateman <dbateman@free.fr> * pr-output.cc (static inline std::string rational_approx (double, int)): Test for underflow of fractional part of rational approximation earlier in the loop. 2009-07-01 Joe Rothweiler <octaveuser@sensicomm.com> * input.cc (raw_mode): Use TCSADRAIN if no wait. 2009-06-30 Jaroslav Hajek <highegg@gmail.com> * symtab.h (force_variable): Remove assertion. 2009-06-26 John W. Eaton <jwe@octave.org> * load-path.cc (Faddpath): Preserve order of prepended elements. 2009-06-24 Thorsten Meyer <thorsten.meyier@gmx.de> * oct-map.cc (Octave_map::squeeze, Octave_map::permute, Octave_map::transpose, Octave_map::reshape, Octave_map::concat, Octave_map::index): Add tests for preservation of key order in struct arrays. 2009-06-24 Jaroslav Hajek <highegg@gmail.com> * pt-mat.cc (get_concat_class): Use empty string as zero value. (tm_row_const_rep::tm_row_const_rep): Initialize class_nm to empty string. (tm_const::tm_const): Ditto. 2009-06-24 John W. Eaton <jwe@octave.org> * pt-assign.cc (former_built_in_variables): Remove "ans" from the list. 2009-06-24 Jaroslav Hajek <highegg@gmail.com> * pt-eval.cc (do_unwind_protect_cleanup_code): Workaround sig_atomic_t != int. 2009-06-23 Jaroslav Hajek <highegg@gmail.com> * quit.h (octave_quit_exception): Delete. (exit_status, quitting_gracefully): New globals. * quit.cc: Initialize them. (Fquit): Set the globals, simulate interrupt. (main_loop): Handle exit properly. * octave.cc (execute_eval_option_code): Ditto. (execute_command_line_file): Ditto. * pt-eval.cc (do_unwind_protect_cleanup_code): Fix order of unwind_protect calls. 2009-06-23 John W. Eaton <jwe@octave.org> * oct-map.cc (Octave_map::squeeze, Octave_map::permute, Octave_map::transpose, Octave_map::reshape, Octave_map::concat): Preserve key order. 2009-06-22 Jaroslav Hajek <highegg@gmail.com> * ov-cell.cc (octave_cell::all_strings): Avoid duplicate conversions. 2009-06-20 Jaroslav Hajek <highegg@gmail.com> * ov.cc (Fsubsasgn): Uniquify shared value before assigning to it. 2009-06-17 John W. Eaton <jwe@octave.org> * mex.cc (mxArray_octave_value::get_data): If octave_value::mex_get_data returns a valid pointer, mark it as foreign and return it instead of enumerating the types that can be handled directly. * ov-re-mat.h (octave_matrix::mex_get_data): New function. * ov-bool-mat.h (octave_bool_matrix::mex_get_data): Ditto. * ov-flt-re-mat.h (octave_float_matrix::mex_get_data): Ditto. * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::mex_get_data): Ditto. * ov-base-mat.h (octave_base_matrix::mex_get_data): Delete. 2009-06-16 Jaroslav Hajek <highegg@gmail.com> * symtab.h (symbol_table::set_scope_and_context): Avoid checking error_state for setting context. 2009-06-12 Kai NODA <nodakai@gmail.com> * ls-mat4.h: Fix include guard * ov-type-conv.h: Add missing include guard. 2009-06-12 Jaroslav Hajek <highegg@gmail.com> * ov-cell.cc (octave_cell::sort (Array<octave_idx_type>&)): Simplify. 2009-06-10 John W. Eaton <jwe@octave.org> * pt-fcn-handle.cc (tree_anon_fcn_handle::dup): Don't convert to tree_constant object here. Do inherit from current symbol table scope and context. New test. * lex.l (handle_identifier): Set lexer_flags.looking_for_object_index false if identifier is a keyword. ({IDENT}{S}*): Don't set lexer_flags.looking_for_object_index here. 2009-06-09 Jaroslav Hajek <highegg@gmail.com> * octave.cc (octave_main): Call initialize_command_input conditionally. Move line_editing update in front of it. Call command_editor::force_default_editor if not line_editing. 2009-06-09 Jaroslav Hajek <highegg@gmail.com> * data.cc (Flog2): Fix tests. 2009-06-08 John W. Eaton <jwe@octave.org> * variables.cc (symbol_exist): Returnn 1 for function handles and inline function objects. 2009-06-08 Jaroslav Hajek <highegg@gmail.com> * symtab.h (symbol_table::do_clear_global, symbol_table::do_clear_global_pattern): Properly erase from both local and global table. 2009-06-08 Jaroslav Hajek <highegg@gmail.com> * variables.cc (Fclear): Clear also globals when called without arguments. 2009-06-07 Jaroslav Hajek <highegg@gmail.com> * graphics.cc (color_property::do_set): Allow a wider range of types. 2009-06-07 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/find.cc (Ffind): Fix docs. Improve second argument handling. Add regression tests. 2009-06-06 Rik <rdrider0-list@yahoo.com> * data.cc: Update documentation for 'complex' function 2009-06-06 Rik <rdrider0-list@yahoo.com> * load-save.cc: Update documentation for NA and isna functions 2009-06-06 Rik <rdrider0-list@yahoo.com> * load-save.cc: Update documentation for load and save 2009-06-06 Rik <rdrider0-list@yahoo.com> * pr-output.cc: Update documentation for 'format' 2009-06-05 Rik <rdrider0-list@yahoo.com> * variables.cc: Update documentation for 'who' family of functions 2009-06-03 Rik <rdrider0-list@yahoo.com> * input.cc: Correct documentation for keyboard function 2009-05-25 Jaroslav Hajek <highegg@gmail.com> Version 3.2.0 released. 2009-06-02 Rob Mahurin <rob@utk.edu> * Makefile.in: Add CARBON_LIBS to OCTINTERP_LINK_DEPS. From Bernard Desgraups <bdesgraupes@orange.fr>. 2009-06-02 Jaroslav Hajek <highegg@gmail.com> * ov-base.cc (octave_base_value::numeric_assign): Gripe when no index given. * ov-cell.cc (octave_cell::subsasgn): Ditto. * ov-struct.cc (octave_struct::subsasgn): Ditto. * ov-list.cc (octave_list::subsasgn): Ditto. 2009-05-28 John W. Eaton <jwe@octave.org> * load-path.cc (load_path::do_files): Avoid shadow warning from GCC. 2009-05-27 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/__magick_read__.cc (write_image): Bail out if given indexed image. 2009-05-27 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/__magick_read__.cc (encode_map): Fix RGB color construction. 2009-05-26 John W. Eaton <jwe@octave.org> * load-path.h, load-path.cc (load_path::files, load_path::do_files): New arg, OMIT_EXTS. * help.cc (F__list_functions__): Call load_path::files with omit_exts set to true. * symtab.h (symbol_table::symbol_record::symbol_record_rep::is_variable): Use "! is_local ()" instead of storage_class != local. (symbol_table::do_variable_names): Only add variables to the list. (symbol_table::unmark_forced_variables): New static function * variables.cc (do_who): Use is_variable instead of is_defined. Also limit output to variables when using regexp pattern. * octave.cc (unmark_forced_vars): Delete. (execute_eval_option_code): Don't add unmark_forced_vars to unwind_protect stack here. * toplev.cc (main_loop): Add symbol_table::unmark_forced_variables to the unwind_protect stack here. * input.cc (get_debug_input): Likewise. * parse.y (parse_fcn_file, eval_string): Likewise. 2009-05-25 Jaroslav Hajek <highegg@gmail.com> * toplev.h (quit_allowed): New global variable. * toplev.cc (quit_allowed): Declare it. (Fquit): Raise error if quitting is not allowed. * octave.cc (octave_main): if running as embedded, disable quit by default. 2009-05-25 Jaroslav Hajek <highegg@gmail.com> * variables.cc (do_who): Only output symbols with a defined value. 2009-05-22 Michael Goffioul <michael.goffioul@gmail.com> * toplev.h (main_loop): Tag with OCTINTERP_API. * input.h (octave_read, get_input_from_file, get_input_from_stdin): Ditto. * lex.h (create_buffer, current_buffer, switch_to_buffer, delete_buffer, restore_input_buffer, delete_input_buffer): Ditto. 2009-05-22 Robert T. Short <octave@phaselockedsystems.com> * ov-class.h, ov-class.cc (octave_class::clear_exemplar_map): New function. * symtab.h (symbol_record::clear_objects, symbol_record::do_clear_objects): New functions. * variables.cc (do_matlab_compatible_clear, clear): Handle -classes option. 2009-05-22 Jaroslav Hajek <highegg@gmail.com> * src/ov-base-mat.cc (octave_base_matrix<MT>::assign (const octave_value_list, typename MT::element_type)): Avoid out of bounds assignments. 2009-05-21 Michael Goffioul <michael.goffioul@gmail.com> * graphics.cc (figure::properties::get_boundingbox, figure::properties::set_boundingbox): Get screen size from root object. (convert_position): Get screen resolution from root object and remove unneeded "backend" argument. (axes::properties::get_boundingbox, figure::properties::get_boundingbox, figure::properties::set_boundingbox): Remove unneeded backend argument to convert_position call. * debug.h (class bp_table): Tag with OCTINTERP_API. * input.h (Vdebugging): Ditto. * pt-eval.h (class tree_evaluator): Ditto. * toplev.h (class octave_call_stack): Ditto. * file-io.cc (mkstemp): Add mktemp-based implementation of mkstemp on platforms that do not have it (mkstemp is required by the new help system). * TEMPLATE-INST/Array-os.cc: Add "extern template" declaration for Array<octave_idx_type> to avoid implicit instantiation (and duplicate symbols at link-time) [Win32] 2009-05-20 John W. Eaton <jwe@octave.org> * pt-assign.cc (maybe_warn_former_built_in_variable): Set initialized to true when done initializing vars set. From Michael Goffioul <michael.goffioul@gmail.com>. 2009-05-20 Jaroslav Hajek <highegg@gmail.com> * ov-typeinfo.h (octave_value_typeinfo::unary_class_ops, octave_value_typeinfo::unary_ops, octave_value_typeinfo::non_const_unary_ops, octave_value_typeinfo::binary_class_ops, octave_value_typeinfo::binary_ops, octave_value_typeinfo::compound_binary_class_ops, octave_value_typeinfo::compound_binary_ops, octave_value_typeinfo::cat_ops, octave_value_typeinfo::assign_ops, octave_value_typeinfo::assignany_ops, octave_value_typeinfo::pref_assign_conv, octave_value_typeinfo::type_conv_ops, octave_value_typeinfo::widening_ops): Declare as Array<void *>. * ov-typeinfo.cc: Reflect changes. 2009-05-20 Jaroslav Hajek <highegg@gmail.com> * toplev.h (octave_exit_func): New typedef. (octave_exit): Change to octave_exit_func. 2009-05-20 Jaroslav Hajek <highegg@gmail.com> * ov-typeinfo.cc: Don't include oct-obj.h. 2009-05-20 Jaroslav Hajek <highegg@gmail.com> * toplev.h (octave_quit_exception): New class. (octave_exit): New global variable. * toplev.cc (octave_exit): Initialize to ::exit. (clean_up_and_exit): Call octave_exit if set. (Fquit): Raise octave_quit_exception to quit. (main_loop): Catch octave_quit_exception. * octave.cc (execute_command_line_file): Ditto. (execute_eval_option_code): Ditto. 2009-05-19 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/fltk_backend.cc (F__fltk_redraw__): New function. (F__init_fltk__): Call add_input_event_hook with feval to add __fltk_redraw__ to the list of even hook functions to call. Call mlock when initializing. (F__remove_fltk__): Call remove_input_event_hook with feval to remove __fltk_redraw__ from the list of event hook functions. Unlock __init_fltk__ when shutting down. * input.cc (Finput_event_hook): Delete. (input_event_hook): Handle set of functions instead of just one. (Fadd_input_event_hook, Fremove_input_event_hook): New functions. 2009-05-19 Jaroslav Hajek <highegg@gmail.com> * Makefile.in: Add X11_LIBS to OCTINTERP_LINK_DEPS. 2009-05-17 Jaroslav Hajek <highegg@gmail.com> * TEMPLATE-INST/Array-tc.cc: Change #include. 2009-05-15 Robert T. Short <octave@phaselockedsystems.com> * ov-class.cc (octave_class::exemplar_info): Fix typo in error message. * ov-class.cc (Fmethods): Methods returns cell array. * ls-mat5.cc (read_mat5_binary_element): Construct exemplar array and ensure inheritance is correct. 2009-05-15 John W. Eaton <jwe@octave.org> * error.cc (Ferror): Handle error struct argument. * ls-mat5.cc (save_mat5_binary_element): Avoid multiple calls to contents method. From David Bateman <dbateman@free.fr>. (save_mat5_element_length): Use const Cell to avoid making copies when indexing. 2009-05-15 Jaroslav Hajek <highegg@gmail.com> * oct-stream.cc: Don't instantiate Array2<read_fptr>. (octave_stream::read): Make read_fptr_table a static 2d array. (FILL_TABLE_ROW): Update. 2009-05-12 Jaroslav Hajek <highegg@gmail.com> * data.cc (F__accumarray_sum__): Optimize the constant range case. 2009-05-11 John W. Eaton <jwe@octave.org> * sparse-xdiv.cc (do_rightdiv_sm_dm, do_leftdiv_dm_sm): Avoid apparent MSVC bug with typedef. * Makefile.in (install-lib): Remove $(DESTDIR)$(octlibdir)/$(SHLLIBPRE)octinterp.$(SHLLIB_VER), not $(DESTDIR)$(octlibdir)/$(SHLPRE)octinterp.$(SHLEXT_VER). 2009-05-08 Carsten Clark <tantumquantum+gnuoctave@gmail.com> * data.cc (Fissorted): Fix typo in documentation entry. 2009-05-07 Robert T. Short <octave@phaselockedsystems.com> * ov-class.h, ov-class.cc (octave_class::reconstruct_exemplar): New function. * ov-class.cc (octave_class::load_binary, octave_class::load_hdf5, octave_class::load_ascii): Construct exemplar table and ensure inheritance is correct. * ov-struct.cc (struct): Return struct from object. 2009-05-07 John W. Eaton <jwe@octave.org> * graphics.h.in (base_graphics_object::set): Undo previous change. (base_properties::set (const caseless_str&, const octave_value&): New virtual function. (base_properties::set (const caseless_str&, const std::string&, const octave_value&)): No longer virtual. * toplev.cc (octave_config_info): Remove F2C and F2CFLAGS from the config infor struct. * oct-conf.h.in (OCTAVE_CONF_F2CFLAGS, OCTAVE_CONF_F2C): Delete definitions. 2009-05-07 Marco Atzeri <marco_atzeri@yahoo.it> * Makefile.in: (SHLPRE): Rename from SHLLIBPRE. 2009-05-07 John W. Eaton <jwe@octave.org> * genprops.awk (emit_declarations): Emit decls for static has_property functions. (emit_source): Add class name argument to base_properties::set function. Pass class name to set_dynamic and base_properties::set. Emit definitions for has_property functions. * graphics.h.in, graphics.cc (base_properties::set, base_properties::set_dynamic): New argument CNAME. (base_properties::all_dynamic_properties): New static data member. (base_properties::has_dynamic_property): New static function. (base_graphics_object::set): Pass class name to base_properties::set function. (property_list::set): Check for invalid property names. 2009-05-06 Jaroslav Hajek <highegg@gmail.com> * ov-re-mat.cc (Fdouble): Fix order of branches. 2009-05-05 John Swensen <jpswensen@comcast.net> * debug.h, debug.cc (breakpoints): Rename from bp_map, use a std::set instead of a std::map object. Change all uses. (bp_table::do_get_breakpoint_list): Simplify. 2009-05-05 Robert T. Short <octave@phaselockedsystems.com> * ov-class.h, ov-class.cc (octave_class::reconstruct_parents): New function. * ov-class.cc (octave_class::load_binary, octave_class::load_hdf5): Contstruct parent list. (get_current_method_class): Clean up method class extraction. 2009-05-05 John W. Eaton <jwe@octave.org> * graphics.cc (array_property::validate): Require object to be any numeric type, not necessarily a double precision value. * variables.cc (set_internal_variable): Pass NM in call to error. 2009-05-04 Peter O'Gorman <pogma@thewrittenword.com> * utils.cc: Don't define HAVE_C99_VSNPRINTF here. 2009-05-01 John W. Eaton <jwe@octave.org> * error.cc (Vlast_error_file, Vlast_error_name, Vlast_error_line, Vlast_error_column): Delete. (Vlast_error_stack): New static variable. (initialize_last_error_stack): New static function. (verror, Frethrow, Flasterror): Set or use Vlast_error_stack, not Vlast_error_file, etc. 2009-04-27 John W. Eaton <jwe@octave.org> * ov-class.cc (octave_class::dotref): Handle empty parent class. (octave_class::get_current_method_class): Allow result to be empty. (called_from_builtin): New static function. (octave_class::subsref, octave_class::subsasgn): Use it. 2009-04-23 John W. Eaton <jwe@octave.org> * ov-class.cc (Fclass): Check newly constructed classes against the first constructed object of the class. * ov-class.h, ov-class.cc (octave_class::exmplar_info): New class. (exemplar_map): New static data member. (exemplar_iterator, exemplar_const_iterator): New typedefs. * ov-class.h (octave_class::nparents, octave_class::parent_class_name_list): New functions. * ov.h (octave_base_value::nparents, octave_base_value::parent_class_name_list): New functions. * ov-base.h, ov-base.cc (octave_base_value::nparents, octave_base_value::parent_class_name_list): New functions. (parent_class_names): Error if called for wrong type argument. * symtab.cc (load_out_of_date_fcn): New arg, dispatch_type. (out_of_date_check_internal): Pass dispatch type to load_out_of_date_fcn. 2009-04-22 John W. Eaton <jwe@octave.org> * ov-base-int.cc (octave_base_int_helper<T, false, false>::char_value_out_of_range): Correct result for specialization. * ov-class.cc (octave_class::dotref, octave_class::subsasgn): Protect against possibly invalid octave_value -> string conversions. 2009-04-22 Robert T. Short <octave@phaselockedsystems.com> * variables.cc (symbol_exist): Also return 1 for objects. * ov-base.h (octave_base_value::assign): New virtual function. * ov-class.h (octave_class::assign): New function. * ov-class.cc (octave_class::find_parent_class): Simplify. (octave_class::octave_class): Don't allow duplicate parent classes. (octave_class::subsasgn): Allow cls = method (cls, value) to work properly when method is a parent-class method. (get_method_class): New static function. (octave_class:subsasgn, octave_class::dotref): Use it. (F__isa_parent__): New function. 2009-04-22 Jaroslav Hajek <highegg@gmail.com> * ov-range.cc (octave_range::char_array_value): New virtual function override. * ov-range.h: Declare it. 2009-04-22 Jaroslav Hajek <highegg@gmail.com> * pt-mat.cc (tm_row_const::tm_row_const_rep::do_init_element): Update class name even for all-zeros elements. (get_concat_class): Update the default value if possible. 2009-04-21 John W. Eaton <jwe@octave.org> * parse.y (Fassignin): Add missing unwind_protect frame. * toplev.h (push (symbol_table::scope_id, symbol_table::context_id)): New function. * toplev.cc (main_loop): Don't call symbol_table::reset_scope. * mex.cc (mexGetVariable, mexPutVariable): Use unwind_protect to restore call stack and scope. * ov-usr-fcn.cc (octave_user_function::do_multi_index_op): Don't use symbol_table::push_scope. * variablees.cc (do_who): Likewise. Use octave_call_stack and unwind_protect to manage change in scope. * ov-fcn-handle.cc (octave_fcn_handle::load_ascii, octave_fcn_handle::load_binary, octave_fcn_handle::load_hdf5): Likewise. * ls-mat5.cc (read_mat5_binary_element): Likewise. * symtab.h (erase_scope (void*)): New function, for unwind_protect. (symbol_table::push_scope, symbol_table::pop_scope, symbol_table::reset_scope): Delete. (symbol_table::scope_stack): Delete static member. * symtab.cc (symbol_table::scope_stack): Delete definition. 2009-04-17 Jaroslav Hajek <highegg@gmail.com> * oct-map.h (Octave_map::contents (const_iterator) const, Octave_map::contents (iterator)): Simplify. 2009-04-17 Jaroslav Hajek <highegg@gmail.com> * oct-map.cc (Octave_map::assign (const octave_value_list&, const std::string&, const Cell&)): Fix & simplify. (common_size): Remove. 2009-04-16 Jaroslav Hajek <highegg@gmail.com> * pt-idx.cc (make_value_list): Gripe on magic end query for undefined variables. 2009-04-16 Jaroslav Hajek <highegg@gmail.com> * xpow.cc (same_sign): New helper function. (elem_xpow (double, const Range&), elem_xpow (const Complex&, const Range&)): Only optimize monotonic-magnitude integer ranges, start always from the smaller end. 2008-04-11 David Bateman <dbateman@free.fr> * ov-cell.cc (Fstruct2cell): Treat possible trailing singleton for creation of cell array from column structure vector. 2009-04-09 Jaroslav Hajek <highegg@gmail.com> * ov-cell.cc (octave_cell::subsasgn): Fix reference counting optimization. 2009-04-08 John W. Eaton <jwe@octave.org> * load-path.cc (rehash_internal): New function. (Frehash): Use it. (Fpath, Faddpath, Frmpath): Call rehash_internal if path is modified. 2009-04-08 Jaroslav Hajek <highegg@gmail.com> * xpow.cc (elem_xpow (double, const Range&), elem_xpow (const Complex&, const Range&)): New functions. * xpow.h: Declare them. * OPERATORS/op-range.cc: Define scalar .^ range and complex .^ range & install them. 2009-04-04 Jaroslav Hajek <highegg@gmail.com> * ov-struct.cc (octave_struct::subsasgn): Fix reference counting optimization. 2008-04-03 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/max.cc (MINMAX_SPARSE_BODY): Allow sparse boolean values. 2009-04-01 Jaroslav Hajek <highegg@gmail.com> * ov-str-mat.cc (default_numeric_conversion_function): Create an octave_scalar if possible. 2009-03-29 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/fltk_backend.cc (plot_window::button_press): Don't pass arbitrary input to fl_message as a format string. 2009-03-29 Jaroslav Hajek <highegg@gmail.com> * pt-eval.cc (do_unwind_protect_cleanup_code): Protect also octave_interrupt_state. 2009-03-29 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/cellfun.cc (Fcellslices): Index n-d arrays along the last dimension. 2009-03-27 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/balance.cc (Fbalance): Fix order of output args. 2009-03-26 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx (const Array<T>&, ...)): Move dimensions fixup to liboctave. 2009-03-26 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx (const Array<T>&, ...)): Simplify. Instantiate for bool and octave_int types. (find_nonzero_elem_idx (const Sparse<T>&, ...)): Instantiate for bool. (Ffind): Handle bool and octave_int cases. 2009-03-25 John W. Eaton <jwe@octave.org> * version.h (OCTAVE_VERSION): Now 3.1.55+. (OCTAVE_API_VERSION): Now api-v37+. * version.h (OCTAVE_VERSION): Now 3.1.55. (OCTAVE_API_VERSION): Now api-v37. (OCTAVE_RELEASE_DATE): Now 2009-03-25. * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): Also return [](0x0) if the array has 0 rows and it is not a column vector. * oct-stream.cc (octave_stream::write (const Array<T>&, octave_idx_type, oct_data_conv::data_type, octave_idx_type, oct_mach_info::float_format)): Seek to skip if still inside bounds of existing file. Otherwise, write NUL to skip. * Makefile.in (%.df : %.cc): Write source file name to output, wrapped in XDEFUN_FILE_NAME macro. * mkbuiltins: Provide definition for XDEFUN_FILE_NAME. * mkgendoc: Likeiwse. (XDEFUN_DLD_INTERNAL, XDEFUNX_DLD_INTERNAL, XDEFUN_INTERNAL, XDEFCONSTFUN_INTERNAL, XDEFUNX_INTERNAL, XDEFVAR_INTERNAL, XDEFCONST_INTERNAL): Pass file_name to print_doc_string. (print_doc_string): New arg, FILE_NAME. Print file name as comment. 2009-03-24 John W. Eaton <jwe@octave.org> * ov-class.cc (F__parent_classes__): New function. 2009-03-24 Robert T. Short <octave@phaselockedsystems.com> * ov-class.h, ov-class.cc (octave_class::octave_class (const Octave_map&, const std::string&, const octave_value_list&)): New constructor. (octave_class::find_parent_class, octave_class::parent_classes): New functions. (octave_class::dotref): Also look in parent class. (Fclass): Handle parent class arguments. * ov-base.h (octave_base_value::get_parent_list, octave_base_value::parent_classes): New virtual functions. * load-path.h, load-path.cc (load_path::parent_map): New data member. (load_path::add_to_parent_map): New static function. (load_path::do_add_to_parent_map): New member function. (load_path::do_find_method): Also look in parent classes for methods. (load_path::parent_map_type, load_path::const_parent_map_iterator, load_path::parent_map_iterator): New typedefs. 2009-03-23 John W. Eaton <jwe@octave.org> * symtab.h (symbol_table::symbol_record::symobl_recoord_rep::is_variable): Also return true if symbol is tagged as a variable. (symbol_table::symbol_record::symobl_recoord_rep::force_variable): Don't set variable value. (symbol_table::symbol_record::symobl_recoord_rep::clear_forced, symbol_table::symbol_record::clear_forced): Delete. (symbol_table::unmark_forced_variables): Rename from symbol_table::clear_forced_variables. (symbol_table::do_unmark_forced_variables): Rename from symbol_table::do_clear_forced_variables. * parse.y (make_script, finish_function): Call symbol_table::unmark_forced_variables instead of symbol_table::clear_forced_variables. * octave.cc (unmark_forced_vars): New function. (execute_eval_option_code): Add it to the unwind-protect stack. 2009-03-22 Jaroslav Hajek <highegg@gmail.com> * pt-eval.cc (tree_evaluator::visit_simple_for_command): Remove struct branch, handle structs by the generic code. (tree_evaluator::visit_complex_for_command): Add missing const qualifiers. 2009-03-21 Jaroslav Hajek <highegg@gmail.com> * ov-base-diag.cc: Add missing include. * sparse-xdiv.cc: Ditto. * DLD-FUNCTIONS/__glpk__.cc: Ditto. * DLD-FUNCTIONS/__lin_interpn__.cc: Ditto. * DLD-FUNCTIONS/__voronoi__.cc: Ditto. 2009-03-20 Jaroslav Hajek <highegg@gmail.com> * ov-re-mat.cc (octave_matrix::load_ascii): Simplify. * ov-flt-re-mat.cc (octave_float_matrix::load_ascii): Simplify. * ov-cx-mat.cc (octave_complex_matrix::load_ascii): Simplify. * ov-flt-cx-mat.cc (octave_float_complex_matrix::load_ascii): Simplify. 2009-03-20 Jaroslav Hajek <highegg@gmail.com> * ov-re-mat.cc (octave_matrix::isnan, octave_matrix::isinf, octave_matrix::finite): Simplify. * ov-flt-re-mat.cc (octave_float_matrix::isnan, octave_float_matrix::isinf, octave_float_matrix::finite): Simplify. * ov-cx-mat.cc (octave_complex_matrix::isnan, octave_complex_matrix::isinf, octave_complex_matrix::finite): Simplify. * ov-flt-cx-mat.cc (octave_float_complex_matrix::isnan, octave_float_complex_matrix::isinf, octave_float_complex_matrix::finite): Simplify. 2009-03-19 Benjamin Lindner <lindnerb@users.sourceforge.net> * ls-oct-ascii.cc (extract_keyword): Replace loop with call to read_until_newline to avoid leaving stray '\r' in stream when reading files with CRLF line endings. 2009-03-18 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/cellfun.cc (scalar_col_helper, scalar_col_helper_def, scalar_col_helper_nda, scalar_query_helper): New classes. (make_col_helper): New function. (Fcellfun): Use col_helper classes for UniformOutput. Avoid copying by using const variables. 2009-03-17 Jaroslav Hajek <highegg@gmail.com> * OPERATORS/op-b-bm.cc: Add missing INSTALL_BINOPs. * OPERATORS/op-bm-b.cc: Ditto. * OPERATORS/op-fm-fm.cc: Ditto. * OPERATORS/op-m-m.cc: Ditto. 2009-03-17 Jaroslav Hajek <highegg@gmail.com> * ov.cc (octave_value::octave_value): Move to ov.h * ov.h (octave_value::octave_value): Implement fast inline constructor using a static rep. 2009-03-15 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/cellfun.cc (Fcellslices): New DLD function. 2009-03-13 Jaroslav Hajek <highegg@gmail.com> * ov.h (octave_value::compound_binary_op): Support bool compound ops. * ov.cc (do_binary_op, decompose_binary_op, binary_op_fcn_name): Ditto. * pt-cbinop.cc (strip_not, simplify_and_or_op): New funcs. (maybe_compound_binary_expression): Support bool compound ops. * OPERATORS/op-int.h: Support bool compound ops. * OPERATORS/op-b-bm.cc: Ditto. * OPERATORS/op-bm-b.cc: Ditto. * OPERATORS/op-bm-bm.cc: Ditto. * OPERATORS/op-fm-fm.cc: Ditto. * OPERATORS/op-m-m.cc: Ditto. 2009-03-13 Jaroslav Hajek <highegg@gmail.com> * xpow.cc (xpow (const NDArray&, double), xpow (const ComplexNDArray&, double), xpow (const FloatNDArray&, float), xpow (const FloatComplexNDArray&, float)): Use xisint for testing ints. Optimize w.r.t int exponents. 2009-03-13 John W. Eaton <jwe@octave.org> * parse.y (maybe_warn_assign_as_truth_value, make_binary_op, maybe_warn_variable_switch_label, maybe_warn_associativity_change): Print file and line number info if available. * lex.l (gripe_matlab_incompatible): Likewise. * error.cc (pr_where): Use octave_call_stack::backtrace to print complete stack trace at once. Don't attempt to print code. (error_2): Set error_state to 0 before calling pr_where. (warning_1): Switch sense of test on symbol_table::at_top_level. Call pr_where after printing primary warning message. 2009-03-13 Jaroslav Hajek <highegg@gmail.com> * ov-range.h (octave_range::octave_range (const Range&)): Allow constructing from invalid range op result. * ov-range.cc (octave_range::try_narrowing_conversion): Validate invalid range op results. * data.cc (fill_matrix): Return packed form (zero-step range) if possible. 2009-03-10 Jason Riedy <jason@acm.org> * DLD-FUNCTIONS/lu.cc (lu): Call fact.Pr_mat () and fact.Pc_mat () to return permutation matrices in the sparse case. 2009-03-12 John W. Eaton <jwe@octave.org> * ls-mat-ascii.cc (get_mat_data_input_line): If we are looking at '\r' or '\n', skip current line ending instead of skipping until the next. 2009-03-12 Ben Abbott <bpabbott@mac.com> * graphics.cc: Fix default "papersize" property value. 2009-03-12 Jaroslav Hajek <highegg@gmail.com> * ov-flt-perm.h, ov-flt-perm.cc: Remove sources. * ov.h, ov.cc (octave_value::octave_value (const PermMatrix&)): Remove use "single" argument. * ov.cc (install_types): Update. * xpow.cc, xpow.h (xpow (PermMatrix, float)): Remove. * ov-base-diag.cc (octave_base_diag::do_index_op): Remove permutation creating block. * ov-re-diag.cc (octave_diag_matrix::do_index_op): Move it here. * ov-re-diag.h (octave_diag_matrix::do_index_op): New decl. * DLD-FUNCTIONS/det.cc (Fdet): Update. * DLD-FUNCTIONS/inv.cc (Finv): Update. * DLD-FUNCTIONS/pinv.cc (Fpinv): Update. * OPERATORS/op-fcm-pm.cc <-- OPERATORS/op-fcm-fpm.cc * OPERATORS/op-fcm-pm.cc: Update. * OPERATORS/op-fm-pm.cc <-- OPERATORS/op-fm-fpm.cc * OPERATORS/op-fm-pm.cc: Update. * OPERATORS/op-pm-fcm.cc <-- OPERATORS/op-fpm-fcm.cc * OPERATORS/op-pm-fcm.cc: Update. * OPERATORS/op-pm-fm.cc <-- OPERATORS/op-fpm-fm.cc * OPERATORS/op-pm-fm.cc: Update. * OPERATORS/op-pm-pm.cc: Update. * OPERATORS/op-pm-template.cc: Update. 2009-03-11 Jaroslav Hajek <highegg@gmail.com> * xpow.cc (xpow (const PermMatrix&, double), xpow (const PermMatrix&, float)): New functions. * xpow.h: Declare them. * DLD-FUNCTIONS/op-pm-pm.cc: Support permutation matrix ^ scalar. * DLD-FUNCTIONS/op-fpm-fpm.cc: Ditto. 2009-03-11 Jaroslav Hajek <highegg@gmail.com> * ov-ch-mat.cc (octave_char_matrix::double_value, octave_char_matrix::float_value, octave_char_matrix::complex_value, octave_char_matrix::float_complex_value): Cast to unsigned char. 2009-03-10 Jason Riedy <jason@acm.org> * OPERATORS/op-pm-sm.cc (mul_pm_sm): New Octave binding for perm * sparse. (ldiv_pm_sm): New Octave binding for perm \ sparse. (mul_sm_pm): New Octave binding for sparse * perm. (div_sm_pm): New Octave binding for sparse / perm. (install_pm_sm_ops): Install the above bindings. * OPERATORS/op-pm-scm.cc (mul_pm_scm): New Octave binding for perm * sparse complex. (ldiv_pm_scm): New Octave binding for perm \ sparse complex. (mul_scm_pm): New Octave binding for sparse complex * perm. (div_scm_pm): New Octave binding for sparse complex / perm. (install_pm_scm_ops): Install the above bindings. * Makefile.in (PERM_OP_XSRC): Add op-pm-sm.cc and op-pm-scm.cc for operations between permutations and sparse matrices. 2009-03-10 Jason Riedy <jason@acm.org> * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): New override for find on PermMatrix. (find): Add a branch testing arg.is_perm_matrix () and calling the above override. 2009-03-10 John W. Eaton <jwe@octave.org> * c-file-ptr-stream.cc, dynamic-ld.cc, error.cc, lex.l, pager.cc, zfstream.cc: Include <iostream>. * zfstream.h: Include <iosfwd> instead of <istream> and <ostream>. * c-file-ptr-stream.h, help.h, load-path.h, load-save.h, ls-ascii-helper.h, oct-iostrm.h, oct-stream.h, ov-base-diag.h, ov-base-int.h, ov-base-mat.h, ov-base-scalar.h, ov-base-sparse.h, ov-base.h, ov-bool-mat.h, ov-bool-sparse.h, ov-bool.h, ov-cell.h, ov-ch-mat.h, ov-class.h, ov-colon.h, ov-complex.h, ov-cs-list.h, ov-cx-mat.h, ov-cx-sparse.h, ov-fcn-handle.h, ov-fcn-inline.h, ov-float.h, ov-flt-complex.h, ov-flt-cx-mat.h, ov-flt-re-mat.h, ov-intx.h, ov-list.h, ov-range.h, ov-re-mat.h, ov-re-sparse.h, ov-scalar.h, ov-str-mat.h, ov-struct.h, ov.h, pager.h, pr-output.h, procstream.h, pt-assign.h, pt-cell.h, pt-const.h, pt-fcn-handle.h, pt-id.h, pt-mat.h, pt.h, utils.h: Include <iosfwd> instead of <iosstream>. 2009-03-10 Jaroslav Hajek <highegg@gmail.com> * data.cc (Fsize_equal): Allow single argument call. * DLD-FUNCTIONS/max.cc (Fcummin, Fcummax): Update docs. 2009-03-09 Benjamin Lindner <lindnerb@users.sourceforge.net> * ls-ascii-helper.h, ls-ascii-helper.cc: New files. * Makefile.in: Add them to the appropriate lists. * load-save.cc (Fload): Open all files in binary mode. * ov-range.cc (load_ascii): Explicitly handle CR and CRLF line endings. * ov-fcn-handle.cc (load_ascii): Likewise. * ov-fcn-inline.cc (load_ascii): Likewise. * ov-str-mat.cc (load_ascii): Likewise. * ls-mat-ascii.cc (get_mat_data_input_line): Likewise. * ls-oct-ascii.cc (extract_keyword, read_ascii_data): Likewise. * ls-oct-ascii.h (extract_keyword): Likewise. 2009-03-09 John W. Eaton <jwe@octave.org> * graphics.h.in (OCTAVE_DEFAULT_FONTNAME): New macro, defaults to "*". (axes::properties, text::properties): Use it to set default fontname. * graphics.cc (axes::properties::set_defaults): Likewise. 2009-03-09 Rafael Laboissiere <rafael@debian.org> * Makefile.in (maintainer-clean): Remove y.tab.h here. (distclean): Not here. 2009-03-09 Jason Riedy <jason@acm.org> * OPERATORS/op-dm-sm.cc (add_dm_sm): Octave binding for diag + sparse. (sub_dm_sm): Octave binding for diag - sparse. (add_sm_dm): Octave binding for diag + sparse. (sub_sm_dm): Octave binding for diag - sparse. (install_dm_sm_ops): Install above bindings. * OPERATORS/op-dm-scm.cc (add_cdm_sm): Octave binding for diag + sparse. (add_dm_scm): Octave binding for diag + sparse. (add_cdm_scm): Octave binding for diag + sparse. (sub_cdm_sm): Octave binding for diag - sparse. (sub_dm_scm): Octave binding for diag - sparse. (sub_cdm_csm): Octave binding for diag - sparse. (add_sm_cdm): Octave binding for diag + sparse. (add_scm_dm): Octave binding for diag + sparse. (add_scm_cdm): Octave binding for diag + sparse. (sub_sm_cdm): Octave binding for diag - sparse. (sub_scm_dm): Octave binding for diag - sparse. (sub_scm_cdm): Octave binding for diag - sparse. (install_dm_scm_ops): Install above bindings. 2009-03-08 Jason Riedy <jason@acm.org> * sparse-xdiv.h (xleftdiv): Declare overrides for xleftdiv (diagonal, sparse), both real and complex. (xdiv): Declare overrides for xdiv (sparse, diagonal), both real and complex. * sparse-xdiv.cc (do_rightdiv_sm_dm): New template function. Implementation for xdiv (sparse, diagonal). (xdiv): Call do_rightdiv_sm_dm to implement overrides, real and complex. (do_leftdiv_dm_sm): New template function. Implementation for xleftdiv (diagonal, sparse). (xleftdiv): Call do_leftdiv_dm_sm to implement overrides, real and complex. * OPERATORS/op-dm-sm.cc (ldiv_dm_sm): Octave binding for real left division, diagonal into sparse. (div_sm_dm): Octave binding for real right division, sparse by diagonal. (install_dm_sm_ops): Install above bindings. * OPERATORS/op-dm-scm.cc (ldiv_dm_scm): Octave binding for real diagonal \ complex sparse. (ldiv_cdm_sm): Octave binding for complex diagonal \ real sparse. (ldiv_cdm_scm): Octave binding for complex diagonal \ complex sparse. (div_scm_dm): Octave binding for complex sparse / real diagonal. (div_sm_cdm): Octave binding for real sparse / complex diagonal. (div_scm_cdm): Octave binding for complex sparse / complex diagonal. (install_dm_scm_ops): Install above bindings. 2009-03-08 Jason Riedy <jason@acm.org> * OPERATORS/op-dm-scm.cc: New file. Implement multiplication between diagonal matrices (both real and complex) and complex sparse matrices. * OPERATORS/op-dm-sm.cc: New file. Implement multiplication between diagonal matrices and sparse matrices, all real. * Makefile.in (DIAG_OP_XSRC): Add op-dm-sm.cc and op-dm-scm.cc. 2009-03-09 Jaroslav Hajek <highegg@gmail.com> * data.cc (F__accumarray_sum__): New function. (do_accumarray_sum): New helper template function. 2009-03-07 Jaroslav Hajek <highegg@gmail.com> * xdiv.cc (mdm_div_impl, dmm_lelftdiv_impl, dmdm_div_impl, dmdm_leftdiv_impl): Optimize. 2009-03-07 John W. Eaton <jwe@octave.org> * pr-output.cc (octave_print_internal (std::ostream&, const PermMatrix&, bool, int)): Delete unused variable SCALE. * utils.cc (octave_vsnprintf): Avoid uninitialized variable warning from GCC. * DLD-FUNCTIONS/qz.cc (Fqz): Avoid "maybe clobbered by vfork" warning from GCC. * version.h (OCTAVE_VERSION): Now 3.1.54. (OCTAVE_API_VERSION): Now api-v36. (OCTAVE_RELEASE_DATE): Now 2009-03-07. * octave.cc (verbose_usage): Include --doc-cache-file in option list. 2009-03-06 Jaroslav Hajek <highegg@gmail.com> * ov.h (octave_value::diag_matrix_value, octave_value::complex_diag_matrix_value, octave_value::float_diag_matrix_value, octave_value::float_complex_diag_matrix_value, octave_value::perm_matrix_value): New methods. * ov-base.cc (octave_base_value::diag_matrix_value, octave_base_value::complex_diag_matrix_value, octave_base_value::float_diag_matrix_value, octave_base_value::float_complex_diag_matrix_value, octave_base_value::perm_matrix_value): New virtual methods. * ov-base.h: Declare them. * ov-base-diag.h (octave_base_diag::diag_matrix_value, octave_base_diag::complex_diag_matrix_value, octave_base_diag::float_diag_matrix_value, octave_base_diag::float_complex_diag_matrix_value, octave_base_diag::perm_matrix_value): Remove declarations. * DLD-FUNCTIONS/inv.cc (Finv): Simplify handling diag & perm matrices. * DLD-FUNCTIONS/pinv.cc (Fpinv): Ditto. * DLD-FUNCTIONS/det.cc (Fdet): Ditto. 2009-03-05 Jaroslav Hajek <highegg@gmail.com> * ls-hdf5.cc (add_hdf5_data): Handle diag & perm matrices. 2009-03-05 John W. Eaton <jwe@octave.org> * pt-cell.cc, pt-cell.h (tree_cell::dup): Now const. * comment-list.cc, comment-list.h (octave_comment_list::dup): Ditto. * pt-arg-list.cc, pt-arg-list.h (tree_argument_list::dup): Ditto. * pt-assign.cc, pt-assign.h (tree_simple_assignment::dup, tree_multi_assignment::dup): Ditto. * pt-binop.cc, pt-binop.h (tree_binary_expression::dup, tree_boolean_expression::dup): Ditto. * pt-cmd.cc, pt-cmd.h (tree_no_op_command::dup, tree_function_def::dup): Ditto. * pt-colon.cc, pt-colon.h (tree_colon_expression::dup): Ditto. * pt-const.cc, pt-const.h (tree_constant::dup): Ditto. * pt-decl.cc, pt-decl.h (tree_decl_elt::dup, tree_decl_init_list::dup, tree_global_command::dup, tree_static_command::dup): Ditto. * pt-except.cc, pt-except.h (tree_try_catch_command::dup, tree_unwind_protect_command::dup): Ditto. * pt-fcn-handle.cc, pt-fcn-handle.h (tree_fcn_handle::dup, tree_anon_fcn_handle::dup): Ditto. * pt-id.cc, pt-id.h (tree_identifier::dup): Ditto. * pt-idx.cc, pt-idx.h (tree_index_expression::dup): Ditto. * pt-jump.cc, pt-jump.h (tree_break_command::dup, tree_continue_command::dup, tree_return_command::dup): Ditto. * pt-loop.cc, pt-loop.h (tree_while_command::dup, tree_do_until_command::dup, tree_simple_for_command::dup, tree_complex_for_command::dup): Ditto. * pt-mat.cc, pt-mat.h (tree_matrix::dup): Ditto. * pt-misc.cc, pt-misc.h (tree_parameter_list::dup, tree_return_list::dup): Ditto. * pt-select.cc, pt-select.h (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): Ditto. * pt-stmt.cc, pt-stmt.h (tree_statement::dup, tree_statement_list::dup): Ditto. * pt-unop.cc, pt-unop.h (tree_prefix_expression::dup, tree_postfix_expression::dup): Ditto. * pt-fcn-handle.h (tree_anon_fcn_handle::parameter_list, tree_anon_fcn_handle::return_list, tree_anon_fcn_handle::body, tree_anon_fcn_handle::scope): Ditto. 2009-03-05 Jason Riedy <jason@acm.org> * ov-base-int.cc (convert_to_str_internal): Replace elt_type with element_type throughout. 2009-03-05 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/sparse.cc (Fsparse): Handle diagonal and permutation matrices. 2009-03-03 John W. Eaton <jwe@octave.org> * ov-struct.cc (octave_struct::save_ascii, octave_struct::save_binary, octave_struct::save_hdf5): Preserve order of structure fields. * ls-mat5.cc (save_mat5_binary_element): Likewise. * symtab.h (symbol_table::do_inherit): Only inherit values for symbols from the donor_scope that already exist in the table. (symbol_table::symbol_record::symbol_record_rep::dup): Now const. (symbol_table::symbol_record::operator=): Decrement rep->count and maybe delete rep. (symbol_table::fcn_info::operator=): Likewise. * pt-fcn-handle.cc: (tree_anon_fcn_handle::dup): Transform tree_anon_fcn_handle objects to tree_constant objects containing octave_fcn_handle objects. New tests. * pt-assign.cc (tree_simple_assignment::rvalue1): Assign result of call to rhs->rvalue1() to an octave_value object, not an octave_value_list object. 2009-03-03 Jaroslav Hajek <highegg@gmail.com> * oct-stream.h (octave_stream_list::lookup_cache): New member field. (octave_stream_list::octave_stream_list): Initialize it. (octave_stream_list::do_lookup): Use it. (octave_stream_list::clear): Make flush optional. Do physically erase entries from the map. Close files. (octave_stream_list::do_remove): Call clear on "all". Do erase deleted entry from the map. 2009-03-02 John W. Eaton <jwe@octave.org> * graphics.cc (Fget, F__get__): Return a column vector of property values, not a row vector. 2009-03-01 John W. Eaton <jwe@octave.org> * OPERATORS/op-fcm-fcm.cc (DEFNDASSIGNOP_FN (dbl_assign)): LHS type is float_complex_matrix, not complex_matrix. RHS value function is float_complex_array, not complex_array. 2009-03-01 Jaroslav Hajek <highegg@gmail.com> * ov-perm.cc (octave_perm_matrix::print_raw): Call octave_print_internal. (octave_perm_matrix::print_raw): Call print_raw. * pr-output.cc (octave_print_internal (...,const DiagMatrix&,...)): Indicate diagonal matrix. (octave_print_internal (...,const ComplexDiagMatrix&,...)): Ditto. (octave_print_internal (...,const PermMatrix&,...)): New function. * pr-output.h: Declare it. 2009-02-27 Jaroslav Hajek <highegg@gmail.com> * OPERATORS/op-dms-template.cc (gripe_if_zero): New template static function. (dmsdiv, sdmldiv): Call it. 2009-02-26 John W. Eaton <jwe@octave.org> * symtab.h (symbol_table::symbol_record::symbol_record_rep::forced): New static constant. (symbol_table::symbol_record::symbol_record_rep::force_variable, symbol_table::symbol_record::force_variable): New functions. (symbol_table::symbol_record::symbol_record_rep::is_forced, symbol_table::symbol_record::symbol_record_rep::mark_forced, symbol_table::symbol_record::symbol_record_rep::unmark_forced, symbol_table::symbol_record::symbol_record_rep::clear_forced, symbol_table::symbol_record::is_forced, symbol_table::symbol_record::mark_forced, symbol_table::symbol_record::clear_forced, symbol_table::symbol_record::unmark_forced): New fucntions. * lex.h, lex.l (force_local_variable): Delete. (handle_identifier): Call symbol_table::force_variable instead of force_local_variable. * parse.y (make_script): Call symbol_table:clear_forced_variables after defining script. (finish_function): Call symbol_table::clear_forced_variables instead of symbol_table::clear_variables. * DLD-FUNCTIONS/chol.cc: Correct spelling of CHOLMOD in tests. * version.h (OCTAVE_VERSION): Now 3.1.53+. (OCTAVE_API_VERSION): Now api-v35+. 2009-02-25 John W. Eaton <jwe@octave.org> * version.h (OCTAVE_VERSION): Now 3.1.53. (OCTAVE_API_VERSION): Now api-v35. (OCTAVE_RELEASE_DATE): Now 2009-02-25. (OCTAVE_COPYRIGHT): Update year. * Makefile.in (distclean): Remove tags TAGS y.tab.h y.output yy.lex.c here, not in maintainer-clean target. Also remove parse.output. * DLD-FUNCTIONS/rand.cc: Note that the tests for the old random number generator will fail if using 64-bit indexing. 2009-02-25 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/lu.cc (maybe_set_triangular): New function. (Flu): Use it. * DLD-FUNCTIONS/qr.cc (maybe_set_triangular): New function. (Fqr): Use it. 2009-02-25 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/chol.cc: Fix tests for missing cholmod. * input.cc (get_debug_input): Write debugging location info directly to std::cerr instead of calling message. * pt-eval.cc (tree_evaluator::do_breakpoint): Write debugging location info directly to std::cerr, not octave_stdout. * defaults.h.in (OCTAVE_DOC_CACHE_FILE): New macro. * defaults.cc (set_default_doc_cache_file): New function. (install_defaults): Call it. * help.cc (__list_functions__): Simplify * input.cc (get_debug_input): Don't pass arbitrary input to message as a format string. 2009-02-24 John W. Eaton <jwe@octave.org> * help.cc, help.h (Vdoc_cache_file): New global variable. (Fdoc_cache_file): New function. * octave.cc (DOC_CACHE_FILE_OPTION): New option tag. (long_opts): Include doc-cache-file in the list. (octave_main): Handle DOC_CACHE_FILE_OPTION. 2009-02-24 Jaroslav Hajek <highegg@gmail.com> * ov-scalar.h (octave_scalar::int8_scalar_value): New method. (octave_scalar::int16_scalar_value): New method. (octave_scalar::int32_scalar_value): New method. (octave_scalar::int64_scalar_value): New method. (octave_scalar::uint8_scalar_value): New method. (octave_scalar::uint16_scalar_value): New method. (octave_scalar::uint32_scalar_value): New method. (octave_scalar::uint64_scalar_value): New method. * ov-float.h (octave_float_scalar::int8_scalar_value): New method. (octave_float_scalar::int16_scalar_value): New method. (octave_float_scalar::int32_scalar_value): New method. (octave_float_scalar::int64_scalar_value): New method. (octave_float_scalar::uint8_scalar_value): New method. (octave_float_scalar::uint16_scalar_value): New method. (octave_float_scalar::uint32_scalar_value): New method. (octave_float_scalar::uint64_scalar_value): New method. * OPERATORS/op-s-s.cc (scalar_to_float): Remove duplicate conversion. * OPERATORS/op-range.cc (range_to_float_matrix): Ditto. 2009-02-24 John W. Eaton <jwe@octave.org> * OPERATORS/op-float-conv.cc: New file. * Makefile.in (FLOAT_OP_XSRC): Add it to the list. (DOUBLE_OP_XSRC): Move op-double-conv.cc here from INTTYPE_OP_XSRC. * ops.h (DEFFLTCONVFN, DEFSTRFLTCONVFN): New macros. 2009-02-23 John W. Eaton <jwe@octave.org> * ov-base-sparse.cc (octave_base_sparse<T>::print_raw): Remove extra ")" from output. * DLD-FUNCTIONS/eigs.cc (Feigs): If sigma argument is not a string, try extraction as complex value and check for error instead of inquiring about type first. * pt-eval.cc (tree_evaluator::visit_break_command, tree_evaluator::visit_return_command, tree_evaluator::visit_global_command, tree_evaluator::visit_static_command): Handle breakpoint. (tree_evaluator::visit_simple_for_command, tree_evaluator::visit_complex_for_command): Handle breakpoint once at beginning of loop. (tree_evaluator::visit_if_command_list): Don't call do_breakpoint for else clauses. (tree_evaluator::visit_no_op_command): Handle breakpoint if no-op command is end of function or script. (tree_evaluator::visit_statement): Handle breakpoint for expressions but not commands. (tree_evaluator::visit_while_command, tree_evaluator::visit_do_until_command): Check for breakpoint set on cmd, not expr. (tree_evaluator::visit_do_until_command): Handle breakpoint between check for breaking out of loop and loop control expression. * pt-cmd.h (tree_no_op_command::eof): New data member (tree_no_op_command::tree_no_op_command): Initialize it. (tree_no_op_command::is_end_of_fcn_or_script): New function. * pt-stmt.cc (tree_statement::is_end_of_fcn_or_script): Call is_end_of_fcn_or_script instead of looking at original text of no-op command. * pt-select.h, pt-select.cc (tree_if_command::set_breakpoint, tree_if_command::delete_breakpoint): New functions. (tree_switch_command::set_breakpoint, tree_switch_command::delete_breakpoint): New functions. * pt-stmt.h, pt-stmt.cc (tree_statement::set_breakpoint, tree_statement::delete_breakpoint, tree_statement::is_breakpoint): Delegate real work to cmd or expr. (tree_statement::bp): Delete data member. (tree_statement::tree_statement): Don't initialize bp. (tree_statement::dup): Don't copy bp. * pt.h (tree::line (int), tree:column (int)): New functions. (tree:set_breakpoint, tree::delete_breakpoint): Now virtual. * parse.y (finish_if_command): Also store line and column info for if statement in first element of list. (finish_switch_command): Likewise, for switch. * input.cc (last_debugging_command): New static variable. (octave_gets): Set it here. Don't insert repeated debugging commands in the history list. 2009-02-23 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/pinv.cc: Support diagonal and permutation matrices. 2008-02-21 David Bateman <dbateman@free.fr> * OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc, OPERATORS/op-s-scm.cc, OPERATORS/op-s-sm.cc, OPERATORS/op-scm-cs.cc, OPERATORS/op-scm-s.cc, OPERATORS/op-sm-cs.cc, OPERATORS/op-sm-s.cc: Don't perform any narrowing to full matrices. 2009-02-20 Jaroslav Hajek <highegg@gmail.com> * ov-base-diag.h (octave_base_diag::sqrt): Remove. * ov-re-diag.cc (octave_diag_matrix::sqrt): New method. * ov-re-diag.h: Declare it. * ov-flt-re-diag.cc (octave_float_diag_matrix::sqrt): New method. * ov-flt-re-diag.h: Declare it. * ov-cx-diag.cc (octave_complex_diag_matrix::sqrt): New method. * ov-cx-diag.h: Declare it. * ov-flt-cx-diag.cc (octave_float_complex_diag_matrix::sqrt): New method. * ov-flt-cx-diag.h: Declare it. 2009-02-20 John W. Eaton <jwe@octave.org> * dynamic-ld.cc (octave_dynamic_loader::do_load_mex): Clear and reload mex file if it is out of date. Don't check path for file. * pt-bp.cc (tree_breakpoint::visit_octave_user_script, tree_breakpoint::visit_octave_user_function): Don't panic. Call accept on command list if it exists. 2009-02-20 Jaroslav Hajek <highegg@gmail.com> * ov-base-mat.cc (octave_base_matrix<MT>::do_index_op): Correctly compute all-scalar index. * ov-cell.cc (octave_cell::is_sorted, octave_cell::is_sorted_rows): New methods. (octave_cell::octave_cell (const Array<std::string>&)): New constructor. * ov-cell.h: Declare them. * ov-cell.cc (octave_cell::sort): Create result already with cellstr_cache. * strfns.cc (Fstrcmp): Use special code when dealing with cellstr arrays. 2009-02-20 John W. Eaton <jwe@octave.org> * ov-base-mat.cc (octave_base_matrix<MT>::assign): Correctly compute all-scalar index. * symbtab.cc (symbol_table::stash_dir_name_for_subfunctions): New function. * symtab.h: Provide decl. * parse.y (load_fcn_from_file): Call it after parsing a function. 2009-02-19 Jaroslav Hajek <highegg@gmail.com> * ov-cell.h (octave_cell::cellstr_cache): New field. (octave_cell::clear_cellstr_cache, octave_cell::make_cellstr_cache, octave_cell::assign, octave_cell::delete_elements, octave_cell::mex_get_data): New methods. (octave_cell::is_cellstr): Reuse cellstr cache if possible, create if successful. (octave_cell::cellstr_value): Reuse cellstr cache if possible. (octave_cell::subsasgn): Clear cellstr cache. 2009-02-19 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/lookup.cc (Flookup): Use Array<T>::lookup if possible. Do not compare octave_values directly. Properly check for iscellstr. 2009-02-19 John W. Eaton <jwe@octave.org> * data.cc, graphics.cc, help.cc, lex.l, load-path.cc, parse.y: Consistent doc strings for internal functions. 2009-02-18 John W. Eaton <jwe@octave.org> * ov.cc (convert_to_octave_idx_type_array): New static function. (octave_value::octave_idx_type_vector_value): New function. * ov.h (octave_value::octave_idx_type_vector_value): Provide decl. * DLD-FUNCTIONS/qr.cc (Fqrdelete, Fqrinsert): Use it to convert octave_value object to array of octave_idx_type values. * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): Likewise. * DLD-FUNCTIONS/time.cc (strptime): Likewise. * DLD-FUNCTIONS/quad.cc (Fquad): Eliminate unnecessary cast. * toplev.cc (run_command_and_return_output): Likewise. * strfns.cc (Fstrvcat): Use octave_idx_type and size_t instead of int as needed. (Fstrcmp, Fstrncmp): Use octave_idx_type instead of int as needed. * DLD-FUNCTIONS/hex2num.cc (Fhex2num, Fnum2hex): Use union to avoid reinterpret_cast and GCC warning. * mex.cc (call_mex): Declare local nargout variable volatile to avoid "maybe clobbered by vfork" warning from GCC. * ov-cx-mat.cc (xabs): Comment out unused static function. * ov-flt-cx-mat.cc (xabs): Ditto. * c-file-ptr-stream.cc (c_file_ptr_buf::seekoff, c_file_ptr_buf::seepos, c_zfile_ptr_buf::seekoff, c_zfile_ptr_buf::seepos): Avoid unused paramter warnings. 2009-02-18 Jaroslav Hajek <highegg@gmail.com> * data.cc (Fresize): Allow arbitrary number of parameters. Improve documentation. 2009-02-17 Benjamin Lindner <lindnerb@users.sourceforge.net> * file-io.cc: (Fmkstemp): Use mkstemps if it is available and mkstemp is missing. 2009-02-17 Olaf Till <olaf.till@uni-jena.de> * DLD-FUNCTIONS/lsode.cc, DLD-FUNCTIONS/daspk.cc, DLD-FUNCTIONS/dassl.cc, DLD-FUNCTIONS/dasrt.cc: Documentation fixes. 2009-02-17 Kai Habel <kai.habel@gmx.de> * DLD-FUNCTIONS/convhulln.cc (Fconvhulln): Compute convex hull volume and return it as second output. New tests. 2009-02-17 John W. Eaton <jwe@octave.org> * ov-fcn.h (octave_function::octave_function): Initialize data members. (octave_function::dispatch_class): No longer virtual. Replace with version from ov-usr-fcn.h. (octave_function::xdispatch_class, octave_function::stash_dispatch_class): Move here from ov-usr-fcn.h. (octave_function::mark_as_private_function, octave_function::is_private_function, octave_function::is_private_function_of_class): New functions. (octave_function::private_function): New data member. * ov-usr-fcn.h (octave_user_function::xdispatch_class, octave_user_function::stash_dispatch_class, octave_user_function::dispatch_class): Delete. * ov-usr-fcn.cc (octave_user_function::octave_user_function): Don't initialize xdispatch_type. * symtab.cc (symbol_table::fcn_info::fcn_info_rep::load_private_function): If private directory is subdirectory of class directory, qmark function as a private directory of the class. * ov-class.cc (octave_class::in_class_method): Also return true for functions that are private to a class. (octave_class::subsasgn): If not in class method, look for subsasgn method. If not found, or if not in a class method, perform default struct-style subscripted indexing. * ov-class.h (octave_class::empty_clone): Preserve fields and class name. * oct-map.h (Octave_map::Octave_map (const string_vector&): New constructor. * ov-class.cc (octave_class::subsref): If indexing directly and result is map, return class object, not simple struct. * symtab.cc (symbol_table::fcn_info::fcn_info_rep::load_private_function): Pass dir_name to load_fcn_from_file. 2009-02-17 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/data.cc (NATIVE_REDUCTION): Add BOOL_FCN argument. (NATIVE_REDUCTION_1): Check integer overflow flags and possibly gripe. (Fsum): Reflect change. (Fcumsum): USE NATIVE_REDUCTION. * gripes.cc (gripe_native_integer_math_truncated): New function. 2009-02-17 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/max.cc (Fcummin, Fcummax): Improve inline docs. 2009-02-17 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/max.cc (MINMAX_DOUBLE_SBODY): New macro. (MINMAX_DOUBLE_BODY): Move part of code to MINMAX_DOUBLE_SBODY. (MINMAX_SINGLE_SBODY): New macro. (MINMAX_SINGLE_BODY): Move part of code to MINMAX_DOUBLE_SBODY. (MINMAX_INT_SBODY): New macro. (MINMAX_INT_BODY): Move part of code to MINMAX_DOUBLE_SBODY. (CUMMINMAX_BODY): New macro. (Fcummin, Fcummax): New DLD functions. 2009-02-17 John W. Eaton <jwe@octave.org> * octave.gperf: Eliminate whitespace to allow gperf 2.7.2 to work. * file-io.cc (Ffscanf, Fsscanf): Check error_state after call to octave_stream::scanf. (Ffgetl): Check error state after call to octave_stream::getl. (Ffgets): Check error state after call to octave_stream::gets. * oct-stream.cc (octave_base_stream::do_gets, octave_base_stream::do_scanf): Disallow reading from stdin when running interactively. * toplev.cc (octave_config_info): Add CARBON_LIBS, X11_INCFLAGS, and X11_LIBS to the struct. * oct-conf.h.in (OCTAVE_CONF_CARBON_LIBS, OCTAVE_CONF_X11_INCFLAGS, OCTAVE_CONF_X11_LIBS): New macros. 2009-02-17 Thomas Treichl <Thomas.Treichl@gmx.net> * Makefile.in (octave$(EXEEXT)): Link with CARBON_LIBS. 2009-02-16 John W. Eaton <jwe@octave.org> * lex.l (next_token_can_follow_bin_op): Push all characters read on to buffer stack. * genprops.awk (emit_source): Don't use + to concatenate strings. 2009-02-16 Jaroslav Hajek <highegg@gmail.com> * data.cc (NATIVE_REDUCTION): Use boolNDArray::any for native bool summation, boolNDArray::sum for double-valued. 2009-02-16 Jaroslav Hajek <highegg@gmail.com> * ov-base-mat.cc (octave_base_matrix<MT>::assign (const octave_value_list&, typename MT::element_type): Fix invalid index. * ov-re-mat.cc (default_numeric_demotion_function): Use float_array_value instead of float_matrix_value. 2009-02-16 John W. Eaton <jwe@octave.org> * input.cc (gnu_readline): Use fputs instead of fprintf. 2009-02-15 John W. Eaton <jwe@octave.org> * defun.cc, defun-int.h, defun-dld.h (DEFUN_INTERNAL, DEFCONSTFUN_INTERNAL, DEFUNX_INTERNAL, DEFUN_DLD_INTERNAL, DEFUNX_DLD_INTERNAL, install_builtin_function, install_dld_function, install_mex_function): Delete IS_TEXT_FCN arg. Fix all uses. (DEFMD, DEFUN_TEXT): Delete. * mkbuiltins, mkgendoc: Adapt to DEFUN macro changes. * lex.h, lex.l (lexer_flags::at_beginning_of_statement): New data member. Set it as needed in rules. (is_keyword_token): Handle lexer_flags::at_beginning_of_statement. (next_token_can_follow_bin_op, looks_like_command_arg): New functions. (handle_identifier): Use them to determine Don't check is_command_name or is_rawcommand_name. * parse.y (statement): Recognize word_list_cmd here. (expression): Not here. * lex.l (handle_string): Delete arg TEXT_STYLE. (BIN_OP_RETURN, XBIN_OP_RETURN): New arg, BOS. Change all uses. * lex.h, lex.l (lexer_flags::doing_raw_command): Delete data member and all uses. * debug.cc, dirfns.cc, error.cc, input.cc, lex.l, load-path.cc, load-save.cc, oct-hist.cc, ov-class.cc, pager.cc, parse.y, pr-output.cc, sysdep.cc, utils.cc, variables.cc: Replace all uses of DEFCMD with DEFUN. * variables.cc (command_set, rawcommand_set): Delete static variables. (mark_as_command, unmark_command, is_command_name, mark_as_rawcommand, unmark_raw_command, is_rawcommand_name): Delete. (Fmark_as_command, Funmark_command, Fiscommand, Fmark_as_rawcommand, Funmark_rawcommand, Fisrawcommand): Convert to .m files and move to scripts/deprecated. * variables.h (mark_as_command, is_command_name, is_marked_as_rawcommand, mark_as_rawcommand, unmark_rawcommand, is_rawcommand_name): Delete decls. * lex.h, lex.l (lexer_flags.looking_at_object_index): Now a std::list<bool> object instead of an int. Push TRUE to list at start of object index. Push FALSE at beginning of matrix list. Pop value at end of object index or matrix list. (lexer_flags.looking_for_object_index): New data member. Set it as needed in rules. (inside_any_object_index): New function. * parse.y (begin_obj_idx, cancel_obj_idx): Delete non-terminals and all uses. 2009-02-13 Ben Abbott <bpabott@mac.com> * graphics.h.in (class axes::properties): Initialize ticklength. * graphics.cc (default_axes_ticklength): New function. 2009-02-13 John W. Eaton <jwe@octave.org> * oct-stream.cc (octave_base_stream::do_gets): Handle CRLF and CR. * toplev.cc (do_octave_atexit): Only save history if Vsaving_history is true. 2009-02-12 John W. Eaton <jwe@octave.org> * data.cc, ov-base-diag.h, ov-base-mat.h, ov-base-scalar.h, ov-base-sparse.h, ov-base.cc, ov-base.h, ov-perm.h, ov-range.h, ov.h: Rename internal issorted and issorted_rows functions to is_sorted and is_sorted_rows. * ov-base-diag.h, ov-base-mat.h, ov-base-scalar.h, ov-base.h, ov-cell.h, ov-perm.h, ov-range.h, ov.h, data.cc, ov-base.cc, ov-cell.cc: Rename all uses of sortrows_idx to sort_rows_idx. * TEMPLATE-INST/Array-tc.cc: Don't instantiate sort functions for Arrays of octave_value objects. (octave_sort<octave_value>::ascending_compare, octave_sort<octave_value>::descending_compare): Delete. * ov.h (octave_value::cellstr_value): New function. * ov-base.cc, ov-base.h (octave_base_value::cellstr_value): New function. * ov-cell.h (octave_cell::cellstr_value, octave_cell::sort, octave_cell::sortrows_idx): New functions * Cell.h, Cell.cc (Cell::Cell (Array<std::string>)): New constructor. * TEMPLATE-INST/Array-tc.cc: Undo previous change. (octave_sort<octave_value>::ascending_compare, octave_sort<octave_value>::descending_compare): Pass args by const reference instead of value. * version.h (OCTAVE_VERSION): Now 3.1.52+. (OCTAVE_API_VERSION): Now api-v34+. * TEMPLATE-INST/Array-tc.cc (octave_sort<octave_value>::ascending_compare, octave_sort<octave_value>::descending_compare): Delete unused template specializations. Use NO_INSTANTIATE_ARRAY_SORT instead of INSTANTIATE_ARRAY_SORT for octave_values. 2009-02-11 Thomas Treichl <Thomas.Treichl@gmx.net> * gl-render.h: Use HAVE_FRAMEWORK_OPENGL. * gl-render.cc (opengl_tesselator, opengl_renderer::draw, opengl_renderer::init_marker): Use HAVE_FRAMEWORK_OPENGL. 2009-02-11 Jaroslav Hajek <highegg@gmail.com> * ov.h (octave_value::issorted, octave_value::sortrows_idx, octave_value::issorted_rows): New methods. * ov.cc (octave_base_value::issorted, octave_base_value::sortrows_idx, octave_base_value::issorted_rows): New methods. * ov.cc: Declare them. * ov-base-mat.h (octave_base_matrix::issorted, octave_base_matrix::sortrows_idx, octave_base_matrix::issorted_rows): New methods. * ov-base-diag.h (octave_base_diag::issorted, octave_base_diag::sortrows_idx, octave_base_diag::issorted_rows): New methods. * ov-perm.h (octave_perm_matrix::issorted, octave_perm_matrix::sortrows_idx, octave_perm_matrix::issorted_rows): New methods. * ov-range.h (octave_range::issorted, octave_range::sortrows_idx, octave_range::issorted_rows): New methods. * data.cc (F__sortrows_idx__, Fissorted): New defuns. 2009-02-11 John W. Eaton <jwe@octave.org> * toplev.cc (octave_config_info): Add octetcdir to the struct. * defaults.h.in (OCTAVE_OCTETCDIR): New macro. 2009-02-10 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/__pchip_deriv__.cc (F__pchip_deriv__): Add support for computing pchip derivatives along rows of matrix. Eliminate redundant copying by using const args where appropriate. 2009-02-09 John W. Eaton <jwe@octave.org> * version.h (OCTAVE_VERSION): Now 3.1.52. (OCTAVE_RELEASE_DATE): Now 2009-02-09. (OCTAVE_COPYRIGHT): Update year. * load-path.cc (dir_info::update, dir_info::initialize): Likewise, to allow some functionality if getcwd fails. * toplev.cc (main_loop): Also catch octave_execution_exception. * DLD-FUNCTIONS/dispatch.cc: Comment out troublesome tests. * DLD-FUNCTIONS/eigs.cc: Increase tolerance to 1e-11 on all tests. * lex.l (lexical_feedback::looking_at_decl_list): New data member. * lex.l (lexical_feedback::init): Initialize it. (handle_identifier): Also force local variable if looking_at_decl_list. * parse.y (parsing_decl_list): New non-terminal. (declaration): Use it. Set lexer_flags.looking_at_decl_list to false after parsing the declaration. 2009-02-09 Jaroslav Hajek <highegg@gmail.com> * TEMPLATE-INST/Array-tc.cc: Reflect changes in octave_sort. 2009-02-08 John W. Eaton <jwe@octave.org> * octave.cc (initialize_pathsearch): Delete. (octave_main): Don't call initialize_pathsearch. 2009-02-07 John W. Eaton <jwe@octave.org> * parse.y (eval_string): Use the one true evaluator. 2009-02-06 John W. Eaton <jwe@octave.org> * Makefile.in (INCLUDES): Include oct-hdf5.h in the list. * Makefile.in (oct-gperf.h): Don't use pipeline to process gperf output. 2009-02-05 John W. Eaton <jwe@octave.org> * symtab.cc (symbol_table::fcn_info::cn_info_rep::xfind): New function. (symbol_table::fcn_info::cn_info_rep::find): Use it to avoid recursive call. * graphics.cc (Fdrawnow): Return after errors. Don't strip trailing directory separator from name used in call to file_stat. * DLD-FUNCTIONS/eigs.cc (Feigs): Avoid warnings about ambiguous else. Style fixes. Return after errors. 2009-02-05 Jaroslav Hajek <highegg@gmail.com> * oct-map.cc (Octave_map::index): Optimize. 2009-02-05 Jaroslav Hajek <highegg@gmail.com> * OPERATORS/op-cm-cs.cc: Use scalar_value in scalar-to-matrix indexed assignments. * OPERATORS/op-fcm-fcs.cc: Ditto. * OPERATORS/op-fm-fs.cc: Ditto. * OPERATORS/op-m-s.cc: Ditto. * OPERATORS/op-int.h (OCTAVE_MS_INT_ASSIGN_OPS): Use homogeneous integer scalar-to-matrix assignment. (OCTAVE_MM_INT_ASSIGN_OPS): Use homogeneous integer matrix-to-matrix assignment. * Cell.h (Cell::index): Remove direct idx_vector overloads. (Cell::assign): Remove direct idx_vector overloads. (Cell::delete_elements): Remove direct idx_vector overloads. * Cell.cc (Cell::index (const octave_value_list&)): Call ArrayN<octave_value>::index. * oct-map.h (Octave_map::index): Remove direct idx_vector overloads. * oct-map.cc (Octave_map::index): Ditto. * ov-base-mat.cc (octave_base_mat::do_index_op): Optimize scalar indexing case. (octave_base_mat::assign (const octave_value_list&, const MT&)): Specialize variable argument number. (octave_base_mat::assign (const octave_value_list&, const typename MT::element_type&)): New method overload with optimized scalar indexing case. * ov-cell.cc (octave_base_matrix<Cell>::do_index_op, octave_base_matrix<Cell>::assign, octave_base_matrix<Cell>::delete_elements): Specialize. (octave_cell::assign (const_octave_value_list, const octave_value&): Delete method. * ov-cell.h: Reflect change. * ov-cx-mat.cc (octave_complex_matrix::assign): Delete overloads. * ov-cx-mat.h: Reflect changes. * ov-flt-cx-mat.cc (octave_float_complex_matrix::assign): Delete overloads. * ov-flt-cx-mat.h: Reflect changes. * ov-list.cc (octave_list::do_index_op): Simplify. * ov-struct.cc (octave_struct::do_index_op): Simplify. * pt-eval.cc (tree_evaluator::visit_simple_for_command): Optimize traversing a row vector. 2009-02-05 John W. Eaton <jwe@octave.org> * variables.cc (Vignore_function_time_stamp): Eliminate unused static variable. * debug.cc (get_file_line): Override default precedence in logical expression. * ov-null-mat.cc (default_null_str_numeric_conversion_function, default_null_sq_str_numeric_conversion_function, default_null_matrix_numeric_conversion_function): Avoid unused variable warning. * ov-flt-re-diag.cc (octave_float_diag_matrix::save_binary): Avoid unused parameter warning. * pt-eval.cc (tree_evaluator::visit_if_clause): Likewise. * ov-typeinfo.cc (octave_value_typeinfo::do_register_type): Likewise. * ov-base.cc (octave_base_value::subsref (const std::string&, const std::list<octave_value_list>&, bool): Likewise. * ov-flt-cx-diag.cc (octave_float_complex_diag_matrix::save_binary): Likewise. * oct-hdf5.h: New file. * ls-hdf5.cc, ov-base.h, ov.h: Include oct-hdf5.h instead of hdf5.h. * ls-hdf5.h: Include oct-hdf5.h. * load-save.cc: Include ls-hdf5.h instead of hdf5.h. * ov-base-sparse.cc, load-save.cc: Don't protect #include "ls-hdf5.h" with #ifdef. 2009-02-04 Kai Habel <kai.habel@gmx.de> * gl-render.cc (opengl_renderer::draw (surface::properties)): Normalize surface normals. Correct calculation of diffuse lighting. * gl-render.cc (opengl_renderer::draw (patch::properties)): Correct calculation of diffuse lighting. 2009-02-04 John W. Eaton <jwe@octave.org> * help.cc (do_which): If NAME is not in the symbol table, look for a function file in the load path. (raw_help_from_file): Unwind-protect and set reading_script_file. * pt-loop.h, pt-loop.cc (evaluating_looping_command): Delete global variable and all uses. * parse.y, parse.h (evaluating_function_body): Delete global variable and all uses. (make_break_command, make_continue_command, make_return_command): Use tree_evaluator::in_fcn_or_script_body and tree_evaluator::in_loop_command instead of evaluating_function_body and evaluating_looping_command. * pt-eval.h (tree_evaluator::in_function_or_script_body): Delete member variable and all uses. (tree_evaluator::reset): Delete function and all uses. * pt-eval.cc, pt-eval.h (tree_evaluator::in_fcn_or_script_body, tree_evaluator::in_loop_command): New static variables. (tree_evaluator::visit_simple_for_command, tree_evaluator::visit_complex_for_command, tree_evaluator::visit_while_command, tree_evaluator::visit_do_until_command): Unwind-protect and set tree_evaluator::in_loop_command instead of evaluating_looping_command. (tree_evaluator::visit_statement): Only call echo_code if evaluating function or script and (Vecho_executing_commands & ECHO_FUNCTIONS). Use tree_evaluator::in_fcn_or_script_body instead of evaluating_function_body. * ov-usr-fcn.cc (octave_user_script::do_multi_index_op): octave_user_function::do_multi_index_op): Unwind-protect and set tree_evaluator::in_fcn_or_script_body. * pt-stmt.cc, pt-stmt.h (tree_statement::echo_code): Rename from maybe_echo_code. Simplify. 2009-02-04 Jaroslav Hajek <highegg@gmail.com> * pt-loop.h (tree_simple_for_command::do_for_loop_once, tree_complex_for_command::do_for_loop_once): Remove obsolete decls. * pt-loop.cc (quit_loop_now): Remove obsolete method. * pt-eval.cc (DO_ND_LOOP): Delete macro. (tree_evaluator::visit_simple_for_command): Use the generic do_index_op for iterating matrices. 2009-02-04 John W. Eaton <jwe@octave.org> New evaluator and debugger derived from tree-walker class. * pt-eval.h, pt-eval.cc: New files. Parse tree evaluator code adapted from eval member functions in classes derived from tree_command. * Makefile.in (PT_INCLUDES, PT_SRC): Add them to the lists * pt-cmd.cc (tree_function_def::eval): Delete. * pt-cmd.h: Delete decl. (tree_command::eval): Delete pure virtual function. (tree_no_op_command::eval): Delete. (tree_function_def::function): Return octave_value, instead of pointer to octave_function. Change all uses. * pt-except.cc (do_catch_code, tree_try_catch_command::eval, do_unwind_protect_cleanup_code, tree_unwind_protect_command::eval): Delete. * pt-except.h: Delete decls. * pt-jump.cc (tree_break_command::eval, tree_return_command::eval, tree_continue_command::eval): Delete. * pt-jump.h: Delete decls. * pt-loop.cc (DO_ND_LOOP): Delete macro. (tree_while_command::eval, tree_do_until_command::eval, tree_simple_for_command::do_for_loop_once, tree_simple_for_command::eval, tree_complex_for_command::do_for_loop_once, tree_complex_for_command::eval): * pt-loop.h: Delete decls. * pt-select.cc (tree_if_clause::eval, tree_if_command_list::eval, tree_if_command::eval, tree_switch_case::eval, tree_switch_case_list::eval, tree_switch_command::eval): Delete. * pt-select.h: Delete decls. (class tree_if_clause, class tree_switch_case): Derive from tree. Handle line and column in constructors. * pt-stmt.cc (tree_statement::eval): Delete * pt-stmt.h: Delete decl. * pt-stmt.cc, pt-stmt.h (tree_statement::is_command, tree_statement::is_expression, tree_statement::line, tree_statement::column): Now const. * pt-stmt.cc (tree_statement::set_print_flag, tree_statement::is_end_of_fcn_or_script): New functions. * pt-stmt.h: Provide decl. (set_breakpoint, delete_breakpoint, is_breakpoint): New function. (bp): New member variable. (print_result): Delete member variable. (tree_statement_list::anon_function_body): New member variable. (tree_statement_list::mark_as_anon_function_body, tree_statement_list::is_anon_function_body, tree_statement_list::is_script_body): New functions. * pt-decl.cc (tree_decl_init_list::eval, tree_decl_command::accept, tree_global_command::do_init, tree_global_command::eval, tree_static_command::do_init, tree_static_command::eval): Delete. * pt-decl.h: Delete decls. (tree_decl_elt::eval_fcn): Delete typedef. * pt-decl.cc (tree_global_command::accept, tree_static_command::accept): New functions. * pt-stmt.cc (tree_statement::print_result): Move here from pt-stmt.h. Return true if expr is printable. * ov-base.cc (Vsilent_functions): Delete. (octave_base_value::print_with_name): Don't check evaluating_function_body && Vsilent_functions here. * ov-class.cc (octave_class::print_with_name): Likewise. * ov-base.h (Vsilent_functions): Delete decl. * pt-eval.cc (Fsilent_functions): Move here from ov-base.cc. (Vsilent_functions): New static variable. * sighandlers.cc (user_abort): Set tree_evaluator::debug_mode here. * pt.h (tree::bp): Rename from tree::break_point. (tree::set_breakpoint, tree::delete_breakpoint, tree::is_breakpoint): No longer virtual. * input.cc (get_debug_input): Use current_evaluator and tree-walker to evaluate command. * ov-usr-fcn.cc (octave_user_script::do_multi_index_op): Likewise. * toplev.cc (main_loop): Likewise. * parse.y (eval_string): * input.h, input.cc (Vdebugging_current_line): Delete. (get_debug_input): Use tree_evaluator::debug_line instead of Vdebugging_current_line. * ov-usr-fcn.cc (octave_user_function::do_multi_index_op): Handle inline functions and anonymous functions as single expressions. * parse.y (eval_string): Likewise. * parse.y (make_do_until_command): Rename first argument from do_tok to until_tok. (loop_command): Pass UNTIL token instead of DO token to make_do_until_command. (make_elseif_clause): New arg, elseif_tok. Pass line and column info to tree_if_clause constructor. (elseif_clause): Pass ELSEIF token to make_elseif_clause. (make_switch_case): New arg, case_tok. Pass line and column info to tree_switch_case constructor. (switch_case): Pass CASE token to make_switch_case. (make_script): New arg end_script. Append it to cmds. (script): Create no-op command for end of script and pass it to make_script. (start_function): New arg, end_function. Append it to body. (function2): Pass end_function to start_function. (make_end): New function. (function_end): Declare as tree_statement_type. Create no-op command for end of script. (make_anon_fcn_handle): Mark body as anonymous function. (set_stmt_print_flag): Set print flag for all separator types * parse.y (fold (tree_binary_expression*), fold (tree_unary_expression *), finish_colon_expression, finish_matrix): Call rvalue1 instead of rvalue. Stash line number in new tree_constant object. * debug.h (bp_table::have_breakpoints): New static function. (bp_table::do_have_breakpoints): New member function. * debug.cc (bp_table::do_add_breakpoint, bp_table::do_remove_breakpoint, bp_table::do_remove_all_breakpoints_in_file, bp_table::do_remove_all_breakpoints): Call bp_table::have_breakpoints to set tree_evaluator::debug_mode. (Fdbnext): Delete function. Alias to dbstep. (Fdbquit, Fdbcont): Set tree_evaluator::dbstep_flag to zero. (Fdbstep): Rewrite to use tree_evaluator::dbstep_flag instead of tree::break_next, tree::last_line, tree::break_function, and tree::last_break_function. (Fdbwhere): Use tree_evaluator::debug_line and tree_evaluator::debug_column to get current line and column info. Don't print column if it is less than zero. * pt.cc, pt.h (tree::break_next, tree::last_line, tree::last_break_function, tree::break_function, tree::break_statement): Delete. * pt-bp.cc (tree_breakpoint::visit_global_command, tree_breakpoint::visit_static_command, tree_breakpoint::take_action (tree_statement&)): New functions. * pt-bp.h: Provide decls. * pt-bp.h (tree_walker::visit_global_command, tree_walker::visit_static_command): New pure virtual functions. (tree_walker::visit_decl_command): Delete. * pt-bp.cc (tree_breakpoint::visit_decl_command): Delete. * pt-bp.h: Delete decl. (MAYBE_DO_BREAKPOINT): Delete macro and all uses. * pt-bp.cc (tree_breakpoint::visit_no_op_command): Do nothing. (tree_breakpoint::visit_argument_list, tree_breakpoint::visit_binary_expression, tree_breakpoint::visit_colon_expression, tree_breakpoint::visit_decl_elt, tree_breakpoint::visit_decl_init_list, tree_breakpoint::visit_octave_user_script, tree_breakpoint::visit_octave_user_function, tree_breakpoint::visit_octave_user_function_header, tree_breakpoint::visit_octave_user_function_trailer, tree_breakpoint::visit_identifier, tree_breakpoint::visit_index_expression, tree_breakpoint::visit_matrix, tree_breakpoint::visit_cell, tree_breakpoint::visit_multi_assignment, tree_breakpoint::visit_anon_fcn_handle, tree_breakpoint::visit_constant, tree_breakpoint::visit_fcn_handle, tree_breakpoint::visit_parameter_list, tree_breakpoint::visit_postfix_expression, tree_breakpoint::visit_prefix_expression, tree_breakpoint::visit_return_list, tree_breakpoint::visit_simple_assignment): Call panic_impossible since breakpoints aren't set on expressions. (tree_breakpoint::visit_if_clause): Fold into visit_if_command_list. (tree_breakpoint::visit_switch_case): Fold into visit_switch_case_list. (tree_breakpoint::visit_try_catch_command, tree_breakpoint::visit_unwind_protect_command): Don't set breakpoint on command itself, the the statements it contains. (tree_breakpoint::visit_global_command, tree_breakpoint::visit_static_command): Call do_decl_command to do actual work. (tree_breakpoint::visit_while_command, tree_breakpoint::visit_do_until_command, tree_breakpoint::visit_simple_for_command, tree_breakpoint::visit_complex_for_command, tree_breakpoint::visit_statement, tree_breakpoint::visit_statement_list, tree_breakpoint::visit_switch_case_list): Set breakpoints at appropriate places. * pt-pr-code.h, pt-pr-code.cc (tree_print_code::visit_global_command, tree_print_code::visit_static_command, tree_print_code::do_decl_command): New functions. (tree_print_code::visit_decl_command): Delete. * pt-check.h, pt-check.cc (tree_checker::visit_global_command, tree_checker::visit_static_command, tree_checker::do_decl_command): New functions. (tree_checker::visit_decl_command): Delete. * pt-select.cc (tree_switch_case::label_matches): Call rvalue1 instead of rvalue. * pt-exp.h, pt-exp.cc (tree_expression::rvalue1): New function. (tree_expression::rvalue (void)): Delete. (tree_expression::is_logically_true): Call rvalue1 instead of rvalue. * pt-fcn-handle.h, pt-fcn-handle.cc (tree_fcn_handle::rvalue1, tree_anon_fcn_handle::rvalue1): New functions. (tree_fcn_handle:rvalue (void), tree_anon_fcn_handle::rvalue1 (void)): Delete. (tree_fcn_handle::rvalue (int), tree_anon_fcn_handle_rvalue (int)): Call rvalue1 instead of rvalue. * pt-idx.h, pt-idx.cc (tree_index_expression::rvalue1): New function. (tree_index_expression::rvalue (void)): Delete. (tree_index_expression::get_struct_index, tree_index_expression::rvalue (int)): Call rvalue1 instead of rvalue. * pt-mat.h, pt-mat.cc (tree_matrix::rvalue1): New function. (tree_matrix::rvalue (void)): Delete. (tm_row_const::tm_row_const_rep::init, tree_matrix::rvalue (int)): Call rvalue1 instead of rvalue. * pt-misc.cc (tree_parameter_list::convert_to_const_vector): Call rvalue1 instead of rvalue. * pt-arg-list.cc (tree_argument_list::convert_to_const_vector): Likewise. * pt-unop.h, pt-unop.cc (tree_prefix_expression::rvalue1, tree_postfix_expression::rvalue1): New functions. (tree_prefix_expression::rvalue (void), tree_postfix_expression::rvalue (void)): Delete. (tree_prefix_expression::rvalue (int), tree_postfix_expression::rvalue (int)): Call rvalue1 instead of rvalue. * pt-id.h, pt-id.cc (tree_identifier::rvalue1): New function. (tree_identifier::rvalue (void)): Delete. * pt-assign.h, pt-assign.cc (tree_simple_assignment::rvalue1, tree_multi_assignment::rvalue1): New functions. (tree_simple_assignment::rvalue (void), tree_multi_assignment::rvalue (void): Delete. (tree_simple_assignment::rvalue (int)): Call rvalue1 instead of rvalue. * pt-binop.h, pt-binop.cc (tree_binary_expression::rvalue1, tree_boolean_expression::rvalue1): New functions. (tree_binary_expression::rvalue (void), tree_boolean_expression::rvalue (void)): Delete. (tree_binary_expression::rvalue (int), tree_boolean_expression::rvalue (int)): Call rvalue1 instead of rvalue. * pt-cbinop.h, pt-cbinop.cc (tree_compound_binary_expression::rvalue1): New function. (tree_compound_binary_expression::rvalue (void)): Delete. * pt-cell.h, pt-cell.cc (tree_cell::rvalue1): New function. (tree_cell::rvalue (void)): Delete. (tree_cell::rvalue (int)): Call rvalue1 instead of rvalue. * pt-colon.h, pt-colon.cc (tree_colon_expression::rvalue1): New function. (tree_colon_expression::rvalue (void)): Delete. (tree_colon_expression::rvalue (int)): Call rvalue1 instead of rvalue. * pt-const.h, pt-const.cc (tree_constant::rvalue1): New function. (tree_constant::rvalue (void)): Delete. (tree_constant::rvalue (int)): Call rvalue1 instead of rvalue. * pt-decl.h, pt-decl.cc (tree_decl_elt::ravlue1): New function. (tree_decl_elt::ravlue (void)): Delete. (tree_decl_elt::eval): Call rvalue1 instead of rvalue. 2009-02-03 Jaroslav Hajek <highegg@gmail.com> * TEMPLATE-INST/Array-tc.cc: Replace vec_index by pointers. 2009-02-02 Jaroslav Hajek <highegg@gmail.com> * ov-re-mat.cc (octave_matrix::abs, octave_matrix::real, octave_matrix::imag, octave_matrix::conj): Use special code. * ov-flt-re-mat.cc (octave_float_matrix::abs, octave_float_matrix::real, octave_float_matrix::imag, octave_float_matrix::conj): Use special code. * ov-cx-mat.cc (octave_complex_matrix::abs, octave_complex_matrix::real, octave_complex_matrix::imag, octave_complex_matrix::conj): Use special code. * ov-flt-cx-mat.cc (octave_float_complex_matrix::abs, octave_float_complex_matrix::real, octave_float_complex_matrix::imag, octave_float_complex_matrix::conj): Use special code. 2009-01-30 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/lookup.cc (Flookup): Add missing check. 2009-01-29 John W. Eaton <jwe@octave.org> * pt-stmt.cc (tree_statement::eval): Check in_function_or_script_body instead of symbol_table::at_top_level () to decide whether to call octave_call_stack::set_statement. * graphics.cc (properties::set_defaults): Also set horizontalalignment, verticalalignmnt, and rotation properties for new label objects here. * ov-base-scalar.cc (octave_base_scalar<ST>::is_true (void) const): Error if scalar is NaN. * ov-base-mat.cc (octave_base_matrix<MT>::is_true (void) const): Likewise, if any element of matrix is NaN. * ov-cell.cc (octave_cell::is_true): New function. * Cell.h (Cell::any_element_is_nan): New function. 2009-01-29 Jaroslav Hajek <highegg@gmail.com> * pr-output.cc: (void octave_print_internal (..., const DiagMatrix& m,...), (void octave_print_internal (..., const ComplexDiagMatrix& m,...), (void octave_print_internal (..., const FloatDiagMatrix& m,...), (void octave_print_internal (..., const FloatComplexDiagMatrix& m,...)): New functions. * pr-output.h: Declare them. * ov-base-diag.cc (octave_base_diag::print_raw): Call octave_print_internal. 2009-01-28 John W. Eaton <jwe@octave.org> * Makefile.in (install, uninstall): Handle SHLLIBPRE and SHLBINPRE library prefixes. From Marco Atzeri <marco_atzeri@yahoo.it>. 2008-01-28 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/regexp.cc (octregexp_list): Don't break for zero length match, but rather advance the index by one character and try again. 2009-01-28 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/lookup.cc (Flookup): Fix doc string. 2009-01-27 John W. Eaton <jwe@octave.org> * load-path.cc (Fcommand_line_path): Rename from Fcommandlinepath. 2009-01-27 Ben Abbott <bpabbott@mac.com> * graphics.cc (convert_position): Handle character units. (default_axes_tick, default_figure_papersize, default_figure_paperposition): New functions. * graphics.h.in (class figure::properties): Use them to initialize papersize, paperposition, xtick, ytick, and ztick properties. 2009-01-27 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/qr.cc (Fqr): Treat empty matrices correctly. 2009-01-26 Thomas Treichl <Thomas.Treichl@gmx.net> * display.cc (display_info::init): Use double instead of CGFloat. Use HAVE_FRAMEWORK_CARBON instead of OCTAVE_USE_OS_X_API. 2009-01-26 John W. Eaton <jwe@octave.org> * load-path.cc (load_path::do_find_fcn): Handle @foo/bar. 2009-01-24 Jaroslav Hajek <highegg@gmail.com> * pt-cell.cc (tree_cell::rvalue): Optimize the single row case. 2009-01-24 Jaroslav Hajek <highegg@gmail.com> * ov-struct.cc (octave_struct::subsasgn): Reshape cs-list on rhs according to the index expression. * ov-cell.cc (octave_cell::subsasgn): Ditto. 2008-12-25 Ben Abbott <bpabbott@mac.com> * load-path.cc (Fcommandlinepath): New function. * load-path.h (load_path::get_command_line_path, load_path::do_get_command_line_path): New functions. 2009-01-24 Ben Abbott <bpabbott@mac.com> * DLD-FUNCTIONS/eigs.cc: eigs.cc: skip tests if ARPACK is missing. 2009-01-25 Søren Hauberg <hauberg@gmail.com> * help.cc (do_get_help_text, raw_help_from_symbol_table): new output to flag the a function is found but not documented. 2009-01-25 Søren Hauberg <hauberg@gmail.com> * help.cc (raw_help_from_file): No longer search for files called 'Contents.m', as this is moved to 'script/help.m'. 2009-01-23 John W. Eaton <jwe@octave.org> * toplev.cc (octave_call_stack::do_goto_caller_frame): Also allow caller frame to be base frame, not just user code. 2009-01-23 Jaroslav Hajek <highegg@gmail.com> * gripes.cc (gripe_indexed_cs_list, gripe_invalid_inquiry_subscript): New functions. * gripes.h: Declare them. * pt-idx.cc: Remove definitions of the above funcs. * ov-cell.cc (octave_cell::subsref): Declare constants as const. (octave_cell::subsasgn): Remove dead branch, declare constants as const. (octave_cell::list_value): Optimize. * ov-struct.cc (octave_struct::subsref): Declare constants as const. (octave_struct::subsasgn): Remove dead branch, declare constants as const. * ov-cs-list.cc (octave_cs_list::octave_cs_list (const Cell&)): Optimize. * oct-obj.cc (octave_value_list::octave_value_list (const std::list<octave_value_list>&)): New constructor. * oct-obj.h: Declare it. * pt-arg-list.cc (convert_to_const_vector): Optimize. * symtab.cc (symbol_table::fcn_info::fcn_info_rep::find): Use const reference to avoid redundant copy. * ov-usr-fcn.cc (octave_user_function::bind_automatic_vars): Optimize. (octave_user_function::octave_all_va_args): Optimize. 2009-01-22 Jaroslav Hajek <highegg@gmail.com> * Cell.h (Cell::Cell (octave_value_list)): Only declare. (Cell::index (*)): Change resize_ok type to bool. * Cell.cc (Cell::Cell (octave_value_list)): Redefine. * oct-obj.h, oct-obj.cc: Change octave_value_list::data to Cell variable, reflect changes. 2009-01-22 John W. Eaton <jwe@octave.org> * help.cc (do_which (std::ostream&, const std::string&), Fwhich): Delete. (do_which (const std::string&, std::string&), F__which__): New functions. * do_which (const std::string&): Call do_which (const std::string&, std::string&) to do the work. 2009-01-22 Søren Hauberg <hauberg@gmail.com> * defun-int.h (print_usage): No longer mark as deprecated. * defun.cc (print_usage): Simply call feval to execute print_usage.m. * help.cc (additional_help_message, display_names_from_help_list, display_symtab_names, simple_help, try_info, help_from_info, display_help_text, display_usage_text, raw_help_from_list, help_from_list, help_from_symbol_table, help_from_file, builtin_help, Fhelp, display_file, do_type, Ftype, first_help_sentence, print_lookfor, Flookfor): Delete. (looks_like_html, raw_help_from_map, raw_help, do_get_help_text, F__operators__, F__keywords__, F__builtins__, file_is_in_dir, F__list_functions__): New functions. (pair_type, map_iter): New typedefs. (operators, keywords): Use pair_type for elements of list. (names): Use map for (keyword, doc) lists. (make_name_list): Sprinkle with const. * help.h (display_help_text, display_usage_text, additional_help_message): Delete decls. 2009-01-22 John W. Eaton <jwe@octave.org> * toplev.cc (octave_config_info): Check OCTAVEUSE_OS_X_API instead of __APPLE__ && __MACH__. * display.cc (display_info::init): Get info for Windows and OS X systems. 2009-01-22 Jaroslav Hajek <highegg@gmail.com> * pt-idx.cc (tree_index_expression::lvalue): Correct tmpi when seeing a plain struct component. * ov-struct.cc (octave_struct::subsasgn): Use proper type substr in empty_conv. 2009-01-22 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/qr.cc: Remove HAVE_QRUPDATE check. * DLD-FUNCTIONS/chol.cc: Ditto. 2009-01-21 John W. Eaton <jwe@octave.org> * Makefile.in (display.o): Add X11_INCFLAGS to CPPFLAGS. (octave$(EXEEXT)): Link with X11_LIBS. * display.h, display.cc: New files. * graphics.cc (default_screendepth, default_screensize, default_screenpixelsperinch): New functions. * graphics.h.in (class root_figure::properties): New property, screendepth. Use default_screensize to initialize screensize property. Use default_screenpixelsperinch to initialize screenpixelsperinch property. * graphics.cc (properties::init): Set default xlabel, ylabel, zlabel, and title properties that differ from default text properties. 2009-01-21 Jaroslav Hajek <highegg@gmail.com> * OPERATORS/op-range.cc: Define & register range-scalar ops. 2009-01-21 Jaroslav Hajek <highegg@gmail.com> * ov.h (octave_value::subsref (..., bool auto_add)): New method. (octave_value::next_subsref (bool auto_add, ...)): New method. * ov.cc (octave_value::next_subsref (bool auto_add, ...)): New method. * ov-base.h (octave_base_value::subsref (..., bool auto_add)): New virtual method. * ov-base.cc (octave_base_value::subsref (..., bool auto_add)): New virtual method. * ov-cell.cc (octave_cell::subsref (..., bool auto_add)): New virtual method. * ov-cell.h (octave_cell::subsref (..., bool auto_add)): Declare it. * ov-struct.cc (octave_struct::subsref (..., bool auto_add)): New virtual method. (octave_struct::subsref (const std::string& type, const std::list<octave_value_list>& idx)): Do not allow resizing. * ov-struct.h (octave_struct::subsref (..., bool auto_add)): Declare it. * ov-struct.cc (octave_struct::dotref (..., bool auto_add)): New virtual method. * ov-struct.h (octave_struct::dotref (..., bool auto_add)): Declare it. * pt-idx.cc (tree_index_expression::rvalue): Do not reevaluate already evaluated part of the index chain. (tree_index_expression::rvalue): Do not reevaluate already evaluated part of the index chain. Do not actually perform trailing indexing. Do not allow indexing cs-lists. 2009-01-20 John W. Eaton <jwe@octave.org> * file-io.cc (Ffstat): New function. 2009-01-17 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/qr.cc (Fqrupdate, Fqrinsert, Fqrdelete, Fqrshift): Reflect changes in liboctave. * DLD-FUNCTIONS/chol.cc (Fcholupdate, Fcholinsert): Reflect changes in liboctave. 2009-01-19 Jaroslav Hajek <highegg@gmail.com> * ov.h (octave_value::make_unique (int)): New method. * oct-obj.h (octave_value_list::octave_value_list (const Cell&)): New constructor. * ov-cell.cc (octave_cell::subsasgn): Allow composed {} indexing in multi-assignments. Optimize. * ov-struct.cc (octave_struct::subsasgn): Correct composed {} indexing in multi-assignments. Optimize & fix bugs. * pt-idx.cc (tree_index_expression::lvalue): Rewrite to allow specifying cs-list anywhere in index chain, be more robust. 2009-01-19 John W. Eaton <jwe@octave.org> * lex.l (grab_comment_block): If not reading input from a file, bail out at first newline inside a comment. * lex.l (lexer_debug_flag): New static variable. (F__lexer_debug_flag__): New function. (LEXER_DEBUG): New macro. Use it in all patterns. (DISPLAY_TOK_AND_RETURN): Also display token if lexer_debug_flag is set. (process_comment): Display comment if lexer_debug_flag is set. (display_character, display_state, lexer_debug): New static functions. (xunput): Display character if lexer_debug_flag is set. 2009-01-17 Jaroslav Hajek <highegg@gmail.com> * ov.h: Describe usage of storable_value and make_storable_value. * ov.cc: Remove FIXME comment. 2009-01-15 John W. Eaton <jwe@octave.org> * data.cc (Freshape): Include mismatched dimensions in error message. From Robert Millan <rmh@aybabtu.com>. 2009-01-14 Jaroslav Hajek <highegg@gmail.com> * ov.cc (octave_value::maybe_economize): New method. (octave_value::non_null_value): rename to storable_value. (octave_value::make_non_null_value): rename to make_storable_value. * ov-base.h (octave_base_value::maybe_economize): New method. * ov-base-mat.h (octave_base_mat::maybe_economize): New override. * oct-obj.cc (octave_value_list::normalize_null_values): Rename to make_storable_values, use make_storable_value. * oct-obj.h: Ditto. * ov-builtin.cc: non_null_value -> storable_value. * ov-cell.cc: Ditto. * ov-struct.cc: Ditto. * pt-decl.h: Ditto. 2009-01-15 Søren Hauberg <hauberg@gmail.com> * DLD-FUNCTIONS/__magick_read__.cc (encode_uint_image): Initialize bitdepth. 2009-01-14 Søren Hauberg <hauberg@gmail.com> * DLD-FUNCTIONS/betainc.cc, DLD-FUNCTIONS/chol.cc, DLD-FUNCTIONS/daspk.cc, DLD-FUNCTIONS/dasrt.cc, DLD-FUNCTIONS/dassl.cc, DLD-FUNCTIONS/filter.cc, DLD-FUNCTIONS/gammainc.cc, DLD-FUNCTIONS/gcd.cc, DLD-FUNCTIONS/givens.cc, DLD-FUNCTIONS/hess.cc, DLD-FUNCTIONS/lsode.cc, DLD-FUNCTIONS/qr.cc, DLD-FUNCTIONS/qz.cc, DLD-FUNCTIONS/schur.cc, DLD-FUNCTIONS/svd.cc, DLD-FUNCTIONS/syl.cc, data.cc, mappers.cc: Use ifnottex instead of ifinfo. 2009-01-14 John W. Eaton <jwe@octave.org> * load-path.cc (load_path::do_set): Call do_clear after disabling add_hook. 2009-01-13 Jaroslav Hajek <highegg@gmail.com> * dirfns.cc (Freadddir): qsort -> sort. * graphics.cc (maybe_set_children): Ditto. * help.cc (simple_help): Ditto. * input.cc (generate_possible_completions): Ditto. * oct_map.cc (keys_ok): Ditto. * ov-fcn-inline.cc (Finline): Ditto. * variables.cc (Fisrawcommand): Ditto. 2009-01-12 John W. Eaton <jwe@octave.org> * octave.cc (maximum_braindamage): Set confirm_recursive_rmdir to false. * strfns.cc (Fstrcmp, Fstrncmp): Simplify by initializing all elements of output to false with constructor argument. 2009-01-12 Thorsten Meyer <thorsten.meyier@gmx.de> * strfns.cc (Fstrncmp): New test. 2009-01-12 John W. Eaton <jwe@octave.org> * pt-stmt.h (tree_statement::is_null_statement): New function. * parse.y (set_stmt_print_flag): Return list. Remove trailing null statements from list. (list, simple_list): Simplify action. (make_statement, make_statement_list, append_statement_list): Always create statements and them to the list. * base-list.h (octave_base_list::push_front, octave_base_list::push_back, octave_base_list::pop_front, octave_base_list::pop_back): New functions. * DLD-FUNCTIONS/qr.cc (Fqrupdate, Fqrinsert, Fqrdelete, Fqrshift): Require args to be numeric, not necessarily matrix objects. 2009-01-12 Ben Abbott <bpabbott@mac.com> * graphics.h.in (text::properties::fontunits): Fix typo in list of possible values. 2009-01-12 John W. Eaton <jwe@octave.org> * strfns.cc (Fstrvcat, Fchar): Use queue to avoid duplicate calls to all_strings. 2009-01-12 Thorsten Meyer <thorsten.meyier@gmx.de> * strfns.cc (Fstrvcap): New function. 2008-11-29 Thorsten Meyer <thorsten.meyier@gmx.de> * strfns.cc (Fchar, Fischar, Fstrncmp, Flist_in_columns): Improve documentation strings. Add examples and tests. 2009-01-12 Jaroslav Hajek <highegg@gmail.com> * ov-perm.cc (octave_perm_matrix::do_index_op): Return shallow copy when indexed by (:,:). * ov-base-mat.cc (octave_base_diag::do_index_op): Return shallow copy when indexed by (:,:). Optimize indexing equivalent to resizing. * data.cc: Fix tests. * mappers.cc: Fix tests. 2009-01-12 Jaroslav Hajek <highegg@gmail.com> * ov-base-diag.h, ov-base-mat.h, ov-base-scalar.h, ov-base-sparse.h, ov-base.cc, ov-base.h, ov-perm.h, ov-range.h, ov.h: Add full_value methods to octave_value, octave_base_value and its relevant subclasses. * data.cc (Ffull): New DEFUN. * DLD-FUNCTIONS/sparse.cc (Ffull): move to data.cc. 2009-01-11 Jaroslav Hajek <highegg@gmail.com> * ov.h (octave_value::is_copy_of): New method. * ov-struct.cc (numeric_conv): Add output parameter orig. (octave_struct::subsasgn): Temporarily erase duplicate lhs value prior to assignment. 2009-01-11 Jaroslav Hajek <highegg@gmail.com> * oct-obj.cc (octave_value_list::all_scalars): New method. * oct-obj.h: Declare it. * ov-cell.cc (octave_cell::subsasgn): Disable assigning to non-scalar {}-indexed cell, unless in a multi-assignment. 2009-01-10 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/sparse.cc (Ffull): Convert diagonal & permutation matrices, leave other classes untouched. 2009-01-09 Jaroslav Hajek <highegg@gmail.com> * OPERATORS/op-cdm-cdm.cc: Install missing widening op. * OPERATORS/op-dm-dm.cc: Ditto. * OPERATORS/op-fcdm-fcdm.cc: Ditto. * OPERATORS/op-fdm-fdm.cc: Ditto. * OPERATORS/op-pm-pm.cc: Ditto. * OPERATORS/op-fpm-fpm.cc: Ditto. 2009-01-09 Jaroslav Hajek <highegg@gmail.com> * ov-cell.cc (octave_cell::subsasgn): Put erased copy back after make_unique has been called. 2009-01-09 Kai Habel <kai.habel@gmx.de> * graphics.cc: Calculate normals for surface boundaries, use more neighboring points to calculate interior normals 2009-01-09 John W. Eaton <jwe@octave.org> * input.cc (get_user_input (void)): Don't increment input_line_number. * lex.l (xunput): New function. Use it in place of yyunput anywhere a newline character may be put back on the input stream. Increment input_line_number in all rules that consume newlines characters. (text_yyinput): Increment input_line_number (fixup_column_count): Increment input_line_number. (prep_for_function): Set input_line_number to 1, not 0. (reset_parser): Set input_line_number to current_command_number, not current_command_number-1. (flex_stream_reader::ungetc): Call xunput, not yyunput. * parse.y (input_line_number): Initialize to 1, not 0. (text_getc): Increment input_line_number correctly. (stdio_stream_reader::ungetc): Decrement input_line_number if putting back a newline character. (parse_fcn_file): Set input_line_number to 1, not 0. (eval_string): Unwind-protect input_line_number and current_input_column. * parse.y (make_statement): New function. (statement): Use it. (make_statement_list, append_statement_list): New functions. (simple_list1, list1): Use them. 2009-01-08 Jaroslav Hajek <highegg@gmail.com> * ov-cell.cc (octave_cell::subsasgn): Erase duplicate lhs value prior to assignment to avoid a redundant copy. 2008-12-26 Thorsten Meyer <thorsten.meyier@gmx.de> * mappers.cc (Ftoascii), mappers.cc (Ftolower), mappers.cc (Ftoupper), DLD-FUNCTIONS/regexp.cc (Fregexp), DLD-FUNCTIONS/regexp.cc (Fregexpi), DLD-FUNCTIONS/regexp.cc (Fregexprep): Add references. 2008-12-27 Jaroslav Hajek <highegg@gmail.com> * oct-obj.h, oct-obj.cc (octave_value_list::valid_scalar_indices): Remove. * ov-base-diag.cc, ov-base-diag.h, ov-base-scalar.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-ch-mat.cc, ov-ch-mat.h, ov-colon.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-cx-sparse.cc, ov-cx-sparse.h, ov-float.cc, ov-float.h, ov-flt-complex.cc, ov-flt-complex.h, ov-flt-cx-mat.cc, ov-flt-cx-mat.h, ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-intx.h, ov-perm.cc, ov-perm.h, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc, ov-scalar.h, ov-str-mat.cc, ov-str-mat.h, ov.h: Remove valid_as_scalar_index and valid_as_zero_index methods from octave_value, octave_base_value and all of its subclasses. 2008-12-26 Francesco Potortì <pot@gnu.org> * data.cc (resize): Add cross reference to postpad. 2008-12-25 Jaroslav Hajek <highegg@gmail.com> * load-save.h (load_save_format_type, load_save_format_options): New enums. (load_save_format): Convert to a class. * load-save.cc (do_save(..., const octave_value&,...)): Use fmt.type in switch. Use options of LS_MAT_ASCII. (do_load, write_header): Use format.type in switch. * ls-mat-ascii.h (save_mat_ascii_data): Add tabs option. * ls-mat-ascii.cc (save_mat_ascii_data): Implement it. 2008-12-24 Ben Abbott <bpabbott@mac.com> * DLD-FUNCTIONS/chol.cc: Compare results to 0 in tests. Delete spurious function calls in test block. 2008-12-24 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/eigs.cc: Use "testif HAVE_ARPACK" to skip tests if ARPACK is not available. * Makefile.in (DLD_XSRC): Add eigs.cc to the list. * load-save.cc (parse_save_options): Handle -double. 2008-12-23 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/eigs.cc: New file. * Makefile.in (DLD_XSRC): Add it here. 2008-12-22 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/__voronoi__.cc (F__voronoi__): Resize AtInf array before returning it. 2008-12-12 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/chol.cc (Fcholinv): Add test. 2008-12-12 Jaroslav Hajek <highegg@gmail.com> * ls-hdf5.cc (add_hdf5_data): Check for diagonal & permutation matrices and convert them to full prior to saving. 2008-12-11 Jaroslav Hajek <highegg@gmail.com> * ov-re-mat.cc (Fdouble): Handle diagonal & perm matrices. * ov-flt-re-mat.cc (Fsingle): Handle diagonal & perm matrices. 2008-12-11 Jaroslav Hajek <highegg@gmail.com> * ov-base-diag.cc (octave_base_diag<DMT,MT>::subsasgn): New method. * ov-base-diag.h (octave_base_diag<DMT,MT>::subsasgn): Declare it. (octave_base_diag<DMT,MT>::chk_valid_scalar): New method decl. * ov-re-diag.cc (octave_diag_matrix::chk_valid_scalar): New method override. * ov-re-diag.h: Declare it. * ov-flt-re-diag.cc (octave_float_diag_matrix::chk_valid_scalar): New method override. * ov-flt-re-diag.h: Declare it. * ov-cx-diag.cc (octave_complex_diag_matrix::chk_valid_scalar): New method override. * ov-cx-diag.h: Declare it. * ov-flt-cx-diag.cc (octave_float_complex_diag_matrix::chk_valid_scalar): New method override. * ov-flt-cx-diag.h: Declare it. 2008-12-10 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/expm.cc: Remove. * Makefile.in: Update. 2008-12-10 Jaroslav Hajek <highegg@gmail.com> * ov-intx.h (OCTAVE_VALUE_INT_SCALAR_T::empty_clone): Construct an empty matrix instead of zero. 2008-12-07 Thorsten Meyer <thorsten.meyier@gmx.de> * mappers.cc (Ftolower): Make lower alias of tolower, add tests * mappers.cc (Ftoupper): Make upper alias of toupper, add tests 2008-12-09 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/balance.cc (Fbalance): Exploit the new AEPBAL functionality. 2008-12-08 Jaroslav Hajek <highegg@gmail.com> * xpow.cc ( xpow (const DiagMatrix& a, double b), xpow (const DiagMatrix& a, const Complex& b), xpow (const ComplexDiagMatrix& a, double b), xpow (const ComplexDiagMatrix& a, const Complex& b), xpow (const FloatDiagMatrix& a, float b), xpow (const FloatDiagMatrix& a, const FloatComplex& b), xpow (const FloatComplexDiagMatrix& a, float b), xpow (const FloatComplexDiagMatrix& a, const FloatComplex& b)): New methods. * xpow.h: Declare them. * OPERATORS/op-dms-template.cc: Support diagonal matrix ^ scalar. 2008-12-08 Jaroslav Hajek <highegg@gmail.com> * ov-re-diag.cc (octave_diag_matrix::save_binary, octave_diag_matrix::load_binary): New methods. * ov-re-diag.h: Declare them. * ov-flt-re-diag.cc (octave_float_diag_matrix::save_binary, octave_float_diag_matrix::load_binary): New methods. * ov-flt-re-diag.h: Declare them. * ov-cx-diag.cc (octave_complex_diag_matrix::save_binary, octave_complex_diag_matrix::load_binary): New methods. * ov-cx-diag.h: Declare them. * ov-flt-cx-diag.cc (octave_float_complex_diag_matrix::save_binary, octave_float_complex_diag_matrix::load_binary): New methods. * ov-flt-cx-diag.h: Declare them. * ov-perm.cc (octave_perm_matrix::save_binary, octave_perm_matrix::load_binary): New methods. * ov-perm.h: Declare them. 2008-12-06 Jaroslav Hajek <highegg@gmail.com> * ov-fcn-handle.cc (octave_fcn_handle::load_binary): Call istream::get rather than istream::read to supply null terminating character. 2008-10-29 Jaroslav Hajek <highegg@gmail.com> * file-io.cc, gl-render.cc, load-save.cc, ls-hdf5.cc, ls-mat4.cc, ls-mat5.cc, ls-oct-binary.cc, mex.cc, oct.h, ov-base-int.cc, ov-bool-mat.cc, ov-bool-sparse.cc, ov-cell.cc, ov-class.cc, ov-cx-mat.cc, ov-cx-sparse.cc, ov-fcn-handle.cc, ov-fcn-inline.cc, ov-flt-cx-mat.cc, ov-flt-re-mat.cc, ov-re-mat.cc, ov-re-sparse.cc, ov-str-mat.cc, ov-struct.cc, toplev.cc, DLD-FUNCTIONS/__lin_interpn__.cc, DLD-FUNCTIONS/amd.cc, DLD-FUNCTIONS/ccolamd.cc, DLD-FUNCTIONS/cellfun.cc, DLD-FUNCTIONS/colamd.cc, DLD-FUNCTIONS/gcd.cc, DLD-FUNCTIONS/matrix_type.cc, DLD-FUNCTIONS/regexp.cc, DLD-FUNCTIONS/symbfact.cc, DLD-FUNCTIONS/symrcm.cc: Include oct-locbuf.h. 2008-12-05 Jaroslav Hajek <highegg@gmail.com> * ov-base-diag.cc (save_ascii, load_ascii): Save natively. * ov-base-diag.h (load_ascii): Declare. * ov-perm.cc (save_ascii, load_ascii): Save natively. * ov-perm.h (load_ascii): Declare. 2008-12-04 Thorsten Meyer <thorsten.meyier@gmx.de> * strfns.cc (Fchar): Add test from str2mat.m 2008-12-04 Jaroslav Hajek <highegg@gmail.com> * ov.h (octave_value::is_perm_matrix): New method. * ov-base.h (octave_base_value::is_perm_matrix): New method. * ov-perm.h (octave_perm_matrix::is_perm_matrix): New method. * DLD-FUNCTIONS/inv.cc (Finv): Handle permutation matrices specially, compute rcond for diagonal matrices. * DLD-FUNCTIONS/det.cc (Fdet): Handle permutation & diagonal matrices specially. 2008-12-03 Jaroslav Hajek <highegg@gmail.com> * ov-perm.h: New source. * ov-perm.cc: New source. * ov-flt-perm.h: New source. * ov-flt-perm.cc: New source. * ov-base-diag.cc (octave_base_diag<DMT, MT>::do_index_op): If subscripting an identity matrix by permutation(s), return a permutation matrix object. * ov.cc (octave_value::octave_value (const PermMatrix&)): New constructor. * ov.cc (octave_value::octave_value (const PermMatrix&)): Declare it. * op-cm-pm.cc: New source. * op-fcm-fpm.cc: New source. * op-fm-fpm.cc: New source. * op-fpm-fcm.cc: New source. * op-fpm-fm.cc: New source. * op-fpm-fpm.cc: New source. * op-m-pm.cc: New source. * op-pm-cm.cc: New source. * op-pm-m.cc: New source. * op-pm-pm.cc: New source. * op-pm-template.cc: New source. * Makefile.in: Include new sources. * DLD-FUNCTIONS/qr.cc (Fqr): Reflect interface changes of QR classes. 2008-12-03 John W. Eaton <jwe@octave.org> * debug.cc (bp_table::do_get_breakpoint_list): Style fixes. 2008-12-01 Jaroslav Hajek <highegg@gmail.com> * ov-base.h (octave_base_value::is_diag_matrix): New virtual method. * ops.h (CONCAT2, CONCAT3): New macros. Use CONCAT macros instead of direct token pasting to avoid disabling argument prescan. * xdiv.cc, xdiv.h: Implement xdiv and xleftdiv overloads for diagonal and mixed dense-diagonal operands. * ov-re-diag.h: New source. * ov-re-diag.cc: New source. * ov-flt-re-diag.h: New source. * ov-flt-re-diag.cc: New source. * ov-base-diag.h: New source. * ov-base-diag.cc: New source. * OPERATORS/op-m-dm.cc: New source. * OPERATORS/op-m-cdm.cc: New source. * OPERATORS/op-fm-fdm.cc: New source. * OPERATORS/op-fm-fcdm.cc: New source. * OPERATORS/op-fdm-fs.cc: New source. * OPERATORS/op-fdm-fm.cc: New source. * OPERATORS/op-fdm-fdm.cc: New source. * OPERATORS/op-fdm-fcs.cc: New source. * OPERATORS/op-fdm-fcm.cc: New source. * OPERATORS/op-fdm-fcdm.cc: New source. * OPERATORS/op-fcm-fdm.cc: New source. * OPERATORS/op-fcm-fcdm.cc: New source. * OPERATORS/op-fcdm-fs.cc: New source. * OPERATORS/op-fcdm-fm.cc: New source. * OPERATORS/op-fcdm-fdm.cc: New source. * OPERATORS/op-fcdm-fcs.cc: New source. * OPERATORS/op-fcdm-fcm.cc: New source. * OPERATORS/op-fcdm-fcdm.cc: New source. * OPERATORS/op-dms-template.cc: New source. * OPERATORS/op-dm-template.cc: New source. * OPERATORS/op-dm-s.cc: New source. * OPERATORS/op-dm-m.cc: New source. * OPERATORS/op-dm-dm.cc: New source. * OPERATORS/op-dm-cs.cc: New source. * OPERATORS/op-dm-cm.cc: New source. * OPERATORS/op-dm-cdm.cc: New source. * OPERATORS/op-cm-dm.cc: New source. * OPERATORS/op-cm-cdm.cc: New source. * OPERATORS/op-cdm-s.cc: New source. * OPERATORS/op-cdm-m.cc: New source. * OPERATORS/op-cdm-dm.cc: New source. * OPERATORS/op-cdm-cs.cc: New source. * OPERATORS/op-cdm-cm.cc: New source. * OPERATORS/op-cdm-cdm.cc: New source. * Makefile.in: Include them. * ov-re-mat.cc (octave_matrix::diag): New method override. * ov-re-mat.h: Declare it. * ov-cx-mat.cc: Likewise with octave_complex_matrix. * ov-cx-mat.h: Likewise with octave_complex_matrix. * ov-flt-re-mat.cc: Likewise with octave_float_matrix. * ov-flt-re-mat.h: Likewise with octave_float_matrix. * ov-flt-cx-mat.cc: Likewise with octave_float_complex_matrix. * ov-flt-cx-mat.h: Likewise with octave_float_complex_matrix. * ov.cc (octave_value::octave_value (const DiagMatrix&)) (octave_value::octave_value (const FloatDiagMatrix&)) (octave_value::octave_value (const ComplexDiagMatrix&)) (octave_value::octave_value (const FloatComplexDiagMatrix&)): Construct a diagonal matrix object. * data.cc (Fdiag): Support explicit dimensions. Fix tests. (Feye): Return diagonal matrix objects if possible. Fix tests. * mappers.cc (Freal, Fimag): Fix tests. * DLD-FUNCTIONS/inv.cc (Finv): Handle diagonal matrix objects. * ov-range.h (octave_range::diag): Declare only. * ov-range.cc (octave_range::diag): Return DiagMatrix if possible. 2008-11-25 Jaroslav Hajek <highegg@gmail.com> * ov.cc (octave_value::is_equal): New member function. * ov.h: Declare it. * pt-select.cc (tree_switch_case::label_matches): Call octave_value::is_equal. 2008-12-04 Thomas Treichl <Thomas.Treichl@gmx.net> * DLD-FUNCTIONS/cellfun.cc: Added more tests for cellfun. 2008-11-25 Jaroslav Hajek <highegg@gmail.com> * ov-base.h (octave_base_value::type_conv_info): New class. * 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-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-null-mat.cc, ov-null-mat.h, ov-range.cc, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc, ov-scalar.h, ov-str-mat.cc, ov-str-mat.h, ov.h: Return type_conv_info instead of type_conv_fcn from numeric_conversion_function and numeric_demotion_function methods. * ov-base.cc (octave_base_value::numeric_assign): Try biased conversion first if possible. * ov.cc (do_binary_op): Likewise. Also, search recursively. * ov.cc (do_cat_op): Likewise. 2008-11-24 David Bateman <dbateman@free.fr> * graphics.cc (F__go_delete__): Check validity of handles before deleting them to avoid issues with callback function also deleting the handles. 2008-11-21 John Swensen <jpswensen@comcast.net> * debug.cc (bp_table::do_get_breakpoint_list): Avoid modifying bp_map while iterating over it. 2008-11-21 Jarkko Kaleva <d3roga@gmail.com> * DLD-FUNCTIONS/eig.cc (Feig): Handle generalized eigenvalues and eigenvectors. 2008-11-19 Jaroslav Hajek <highegg@gmail.com> * DLD_FUNCTIONS/det.cc: Include only DET.h. Retrieve & matrix type & store it after calculation if possible. 2008-11-17 John W. Eaton <jwe@octave.org> * load-path.cc (load_path::dir_info::update): Simplify previous change. * load-path.h (load_path::dir_info::abs_dir_name): New data member. (load_path::dir_info::dir_info, load_path::dir_info::operator =): Copy abs_dir_name. (load_path::abs_dir_cache_type, load_path::dir_cache_iterator, load_path::const_dir_cache_iterator): New typedefs. (load_path::abs_dir_cache): New static data member. (load_path::dir_info:dir_info): New constructor. * load-path.cc (load_path::abs_dir_cache): Define new static data member. (load_path::dir_info::update): Look in abs_dir_cache for relative directory names. (load_path::dir_info::initialize): Update abs_dir_cache here. 2008-11-13 John W. Eaton <jwe@octave.org> * ov-int8.h, ov-int16.h, ov-int32.h, ov-int64.h, ov-uint8.h, ov-uint16.h, ov-uint32.h, ov-uint64.h: Don't define OCTAVE_INT_NDARRAY_T. * ov-intx.h (class OCTAVE_VALUE_INT_MATRIX_T, class OCTAVE_VALUE_INT_SCALAR_T): Use intNDArray<OCTAVE_INT_T> instead of OCTAVE_INT_NDARRAY_T. (OCTAVE_VALUE_INT_MATRIX_T::increment, OCTAVE_VALUE_INT_MATRIX_T::decrement, OCTAVE_VALUE_INT_SCALAR_T::increment, OCTAVE_VALUE_INT_SCALAR_T::decrement): Convert 1 to OCTAVE_INT_T. 2008-11-15 Thorsten Meyer <thorsten.meyier@gmx.de> * strfns.cc (Fchar): adapt to conserve empty strings, add tests 2008-11-12 Michael Goffioul <michael.goffioul@gmail.com> * dirfcn.cc (Ffilesep): Make it return all file separators when 'all' is given as argument. * DLD-FUNCTIONS/getrusage.cc: Undefine min/max. * TEMPLATE-INST/Array-os.cc: Declare Array<bool> as extern template. 2008-11-12 David Bateman <dbateman@free.fr> * OPERATORS/op-cell.cc (op_catop_matrix_cell): Cast args in the correct order. * OPERATORS/op-struct.cc (op_catop_matrix_struct): Ditto. 2008-11-11 Jaroslav Hajek <highegg@gmail.com> * pt-assign.cc: Fix handling of empty cs-lists in assignment LHS. 2008-11-11 John W. Eaton <jwe@octave.org> * lex.l (<MATRIX_START>{S}+): Don't insert separator if next token is a separator. * parse.y (F__parser_debug_flag__): New function. 2008-10-31 Jaroslav Hajek <highegg@gmail.com> * xnorm.cc: New source. * xnorm.h: New header file. * Makefile.in: Include xnorm.cc in the build process. * data.cc (Fnorm): Call xnorm, xcolnorms, xrownorms or xfrobnorm to do the actual work. 2008-10-31 David Bateman <dbateman@free.fr> * ov-base-scalar.h (octave_value octave_base_scalar::reshape (const dim_vector&) const): New method. 2008-10-30 John W. Eaton <jwe@octave.org> * oct-map.cc (Octave_map::index): Copy key_list. 2008-10-31 David Bateman <dbateman@free.fr> * graphics.h.in (void image::init (void)): Add a constraint for logical cdata. * graphics.h.in (base_property::delete_listener): New method. (property::delete_listener): New method. (base_graphics_object::delete_listener): New method. (base_graphics_object::delete_property_listener): New method. (base_graphics_object::remove_all_listeners): New method. (graphics_object::delete_property_listener): New method. (axes::set_defaults): Call remove_all_listeners. * graphics.cc (void base_properties::delete_listener): New method (void base_graphics_object::remove_all_listeners (void)): New method (Fdellistener): New command to remove listener functions associated with a property. 2008-10-30 David Bateman <dbateman@free.fr> * graphics.h.in (axes::properties): Add keyreverse property. * graphics.cc (axes::properties::set_defaults): Initialize keyreverse property. 2008-10-28 Jaroslav Hajek <highegg@gmail.com> * Cell.h (Cell::assign (const Array<idx_vector>&, ...), Cell::delete_elements (const Array<idx_vector>&, ...)): New member functions. * Cell.cc (Cell::assign (const octave_value_list&, ...), Cell::delete_elements (const octave_value_list&, ...)): Call Array<T>::assign. * DLD-FUNCTIONS/dlmread.cc: Call Array<T>::resize_fill. * ov-base-mat.cc (octave_base_matrix::assign): Call Array<T>::assign. (octave_base_matrix::delete_elements):: Call Array<T>::delete_elements. * ov-cell.cc (Fcell): Call Array<T>::chop_trailing_singletons, simplify. * ov-cx-mat.cc (octave_complex_matrix::assign): Call Array<T>::assign. * ov-flt-cx-mat.cc (octave_float_complex_matrix::assign): Call Array<T>::assign. * ov-list.cc (octave_list::subsasgn): Call Array<T>::assign. * pr-output.cc (PRINT_ND_ARRAY): Use zero-based indices. 2008-10-29 Thorsten Meyer <thorsten.meyier@gmx.de> * data.cc (Fcolumns): Remove "and" from @seealso string. * mappers.cc (Fgamma, Flgamma): Replace @seealso reference to deprecated gammai by gammainc. * DLD-FUNCTIONS/sqrtm.cc (Fsqrtm): Remove reference to Octave Forge function funm. * DLD-FUNCTIONS/qz.cc (Fqz): removed @seealso reference to Octave Forge function dare. * DLD-FUNCTIONS/rcond.cc (Frcond): removed @seealso reference to mldivide. * debug.cc (Fdbstop): Fix @seealso references and function name in docstring of dbnext. * DLD-FUNCTIONS/cellfun.cc (Fcellfun): Remove @seealso reference to isclass. * syscalls.cc (Fwaitpid): Replace WCONTINUED by WCONTINUE. * oct-hist.cc (Fhistory_size, Fsaving_history): Fix @seealso references to history_timestamp_format_string. * DLD-FUNCTIONS/luinc.cc (Fluinc): Remove reference to missing function cholinc. 2008-10-29 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/qr.cc (Fcholinsert, Fcholdelete, Fcholshift): Fix inline docs. 2008-10-28 John W. Eaton <jwe@octave.org> * parse.y (finish_function): Clear local variables in function scope. * symtab.h (symbol_table::clear_variables): New argument, scope. 2008-10-28 Brian Gough <bjg@gnu.org> * DLD-FUNCTIONS/besselj.cc: Added tests. 2008-10-23 John W. Eaton <jwe@octave.org> * oct-hist.c (initialize_history): New arg, read_history_file) * oct-hist.h: Fix decl. * octave.cc (octave_main): Set read_history_file to false if --no-history option is specified. Pass read_history_file to initialize_history. * DLD-FUNCTIONS/fltk_backend.cc: Update initialization comment. 2008-10-22 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/fltk_backend.cc (figure_manager::do_close_all): Rename from close_all. Now private. (figure_manager::do_new_window): Rename from new_window. Now private. (figure_manager::do_delete_window): Rename from delete_window. Now private. (figure_manager::do_mark_modified): Rename from mark_modified. Now private. (figure_manager::do_get_size): Rename from get_size. Now private. (figure_manager::close_all, figure_manager::do_new_window, figure_manager::do_delete_window, figure_manager::do_mark_modified, figure_manager::do_get_size): New static functions. (figure_manager::instance_ok): New function. (figure_manager::Instance): Delete. Eliminate all uses in favor of static methods that call instance_ok and forward to private member functions. (figure_manager::instance): New static data member. (figure_manager::hnd2idx, figure_manager::figprops2idx, figure_manager::figprops2idx, figure_manager::str2idx): Now static. * DLD-FUNCTIONS/fltk_backend.cc (figure_manager::default_size): Increase default window size. * graphics.cc (figure::properties::remove_child): New function. * graphics.h.in: Provide decl. * gl-render.cc (opengl_renderer::draw): Get all children. * DLD-FUNCTIONS/fltk_backend.cc (__fltk_redraw__): Check for "root" object, not "root_figure". * graphics.h.in (base_properties::get_all_children): New function. 2008-10-22 David Bateman <dbateman@free.fr> * graphics.h.in (line::properties, surface::properties): Add data source properties. 2008-10-21 John W. Eaton <jwe@octave.org> * graphics.h.in (axes::properties::delete_children): Delete decl. * graphics.h.in (gh_manager::is_handle_visible): New function. (axes::properites): Move title property after label properties. (graphics_object::is_handle_visible): New function. (base_properties::is_handle_visible): New function. (base_properties): Mark children property with G. * graphics.cc (axes::properties::set_text_child): New function. (axes::properties::set_title, axes::properties::set_xlabel, axes::properties::set_ylabel, axes::properties::set_zlabel): Use it. (base_property::get_children): New function. Only return handles that are visible. (axes::properties::delete_text_child): Set handlevisibility to "off" for newly created object and add it to the list of children. Call base_properties::remove_child on previous handle value. (axes::properties::set_defaults): Don't explicitly delete xlabel, ylabel, zlabel, and title handles. Reinitialize them after deleting children. (axes::properties::remove_child): Don't explicitly delete xlabel, ylabel, zlabel, and title handles. (axes::properties::init): Move here from graphics.h.in. Set handlevisibility to "off" for xlabel, ylabel, zlabel, and title and add them to the list of children. (axes::properties::delete_children): Delete. * genprops.awk: Allow whitespace between BEGIN_PROPERTIES and opening paren. Accept optional second argument for graphics object name. * graphics.h.in (root_figure properties): Pass "root" as second arg to BEGIN_PROPERTIES. 2008-10-16 John W. Eaton <jwe@octave.org> * graphics.cc (make_handle_fraction): New static function. (gh_manager::get_handle): Use it. (gh_manager::do_free): Call make_handle_fraction to replace fractional part of non-figure handles. * graphics.cc (base_properties::remove_child): Handle children as a column vector instead of a row vector. * utils.cc (Fis_absolute_filename, Fis_rooted_relative_filename, Fmake_absolute_filename, Ffind_dir_in_path): New functions. 2008-10-16 David Bateman <dbateman@free.fr> * graphics.cc (void axes::properties::set_defaults (base_graphics_object&, const std::string&)): Preserve font and position properties if the axis is "replaced". 2008-10-16 John W. Eaton <jwe@octave.org> * graphics.h.in (class axes::properties): New property: interpreter. 2008-10-15 David Bateman <dbateman@free.fr> * ov-class.c (Fsuperiorto, Finferiorto): Allow more than one class to be defined at a time. 2008-10-12 David Bateman <dbateman@free.fr> * pt-colon.cc (octave_value tree_colon_expression::make_range (const octave_value&, const octave_value&, const octave_value&)): Treating class overloading of colon operator. (octave_value tree_colon_expression::rvalue (void)): Ditto. 2008-10-10 John W. Eaton <jwe@octave.org> * graphics.h.in (base_properties::adopt): Place new child at front of list, not end. Make list of children a column vector instead of a row vector. * graphics.cc (gh_manager::do_free): Set the beingdeleted property, then delete the children, then execute the deletefcn. (axes::properties::set_defaults, axes::properties::remove_child, axes::properites::delete_children): Call delete_text_child to manage the title, xlabel, ylabel, and zlabel properties. (axes::properties::get_title, axes::properties::get_xlabel, axes::properties::get_ylabel, axes::properties::get_zlabel): Delete. * graphics.h.in (axes::properites::title, axes::properites::xlabel, axes::properites::ylabel, axes::properites::zlabel): No longer mutable. Don't generate factory default values or custom get functions for these properties. * graphics.cc (axes::properties::delete_text_child): New function. * graphics.h.in: Provide decl. * graphics.h.in (graphics_object::type): New function. 2008-10-10 David Bateman <dbateman@free.fr> * graphics.h.in (radio_property axes::properties::__colorbar__): Delete. * graphics.cc (void axes::properties::sync_positions (void)): Disable code synchronizing outerposiiton and position. (void axes::properties::set_defaults (base_graphics_object&, const std::string&): Remove __colorbar__. (F__go_delete__): Don't delete if already being deleting to avoid recursion in callback functions. (F__go_axes_init__): Flag error if handle is deleted during initialization due. 2008-10-09 David Bateman <dbateman@free.fr> * ov-class.cc (Octave_map octave_class::map_value (void) const): Remove. (bool octave_class::save_ascii (std::ostream&), bool octave_class::load_ascii (std::istream&), bool octave_class::save_binary (std::ostream&, bool&), bool octave_class::save_binary (std::ostream&, bool&), bool octave_class::save_hdf5 (hid_t, const char *, bool), bool octave_class::load_hdf5 (hid_t, const char *, bool)): Allow saving and reloading of classes. * ov-class. (Octave_map octave_class::map_value (void) const): Remove. * ls-mat.cc (std::string read_mat5_binary_element (std::istream&, const std::string&, bool, bool&, octave_value&), int save_mat5_element_length (const octave_value&, const std::string&, bool, bool)): Allow saving and loading of classes. * ls-oct-ascii.h (template <class T> bool extract_keyword (std::istream&, const char *, T&, const bool)): Initialize value with null constructor rather than 0. 2008-10-07 David Bateman <dbateman@free.fr> * graphics.cc (F__go_delete__): Allow arrays of graphic handles. 2008-10-01 Jaroslav Hajek <highegg@gmail.com> * OPERATORS/op-i64-i64.cc: Instantiate all 64-bit operations. * OPERATORS/op-ui64-ui64.cc: Instantiate all unsigned 64-bit operations. 2008-10-06 John W. Eaton <jwe@octave.org> * ov-type-conv.h (octave_type_conv_body): Avoid shadow warning from GCC. 2008-10-06 David Bateman <dbateman@free.fr> * graphics.cc (static bool is_handle (const octave_value&)): Delete. (static octave_value is_handle (const octave_value&)): New function. 2008-10-03 Jaroslav Hajek <highegg@gmail.com> * Cell.cc (Cell::delete_elements): Don't pass second arg to Array<T>::maybe_delete_elements. * ov-base-mat.cc (octave_base_matrix<MT>::delete_elements): Ditto. 2008-10-02 Jaroslav Hajek <highegg@gmail.com> * Cell.h (Cell::delete_elements): Declare new member function. * Cell.h (Cell::delete_elements): Define it. * oct-map.cc (Octave_map::maybe_delete_elements): Call delete_elements instead of assign with empty Cell. 2008-10-02 John W. Eaton <jwe@octave.org> * pt-arg-list.cc (tree_argument_list::convert_to_const_vector): Don't insert undefined elements in return list. 2008-09-30 Jaroslav Hajek <highegg@gmail.com> * ov-str-mat.h (octave-char-matrix-str::assign): Remove declaration. * ov-str-mat.cc (octave-char-matrix-str::assign): Remove definition. 2008-09-30 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/__magick_read__.cc: Only define magick_to_octave_value if HAVE_MAGICK is defined. 2008-09-29 John W. Eaton <jwe@octave.org> * symtab.cc (symbol_table::fcn_info::fcn_info_rep::load_class_method): Call load_class_constructor if name and dispatch_type are the same. 2008-09-29 David Bateman <dbateman@free.fr> * symtab.cc (octave_value symbol_table::find_function (const std::string&, tree_argument_list *, const string_vector&, octave_value_list&, bool&)): If first character of function name is "@" then look for class specific method. 2008-09-26 John W. Eaton <jwe@octave.org> * symtab.cc (out_of_date_check_internal): Fix order of arguments in call to load_path::find_method. 2008-09-26 David Bateman <dbateman@free.fr> * ov-class.h (idx_vector index_vector (void) const): Declare new maethod. * ov-class.cc (idx_vector index_vector (void) const): Define new method. * (Fismethod): New function. 2008-09-26 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/urlwrite.cc (urlwrite_cleanup_file) New function. (urlwrite_delete_file, urlwrite_filename): New static variables. (Furlwrite): Only return filename if urlget succeeds. Use unwind_protect to delete files we create if download fails. 2008-09-26 Jaroslav Hajek <highegg@gmail.com> * ov-null-mat.h: New header file. * ov-null-mat.cc: New source. * ov.h (octave_value::is_null_value, octave_value::non_null_value, octave_value::make_non_null_value): Declare new member functions. * ov.cc (octave_value:non_null_value, octave_value::make_non_null_value): Define them. (octave_value::assign (assign_op op, const octave_value& rhs)): (register_types): Register null types. Call non_null_value (). * oct-obj.cc (octave_value_list::normalize_null_values): New member function. * oct-obj.h (octave_value_list::normalize_null_values): Declare it. * ov-base.h (is_null_value): New virtual member function. * ops.h (NULLASSIGNOPDECL, DEFNULLASSIGNOP_FN): New macros. * ov-base-mat.cc (octave_base_mat<MT>::delete_elements): New member func. * ov-base-mat.h: Declare it. * ov-base-sparse.cc (octave_base_sparse<MT>::delete_elements): New member func. * ov-base-sparse.h: Declare it. * ov-cell.cc (octave_cell:subsasgn): Handle null values. * ov-struct.cc (octave_cell:subsasgn): Handle null values. * ov-builtin.cc (octave_builtin::do_multi_index_op): Normalize return values. * pt-misc.cc (tree_parameter_list::define_from_arg_vector): Call octave_lvalue::define instead of octave_lvalue::assign. * pt-decl.h (tree_decl_elt::rvalue): Call non_null_value (). * OPERATORS/op-int.h (OCTAVE_INT_NULL_ASSIGN_OPS, OCTAVE_INSTALL_INT_NULL_ASSIGN_OPS): New macros. * OPERATORS/op-m-m.cc: Install & define assignment & conversion operators. * OPERATORS/op-bm-bm.cc: Ditto. * OPERATORS/op-cell.cc: Ditto. * OPERATORS/op-cm-cm.cc: Ditto. * OPERATORS/op-cs-cs.cc: Ditto. * OPERATORS/op-fcm-fcm.cc: Ditto. * OPERATORS/op-fcs-fcs.cc: Ditto. * OPERATORS/op-fm-fm.cc: Ditto. * OPERATORS/op-fs-fs.cc: Ditto. * OPERATORS/op-int.h: Ditto. * OPERATORS/op-m-m.cc: Ditto. * OPERATORS/op-range.cc: Ditto. * OPERATORS/op-s-s.cc: Ditto. * OPERATORS/op-scm-scm.cc: Ditto. * OPERATORS/op-sm-sm.cc: Ditto. * OPERATORS/op-str-str.cc: Ditto. * OPERATORS/op-i16-i16.cc: Ditto. * OPERATORS/op-i32-i32.cc: Ditto. * OPERATORS/op-i64-i64.cc: Ditto. * OPERATORS/op-i8-i8.cc: Ditto. * OPERATORS/op-ui16-ui16.cc: Ditto. * OPERATORS/op-ui32-ui32.cc: Ditto. * OPERATORS/op-ui64-ui64.cc: Ditto. * OPERATORS/op-ui8-ui8.cc: Ditto. 2008-09-25 David Bateman <dbateman@free.fr> * pt-mat.cc (class tm_row_const): Add any_class test (class tm_const): Ditto. (octave_value tree_matrix::rvalue (void)): If any object to concatenate is a class object, dispatch to the appropriate vertcat/horzcat function. 2008-09-25 John W. Eaton <jwe@octave.org> * symtab.cc (symbol_table::do_find): Don't set evaluated_args and args_evaluated here, prior to call to symbol_table::fcn_info::find. 2008-09-24 Søren Hauberg <hauberg@gmail.com> * DLD-FUNCTIONS/__magick_read__.cc (magick_to_octave_value): New template function with specializations for various GraphicsMagick++ types. (F__magick_finfo__): New function. 2008-09-24 John W. Eaton <jwe@octave.org> * ov-usr-fcn.cc (octave_user_function::do_multi_index_op): Add symbol_table::clear_variables cleanup function to the unwind_protect stack after the parameter list cleanup functions. * load-path.cc (load_path::do_initialize): Check for OCTAVE_PATH in the environment, not OCTAVE_LOADPATH. 2008-09-24 Thomas Weber <thomas.weber.mail@gmail.com> * DLD-FUNCTIONS/regexp.cc (octregexp_list): Retry if match limit is exceeded. 2008-09-24 John W. Eaton <jwe@octave.org> * genprops.awk (emit_declarations): Emit call to set_mode before updaters. 2008-09-23 John W. Eaton <jwe@octave.org> * pt-arg-list.cc (F__end__): Dispatch to user-defined end function for classes if one is defined. * lex.l (is_keyword_token): Allow "end" as a functon name. 2008-09-23 David Bateman <dbateman@free.fr> * variables.cc (static octave_value do_who (int, const string_vector&, bool, bool, std::string): Add final message argument and simple treatment of the "-file" option. 2008-09-22 David Bateman <dbateman@free.fr> * debug.cc (static octave_user_code * get_user_code (const std::string&)): Only check user code as break points can't be set in builtins or oct-files. (bp_table::intmap bp_table::do_remove_all_breakpoints_in_file (const std::string&, bool)): Add flag to silence the error message from this function if a user code with breakpoints is not found. (bp_table::fname_line_map bp_table::do_get_breakpoint_list (const octave_value_list&)): Do an ourt of date check on the function before checking the breakpoints. * debug.h (do_remove_all_breakpoints_in_file, remove_all_breakpoints_in_file): Add flag to silence error message. * symtab.cc (out_of_date_check_internal): Clear breakpoints in function if out_of_date. split into two versions taking the octave_function pointer seperately or not. * symtab.h (bool out_of_date_check (octave_function*)): New function. 2008-09-18 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/fftw.cc (Ffftw): Clarify the documentation. 2008-09-17 Krzesimir Nowak <qdlacz@gmail.com> * debug.cc (Fisdebugmode): New function. 2008-09-17 David Bateman <dbateman@free.fr> * data.cc (do_cat): Chopping trailing singleton dimensions. * data.cc (SINGLE_TYPE_CONCAT, DO_SINGLE_TYPE_CONCAT): New macros (do_cat): Special case single type concatenations for speed. * pt.mat.cc (std::string get_concat_class (const std::string&, const std::string&), void maybe_warn_string_concat (bool, bool)): Remove static declaration. * pt-mat.h (std::string get_concat_class (const std::string&, const std::string&), void maybe_warn_string_concat (bool, bool)): Define extern here. * DLD-FUNCTIONS/sparse.cc (Fsparse): Clarify the help string. 2008-09-10 John W. Eaton <jwe@octave.org> * octave.cc (octave_main): Make all command-line arguments available to startup scripts and PKG_ADD files. 2008-09-09 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/regexp.cc (octregexp_list): Distinguish between matlab named tokens and perl lookbehind expressions. For lookbehind expression replace "*" and "+" with a limited number of fixed length expressions to simulate arbitrary length look behind. 2008-09-08 Michael Goffioul <michael.goffioul@gmail.com> * DLD-FUNCTIONS/__magick_read__.cc (encode_uint_image): Resolve "pow" ambiguity. * graphics.cc (base_properties::get_dynamic, base_properties::set_dynamic, base_propertyes::get_property_dynamic): Add the 3rd template parameter to std::map, corresponding to all_props field. 2008-09-08 John W. Eaton <jwe@octave.org> * ls-oct-ascii.cc (std::string extract_keyword (std::istream&, const char *, const bool)): Also accept \r as line ending character. * ls-oct-ascii.h (template <class T> bool extract_keyword (std::istream&, const char *, T&, const bool)): Likewise. (template <class T> bool extract_keyword (std::istream&, const string_vector&, std::string&, T&, const bool)): Likewise. 2008-09-03 Ben Abbott <bpabott@mac.com> * mappers.cc: Use eps(single) as tolerance for single precesion test. 2008-09-03 John W. Eaton <jwe@octave.org> * variables.cc (mlock): Lock current function on the call stack. (Fmlock): Lock caller. * symtab.cc (out_of_date_check_internal): If dispatch type is set, check for method. If that fails, check for regular function. 2008-09-02 Michael Goffioul <michael.goffioul@gmail.com> * graphics.cc (hggroup::update_axis_limits): Also reacts on [xyzac]liminclude changes. 2008-08-31 Michael Goffioul <michael.goffioul@gmail.com> * DLD-FUNCTIONS/fltk_backend.cc (fltk_backend::redraw_figure, fltk_backend::print_figure): Change graphics_handle argument to graphics_object. 2008-08-29 David Bateman <dbateman@free.fr> * src/graphics.cc: Replace int by octave_idx_type in multiple places. (array_property::is_equal): In macro CHECK_ARRAY_EQUAL, special case scalar case and keep copy of array value to avoid early destruction of converted array values. 2008-08-28 David Bateman <dbateman@free.fr> * graphics.h.in (root_figure::properties::showhiddenhandles): New property. 2008-08-27 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Initialize output vectors by NA value. 2008-08-26 Ben Abbott <bpabott@mac.com> * mappers.cc: Adjust tolerance for single precesion tests. * DLD-FUNCTIONS/chol.cc: Double tolerance. 2008-08-26 Jaroslav Hajek <highegg@gmail.com> * parse.y (Fassignin): Use default scope when calling varref. 2008-08-26 Michael Goffioul <michael.goffioul@gmail.com> * genprops.awk (emit_declarations): Call updaters/listeners only when 'set' method returned true. * graphics.h.in (base_property::set, base_property::do_set): Return bool value. (property::set): Likewise. (string_property::do_set): Check value change and return bool value. (radio_property::do_set, double_property::do_set, array_property::do_set): Likewise. (color_property::do_set, double_radio_property::do_set, row_vector_property::do_set, bool_property::do_set, handle_property::do_set): Return bool value. (any_property::do_set, callback_property::do_set): Return always true. (color_values::operator==, color_values::operator!=): Add. (array_property::is_equal): Add. * graphics.cc (base_property::set): Executes listeners/notifiers only when do_set returns true. Return bool value. (color_property::do_set, double_radio_property::do_set): Check value change and return bool value. (array_property::is_equal): Add. * genprops.awk (emit_declarations, emit_source): Change code emission when emitting base_properties code (base is 1). (BEGIN): Initialize pcount to 0. (BEGIN_PROPERTIES): Initialize base to 0. (BEGIN_BASE_PROPERTIES): New statement. (main): Add support for 'f' modifier. Add support for non xxx_property typed properties. * graphics.h.in (base_properties::base_properties): Remove implementation. (base_properties::get_tag, base_properties::get_parent, base_properties::get_type, base_properties::get___myhandle__, base_properties::get_busyaction, base_properties::get_buttondownfcn, base_properties::is_clipping, base_properties::get_clipping, base_properties::execute_createfcn, base_properties::get_createfcn, base_properties::execute_deletefcn, base_properties::get_deletefcn, base_properties::get_handlevisibility, base_properties::is_hittest, base_properties::get_hittest, base_properties::is_interruptible, base_properties::get_interruptible, base_properties::is_selected, base_properties::get_selected, base_properties::is_selectionhighlight, base_properties::get_selectionhighlight, base_properties::get_uicontextmenu, base_properties::get_userdata, base_properties::is_visible, base_properties::get_visible, base_properties::is_beingdeleted, base_properties::get_beingdeleted, base_properties::set_busyaction, base_properties::set_buttondownfcn, base_properties::set_clipping, base_properties::set_createfcn, base_properties::set_deletefcn, base_properties::set_handlevisibility, base_properties::set_hittest, base_properties::set_interruptible, base_properties::set_selected, base_properties::set_selectionhighlight, base_properties::set_uicontextmenu, base_properties::set_userdata, base_properties::set_visible, base_properties::set_beingdeleted, base_properties::get_children): Remove (now auto-generated). (base_properties::enum): Likewise. (base_properties::is_modified): Call is___modified__. (base_properties::set_modified): Call set___modified__. (base_properties::set_children): Add. (base_properties::set_dynamic, base_properties::get_dynamic, base_properties::get_property_dynamic): New methods. (class base_properties): Surround properties declaration with BEGIN_BASE_PROPERTIES/END_PROPERTIES pair. * graphics.cc (base_properties::get, base_properties::set, base_properties::get_property): Remove (now auto-generated). (base_properties::set_dynamic, base_properties::get_dynamic, base_properties::get_property_dynamic): New methods. (base_properties::set_children): Likewise. * DLD_FUNCTIONS/fltk_backend.cc (F__fltk_redraw__): Make static. (F__init_fltk__): Protect from mutliple invocations. (F__remove_fltk__): Likewise. (F__init_fltk__): Register input event hook. (F__remove_fltk__): Unregister input event hook. * DLD_FUNCTIONS/fltk_backend.cc (fltk_backend::close_figure): Remove. (fltk_backend::object_destroyed, fltk_backend::property_changed): New methods. * genprops.awk (emit_declarations): Generate "enum" property fields. (emit_sources): Emit set_id calls. * graphics.h.in (base_property::id): New field. (base_property::base_property): Initialize it. (base_property::get_id, base_property::set_id): Add accessors. (property::get_id, property::set_id): Likewise. (base_graphics_backend::close_figure, graphics_backend::close_figure): Remove methods. (base_graphics_backend::redraw_figure, base_graphics_backend::print_figure, graphics_backend::redraw_figure, graphics_backend::print_figure): Change graphics_handle argument into graphics_object. (base_graphics_backend::property_changed, base_graphics_backend::object_created, base_graphics_backend::object_destroyed, graphics_backend::property_changed, graphics_backend::object_created, graphics_backend::object_destroyed): New signature with graphics_object argument. (base_properties::base_properties): Add set_id calls. (class base_properties): Add "enum" property fields. (root_figure::properties::remove_child): Add overloaded method. (figure::properties::close): Remove. (figure::properties::set_backend): Call object_destroyed instead of close. (figure::~figure): Remove close call. (figure::properties::get_title): New method. * graphics.cc (base_property::set): Call property_changed only for valid id (>=0); Use graphics_object argument. (gh_manager::do_free): Call object_destroyed with graphics_object argument. (base_graphics_backend::property_changed, base_graphics_backend::object_created, base_graphics_object::object_destroyed): Implement wrappers for graphics_handle argument case. (gnuplot_backend::close_figure): Remove. (gnuplot_backend::object_destroyed, gnuplot_backend::property_changed): New methods. (gnuplot_backend::redraw_figure, gnuplot_backend::print_figure): Change graphics_handle argument to graphics_object. (root_figure::properties::remove_child): Add. (figure::properties::close): Remove. (figure::properties::set_position): Do not call set_figure_position. (figure::properties::get_title): New method. (gh_manager::do_make_graphics_handle): Call object_created with a graphics_object argument. (gh_manager::do_make_figure_handle): Likewise. (Fdrawnow): Call redraw_figure and print_figure with a graphics_object argument. 2008-08-26 Maciek Gajewski <maciej.gajewski0@gmail.com> * graphics.h.in (base_property::set): Remove inline implementation. (base_graphics_backend::property_changed, base_graphics_backend::object_created, base_graphics_backend::object_destroyed): New method. (graphics_backend::property_changed, graphics_backend::object_created, graphics_backend::object_destroyed): Likewise. * graphics.cc (base_property::set): Moved from header file. (gh_manager::do_free): Add backend notification. (gh_manager::do_make_graphics_handle): Likewise. (gh_manager::do_make_figure_handle): Likewise. 2008-08-25 Thomas L. Scofield <scofield@calvin.edu> * DLD-FUNCTIONS/__magick_read__.cc: Untabify. (jpg_settings, encode_bool_image, encode_uint_image, encode_map): New functions. (write_image): Use them to handle various image types. 2008-08-25 David Bateman <dbateman@free.fr> * graphics.cc (void gh_manager::do_execute_callback (const graphics_handle&, const octave_value&, const octave_value&)): Don't pass the function handle as first arg of property listener functions * graphics.h.in (class base_properties): Add functor for caseless string comparison. Use it in the property map, so that user added properties are found in a case insensitive fashion. 2008-08-22 John W. Eaton <jwe@octave.org> * symtab.h (symbol_table::inherit): Pass reference to symbol table to do_inherit instead of scope. (symbol_table::do_inherit): First arg is now reference to symbol_table, not scope id. Insert all variables from donor scope. 2008-08-21 Thomas Treichl <Thomas.Treichl@gmx.net> * mappers.cc: Increase test script tolerance. 2008-08-20 John W. Eaton <jwe@octave.org> * help.cc (builtin_help): Go to next symbol name on error. (do_type, do_which): Omit separate path search for files. (help_from_symbol_table): Only insert Texinfo markup if it looks like the help message is already in Texinfo. 2008-08-19 David Bateman <dbateman@free.fr> * load-path.cc (load-path::do_find_dir (const std:string&) const)): Method to find a directory on the load-path corresponding to the argument. * load-path.h (load-path::do_find_dir (const std:string&) const), load-path::find_dir (const std::string&) const): New methods. * utils.cc (std::string contents_file_in_path (const std::string&)): New function. * utils.h (std::string contents_file_in_path (const std::string&)): Declare it. * help.cc (static bool raw_help_from_file (const std::string&, std::string&, std::string&, bool&)): Also check is requested argument is a directory and contains the file Contents.m. * OPERATORS/op-int-conv.cc (DEFINTCONVFN): New macro that warn for integer conversion issues. Use it to replace DEFCONVFN. * OPERATORS/op-int.h (DEFINTBINOP_OP, DEFINTNDBINOP_OP, DEFINTBINOP_FN, DEFINTNDBINOP_FN): New macros that warn for integer truncation issues. Use them to replace the corresponding macros in the integer arithmetic macros. Update other integer arithmetic functions that don't use these macros individually. * error.cc (initialize_default_warning_state (void)): Initialize the default warning state for the integer warnings to be off. * gripes.cc (void gripe_binop_integer_math_truncated (const char *, const char *, const char *), void gripe_unop_integer_math_truncated (const char *, const char *), void gripe_non_integer_conversion (const char *, const char *), void gripe_nan_conversion (const char *, const char *)): Warning functions for integer conversion and math issues. * gripes.h (void gripe_binop_integer_math_truncated (const char *, const char *, const char *), void gripe_unop_integer_math_truncated (const char *, const char *), void gripe_non_integer_conversion (const char *, const char *), void gripe_nan_conversion (const char *, const char *)): Declare them. * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::convert_gripe, OCTAVE_VALUE_INT_SCALAR_T::convert_gripe): Adapt for new means of flagging integer truncation. (OCTAVE_VALUE_INT_MATRIX_T::decrement, OCTAVE_VALUE_INT_MATRIX_T::increment, OCTAVE_VALUE_INT_SCALAR_T::decrement, OCTAVE_VALUE_INT_SCALAR_T::increment): Check for integer truncation. * ov.cc (convert_to_int_array): Adapt for new means of flagging integer truncation. 2008-08-19 Jaroslav Hajek <highegg@gmail.com> * pt-assign.h (tree_simple_assignment::first_execution): New member field. (tree_simple_assignment::first_execution): Ditto. * pt-assign.cc (tree_simple_assignment::tree_simple_assignment): Initialize first_execution. (tree_multi_assignment::tree_multi_assignment): Ditto. (tree_simple_assignment::rvalue): Check for obsolete built-in variables only at first execution. (tree_multi_assignment::rvalue): Ditto. * DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Checks whether LB and UB are of proper size. * oct-obj.cc, oct-obj.h (octave_value_list::make_argv): Allow calling without fcn_name. * load-save.cc (parse_save_options (const string_vector&, ...)): Return string_vector with parsed arguments removed instead. (parse_save_options (const std::string&, ...)): Ditto. (Fsave): Fix calls to parse_save_options. 2008-08-19 John W. Eaton <jwe@octave.org> * parse.y (Feval): Return value produced by evaluating CATCH string. 2008-08-12 John W. Eaton <jwe@octave.org> * pt-fcn-handle.cc (tree_anon_fcn_handle::rvalue): Call stash_parent_function_scope for user function. * ov-fcn-inline.cc (octave_fcn_inline::octave_fcn_inline): Likewise. * ov-struct.cc (octave_struct::subsref): Don't allow resizing for simple x(idx) case. 2008-08-07 John W. Eaton <jwe@octave.org> * ov.cc (octave_value::idx_type_value): Don't include default argument values in definition. * src/glrender.h, src/zfstream.h: Don't include config.h. * oct-errno.h: Include <cerrno>. * Cell.cc, DLD-FUNCTIONS/regexp.cc, DLD-FUNCTIONS/dlmread.cc, debug.cc, error.cc, file-io.cc, graphics.cc, help.cc, input.cc, lex.l, load-path.cc, load-save.cc, ls-mat-ascii.cc, ls-oct-ascii.cc, oct-stream.cc, octave.cc, variables.cc, ov-fcn-handle.cc, parse.y, pr-output.cc, symtab.cc, sysdep.cc, utils.cc, graphics.h.in: Replace all uses of NPOS with std::string::npos. * ov.cc (octave_value::idx_type_value): Move definition here. * ov.h: From here. * DLD-FUNCTIONS/fsolve.cc (override_options): Don't fail if options_map does not contain an expected keyword. Fix typo in warning identifier. (make_unimplemented_options): Use CamelCase names here. 2008-08-06 Søren Hauberg <hauberg@gmail.com> * error.cc (Ferror): Update format of error messages in exmple. * parse.y: (Feval): Likewise. 2008-08-06 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/fsolve.cc (hybrd_info_to_fsolve_info): Update INFO values to be compatible with Matlab's current fsolve. (make_unimplemented_options, override_options): New functions. (Ffsolve): Handle optimset options. Update doc string. * ov-usr-fcn.cc (octave_user_function::do_multi_index_op, octave_user_script::do_multi_index_op): Call octave_call_stack::backtrace_error_message. * toplev.h (octave_call_stack::do_pop): Don't call backtrace_error_message here. * toplev.cc, toplev.h (octave_call_stack::do_backtrace_error_message): Rename from octave_call_stack::backtrace_error_message. * toplev.h (octave_call_stack::backtrace_error_message): New public static function. 2008-08-05 John W. Eaton <jwe@octave.org> * gripes.cc (gripe_truncated_conversion, gripe_logical_conversion): Don't declare as extern here. * utils.cc (octave_format, octave_vformat): Likewise. * pr-output.cc (octave_print_internal (std::ostream&, const Cell&, bool, int, bool)): Likewise. * toplev.cc (octave_call_stack::backtrace_error_message): New function. * toplev.h: Provide decl. (octave_call_stack::do_pop): Call backtrace_error_message if error_state is nonzero. * pt-unop.cc (tree_prefix_expression::eval_error, tree_postfix_expression::eval_error): Delete. Eliminate all uses. * pt-unop.h: Delete decls. * pt-select.cc (tree_switch_case::eval_error, tree_switch_command::eval_error): Delete. Eliminate all uses. (tree_if_command::eval): Omit "evaluating if command" message. * pt-select.h: Delete decls. * pt-loop.cc (tree_while_command::eval_error, tree_complex_for_command::eval_error, tree_simple_for_command::eval_error, tree_do_until_command::eval_error): Delete. Eliminate all uses. * pt-loop.h: Delete decls. * pt-exp.cc (tree_expression::is_logically_true): Omit "evaluating conditional expression" error message. * pt-decl.cc (tree_global_command::eval): Omit "evaluating global command" error message. (tree_static_command::eval): Omit "evaluating static command" error message. * pt-colon.cc (tree_colon_expression::eval_error): Omit "evaluating colon expression" error message. * pt-colon.h (tree_colon_expression::eval_error): Eliminate default argument value. * pt-idx.cc (tree_index_expression::eval_error): Delete. Eliminate all uses. * pt-idx.h: Delete decl. * pt-binop.cc (tree_binary_expression::eval_error): Delete. * pt-binop.cc, pt-cbinop.cc: Eliminate all uses of eval_error. * pt-binop.h: Delete decl. * pt-assign.cc (tree_simple_assignment::eval_error, tree_multi_assignment::eval_error): Delete. Eliminate all uses. * pt-assign.h: Delete decls. * ov-usr-fcn.cc (octave_user_script::traceback_error, octave_user_function::traceback_error): Delete. Eliminate all uses. * ov-usr-fcn.h: Delete decls. * ov-builtin.cc (octave_builtin::do_multi_index_op): Call gripe_library_exectuion_error on octave_execution_exception. * ov-mex-fcn.cc (octave_mex_function::do_multi_index_op): Likewise. * ov.cc (do_binary_op, do_cat_op, do_unary_op, do_non_const_unary_op): Likewise. * pt-stmt.cc (tree_statement::eval): Likewise. * gripes.cc (gripe_library_execution_error): New function. * gripes.h: Provide decl. * dirfns.cc (Fpathsep): Fix usage of dir_path::path_sep_str. * defaults.cc (set_exec_path, set_image_path): Likewise. * load-path.h (load_path::set_command_line_path): Likewise. * load-path.cc (maybe_add_path_elts, load_path::do_initialize, load_path::do_path, genpath, Fpath): Likewise. (split_path): Fix usage of dir_path::path_sep_char. 2008-08-04 John W. Eaton <jwe@octave.org> * symtab.cc (symbol_table::fcn_info::fcn_info_rep::find_autoload): Fix usage of file_ops::dir_sep_chars. * variables.cc (looks_like_struct): Likewise. * ov-fcn-handle.cc (octave_fcn_handle::set_fcn): Likewise. * octave.cc (execute_command_line_file): Likewise. * ls-mat5.cc (read_mat5_binary_element): Likewise. * load-save.cc (find_file_to_load): Likewise. * load-path.cc (load_path::do_find_file): Likewise. * graphics.cc (drawnow): Likewise. * parse.y (frob_function): Likewise. * octave.cc (initialize_pathsearch): Fix usage of file_ops::dir_sep_str. * help.cc (Flookfor): Likewise. * dirfns.cc (Ffilesep): Likewise. (Fautoload): Likewise. * defaults.cc (subst_octave_home): Fix usage of file_ops::dir_sep_char. (Fmfilename): Likewise. 2008-07-31 John W. Eaton <jwe@octave.org> * parse.y (assign_lhs): Call force_local_variable on all elements of lexer_flags.pending_local_variables here, then clear the set. (matrix): Clear lexer_flags.pending_local_variable here. * lex.l (lexical_feedback::init): Clear it. (force_local_variable): No longer static. (is_variable): Also return true for names in the lexer_flags.pending_local_variables. (handle_identifier): If we are parsing a matrix list, mark identifiers as pending local variables rather than forcing them to be local variables immediately. * lex.h (lexical_feedback::pending_local_variables): New data member. (force_local_variable): Provide decl. 2008-07-30 John W. Eaton <jwe@octave.org> * ov-intx.h, ov.cc: Style fixes. * gripes.cc (gripe_truncated_conversion): Use the warning ID Octave:int-convert-overflow. 2008-07-30 Jaroslav Hajek <highegg@gmail.com> * gripes.cc (gripe_truncated_conversion): New function. * gripes.h (gripe_truncated_conversion): Declare it. * ops.h (DEFCONVFNX2): New macro. (DEFCONVFN, DEFCONVFN2): Call DEFCONVFNX2 instead of DEFCONVFNX. * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::convert_gripe): New member function. (OCTAVE_VALUE_INT_MATRIX_T::int*_array_value): Call convert_gripe. (OCTAVE_VALUE_INT_SCALAR_T::convert_gripe): New member function. (OCTAVE_VALUE_INT_SCALAR_T::int*_scalar_value): Call convert_gripe. (OCTAVE_VALUE_INT_SCALAR_T::int*_array_value): Call int*_scalar_value. * ov.cc (convert_to_int_array): New function. (int_vector_value): Call convert_to_int_array. 2008-07-30 John W. Eaton <jwe@octave.org> * defun-dld.h (DEFUNX_DLD): Eliminate fsname arg. * defun-int.h (DEFINE_FUN_INSTALLER_FUN2, DEFINE_FUN_INSTALLER_FUN3, DEFINE_FUNX_INSTALLER_FUN2): Delete. (DEFINE_FUNX_INSTALLER_FUN): Rename from DEFINE_FUNX_INSTALLER_FUN3. Don't emit fsname function. Don't append cxx_abi to gname. (DEFINE_FUN_INSTALLER_FUN): Define in terms of DEFINE_FUNX_INSTALLER_FUN, not DEFINE_FUN_INSTALLER_FUN2. * dynamic-ld.cc (octave_dynamic_loader::name_mangler, octave_dynamic_loader::name_uscore_mangler): New functions. (octave_dynamic_loader::mangle_name, octave_dynamic_loader::xmangle_name): Delete. (octave_dynamic_loader::do_load_oct): Search for function with name_mangler then name_uscore_mangler. * oct-stream.cc (do_read): New arg, do_NA_conv. Perform NA translation if do_NA_conv is true. (DO_READ_VAL_TEMPLATE, read_fptr): Include the new arg for do_read in decl. (octave_stream::read): Pass do_NA_conv to do_read. 2008-07-29 David Bateman <dbateman@free.fr> * data.cc (FNA): Add tests for conversion of single to double NA values. * ov-flt-re-mat.cc (Fsingle): Documentation fix. 2008-07-28 David Bateman <dbateman@free.fr> * error.cc (last_error_id, last_error_message, last_warning_id, last_warning_message): New functions to return the error/warning message and id without exposing the internal values. * error.h (last_error_id, last_error_message, last_warning_id, last_warning_message): Declare them. * DLD-FUNCTIONS/cellfun.cc (Fcellfun): Use them to pass the error to the ErrorHandler function. 2008-07-28 John W. Eaton <jwe@octave.org> * error.cc (Flasterror, Flasterr): Unwind-protect error_state. * DLD-FUNCTIONS/__magick_read__.cc (F__magick_write__, write_image): New functions. 2008-07-25 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/det.cc (Fdet): Return calculated determinant for numerically singular matrices, not 0. * symtab.cc (get_dispatch_type): New function. (symbol_table::fcn_info::fcn_info_rep::find): Use it. * ov-class.cc (set_class_relationship): Delete static function. (Fsuperiorto, Finferiorto): Warn about precedence conflicts. Call symbol_table::set_class_relationship instead of local static function. * symtab.h (symbol_table::class_precedence_table): New data member. (symbol_table::set_class_relationship, symbol_table::is_superiorto): New static functions. 2008-07-24 John W. Eaton <jwe@octave.org> * load-path.h (load_path::dir_info::class_info): New struct. (load_path::dir_info::method_file_map_type): Now a map from class name to a to a class_info object. Change all uses. * load-path.cc (load_path::dir_info::get_method_file_map): Also look for private functions in the class directory. (load_path::add_to_method_map): Also add private functions from class directories to private_fcn_map. * dirfns.cc (Fmkdir): If directory already exists, return status = true, but also set error message. 2008-07-23 John W. Eaton <jwe@octave.org> * ov-usr_fcn.cc (octave_user_function::do_multi_index_op): Don't unwind_protect and set curr_parent_function here. * toplev.cc (curr_parent_function): Delete definition. * toplev.h: (curr_parent_function): Delete declaration. * ov-usr-fcn.h (octave_user_function::parent_scope): New data member. (octave_user_function::parent_fcn_scope, octave_user_function::stash_parent_fcn_scope): New functions. * ov-usr_fcn.cc (octave_user_function::octave_user_function): Initialize parent_scope. * symtab.cc (symbol_table::fcn_info::fcn_info_rep::find): Check parent of current function by looking at call stack, not global curr_parent_function variable. * parse.y (frob_function): If parsing nested function, stash current parent function scope. * ov-fcn.h (octave_function::parent_fcn_scope): New virtual function. 2008-07-22 Michael Goffioul <michael.goffioul@gmail.com> * graphics.cc (F__go_execute_callback__): New function. * DLD-FUNCTIONS/fltk_backend.cc: Undefine min/max after FLTK headers inclusion. * graphics.h.in (class base_graphics_event, class graphics_event): New classes (replace gh_manager::event_data). (class gh_manager::event_data): Remove. (gh_manager::post_function, gh_manager::do_post_function): Use graphics_event::event_fcn type. (gh_manager::event_queue, gh_manager::do_post_event): Use graphics_event type. * graphics.cc (class callback_event, class function_event, class set_event): Renamed from xxx_data classes. (graphics_event::create_callback_event, graphics_event::create_function_event, graphics_event::create_set_event): Renamed from gh_manager::xxx equivalent methods, removed reference count increment. (gh_manager::do_post_event): Likewise. (gh_manager::do_post_event): Use graphics_event type. (gh_manager::do_post_function): Use graphics_event::event_fcn type. 2008-07-22 John W. Eaton <jwe@octave.org> * version.h (OCTAVE_VERSION): Now 3.1.51+. 2008-07-21 John W. Eaton <jwe@octave.org> * version.h (OCTAVE_VERSION): Now 3.1.51. (OCTAVE_RELEASE_DATE): Now 2008-07-21. * ov-class.cc (octave_class::subsasgn): Only do internal magic if rhs is not an octave_class object. * OPERATORS/op-struct.cc: Define concatenation operators for struct/matrix concatenation (valid if matrix is empty). * OPERATORS/op-cell.cc (install_cell_ops): Likewise, for cells. * DLD-FUNCTIONS/fltk_backend.cc: Don't include oct.h. Make compilation of entire file conditional on HAVE_FLTK. * gl-render.cc: Make compilation of entire file conditional on HAVE_OPENGL. * Makefile.in (GL_RENDER_SRC, FLTK_BACKEND_SRC): Delete variables. (DLD_XSRC): Always include fltk_backend.cc in the list. (DIST_SRC): Always include gl-render.cc in the list. 2008-07-19 John W. Eaton <jwe@octave.org> * version.h (OCTAVE_VERSION): Now 3.1.50+. (OCTAVE_API_VERSION): Now api-v33+. 2008-07-18 John W. Eaton <jwe@octave.org> * version.h (OCTAVE_VERSION): Now 3.1.50. (OCTAVE_API_VERSION): Now api-v33. (OCTAVE_RELEASE_DATE): Now 2008-07-18. (OCTAVE_COPYRIGHT): Update date to 2008. 2008-07-18 John W. Eaton <jwe@octave.org> * Makefile.in (__magick_read__.df): New rule. Append MAGICK_INCFLAGS to CPPFLAGS. * Makefile.in (EXTRAS): Add graphics-props.cc to the list. List graphics-props.cc as a target generated by genprops.awk. 2008-07-18 Carlo de Falco <carlo.defalco@gmail.com> * gl-render.h: Conditionally include GL/gl.h or OpenGL/gl.h and GL/glu.h or OpenGL/glu.h 2008-07-17 John W. Eaton <jwe@octave.org> * symtab.cc (out_of_date_check_internal): New arg, dispatch_type. Use it to handle class methods. * toplev.h (octave_call_stack::do_caller): New function. (octave_call_stack::caller): Use it. 2008-07-17 Jaroslav Hajek <highegg@gmail.com> * Makefile.in (convhulln.oct, __delaunayn__.oct, __voronoi__.oct, regexp.oct, urlwrite.oct, __glpk__.oct, fltk_backend.oct): Use OCT_LINK_DEPS instead of DL_LDFLAGS for target-specific dependencies. 2008-07-17 David Bateman <dbateman@free.fr> * DLD-FUNCTION/__magick_read__.cc (F__magick_read__): Allow build without GraphicsMagick++ installed. 2008-07-16 John W. Eaton <jwe@octave.org> * graphics.h.in (gh_manager::autolock): Delete copy constructor and assignment definitions. 2008-07-16 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (callback_property::execute): Remove static version. (base_properties::is_hittest, base_properties::is_interruptible, base_properties::is_selected, base_properties::is_selectionhighlight): New convenience property accessors. (base_graphics_object::get_handle, graphics_object::get_handle): Idem. (gh_manager::graphics_lock): New global mutex (gh_manager::lock, gh_manager::unlock, gh_manager::do_lock, gh_manager::do_unlock): Add accessors for it. (gh_manager::autolock): New class for easy locking of the graphics system. (gh_manager::event_data): New class for event management. (gh_manager::event_queue): New object to hold pending events. (gh_manager::callback_objects): New stack of callback objects. (gh_manager::execute_callback, gh_manager:post_callback, gh_manager::post_function, gh_manager::post_set, gh_manager::process_events, gh_manager::flush_events, gh_manager::restore_gcbo): New static methods for event management. (gh_manager::do_execute_callback, gh_manager::do_post_callback, gh_manager::do_post_function, gh_manager::do_post_set, gh_manager::do_process_events, gh_manager::do_post_event, gh_manager::do_restore_gcbo): New non-static versions. * graphics.cc (xreset_gcbo): Remove. (execute_callback): Likewise. (base_property::run_listeners, callback_property::execute): Use gh_manager::execute_callback. (class callback_event_data, class function_event_data, class set_event_data): New classes to implement various types of events. (gh_manager::event_data::create_callback_event, gh_manager::event_data::create_function_event, gh_manager::event_data::create_set_event): Implement event factory methods. (gh_manager::do_restore_gcbo, gh_manager::do_execute_callback, gh_manager::do_post_event, gh_manager::do_post_callback, gh_manager::do_post_function, gh_manager::do_post_set, gh_manager::do_process_events): New methods for event management. (Fishandle, Fset, Fget, F__get__, F__go_figure__, F__go_delete__, F__go_axes_init__, F__go_handles__, F__go_figure_handles__, Favailable_backends, Fdrawnow, Faddlistener, Faddproperty, get_property_from_handle, set_property_in_handle): Lock graphics system. (GO_BODY): Likewise. (Fdrawnow): Support single "expose" argument. 2008-07-15 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/__convn__.cc (convn): Cast second arg to octave_idx_type in call to std::max. 2008-07-14 John W. Eaton <jwe@octave.org> * Makefile.in (convhulln.oct, __delaunayn__.oct, __voronoi__.oct, regexp.oct, urlwrite.oct, __glpk__.oct, fltk_backend.oct): Simplify with target-specific settings for DL_LDFLAGS. * DLD-FUNCTIONS/__magick_read__.cc: Delete "using namespace std" and "using namespace Magick" directives. Style fixes. * oct-conf.h.in (OCTAVE_CONF_MAGICK_INCFLAGS, OCTAVE_CONF_MAGICK_LIBS): Substitute here. * toplev.cc (octave_config_info): Include MAGICK_INCFLAGS and MAGICK_LIBS in the struct. * Makefile.in (DLD_XSRC): Add __magick_read__.cc to the list. (OCTAVE_LIBS): Add $(MAGICK_LIBS) to the list for static linking case. (__magick_read__.d, __magick_read__.o, pic/__magick_read__.o): Append MAGICK_INCFLAGS to CPPFLAGS. (__magick_read__.oct): Append MAGICK_LIBS to LDFLAGS. 2008-07-14 Thomas L. Scofield <scofield@calvin.edu> * DLD-FUNCTIONS/__magick_read__.cc: New file from Octave Forge. 2008-07-11 John W. Eaton <jwe@octave.org> * syscalls.cc (const_value): Delete arg NM. Change all uses. * DLD-FUNCTIONS/fft.cc (do_fft): Avoid GCC warning. * DLD-FUNCTIONS/fft2.cc (do_fft2): Likewise. * DLD-FUNCTIONS/fftn.cc (do_fftn): Likewise. * DLD-FUNCTIONS/qr.cc (Fqrshift): Likewise. * DLD-FUNCTIONS/lookup.cc (Flookup): Likewise. * gl-render.cc (opengl_renderer::draw): Likewise. * graphics.cc (axes::update_axis_limits, hggroup::update_axis_limits, Favailable_backends): Likewise. * pt-cmd.cc (tree_no_op_command::dup, tree_function_def::dup): Likewise. * pt-const.cc (tree_constant::dup): Likewise. * pt-id.cc (tree_identifier::dup): Likewise. * pt-jump.cc (tree_break_command::dup, tree_continue_command::dup, tree_return_command::dup): Likewise. * DLD-FUNCTIONS/colamd.cc: Style fixes. (tree_postorder): Rename from TreePostorder. (tree_postorder, coletree): Avoid GCC warnings. * DLD-FUNCTIONS/chol.cc (Fchol): Avoid GCC warnings. (Fcholdelete, Fcholshift): Delete unused arg nargout. * toplev.cc, toplev.h (octave_call_stack::caller_user_function, octave_call_stack::caller_user_script, octave_call_stack::do_caller_user_function, octave_call_stack::do_caller_user_script): Delete functions and decls. * defun.cc (print_usage): Call octave_call_stack::caller_user_code, not octave_call_stack::caller_user_function. * debug.cc (get_user_code): Likewise. * toplev.h (octave_call_stack::difference_type): Delete typedef. * toplev.cc, toplev.h (octave_call_stack::caller_user_code_line, octave_call_stack::do_caller_user_code_line, octave_call_stack::caller_user_code_column, octave_call_stack::do_caller_user_code_column, octave_call_stack::caller_script, octave_call_stack::do_caller_script, octave_call_stack::caller_user_function, octave_call_stack::do_caller_user_function, octave_call_stack::caller_user_code, octave_call_stack::do_caller_user_code): Delete unused difference_type arg. * ov-float.h, ov-flt-re-mat.cc, ov-range.h, ov-re-mat.h, ov-re-sparse.cc, ov-scalar.h: Check for NaN in bool_value and bool_array_value member functions to bool. * ops.h (DEFSCALARBOOLOP_OP): New macro. * OPERATORS/op-s-s.cc, OPERATORS/op-fs-fs.cc: Use it to define el_and and el_or ops. 2008-07-10 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/lookup.cc (assign): Delete. (Flookup): Use new NDArray constructors rather than assign. * data.cc (Fsort): Use new NDArray constructors rather than directly assigning. * besselj.cc (int_array2_to_matrix, int_arrayn_to_array, int_array2_to_float_matrix, int_arrayn_to_float_array): Delete. (do-bessel): Use new NDArray constructors. * max.cc (MINMAX_SPARSE_BODY, MINMAX_INT_BODY, MINMAX_SINGLE_BODY, MINMAX_DOUBLE_BODY): Use new NDArray constructors. * ov-bool.h (array_value, float_array_value): Explictly cast boolean scalar to double before the assignment to avoid ambiguity. 2008-07-10 David Bateman <dbateman@free.fr> * ls-mat4.cc (read_mat_binary_data, save_mat_binary_data): Add loading and saving of sparse matrices. 2008-07-10 Michael Goffioul <michael.goffioul@gmail.com> * Makefile.in: Add OPENGL_LIBS to liboctinterp link command. Add GRAPHICS_CFLAGS to fltk_backend.cc compilation command. * data.cc: Define hypotf to _hypotf when not present. * gl-render.h: Replace OCTGRAPHICS_API with OCTINTERP_API. * gl-render.cc: Get rid of Array2<vertex_data>. * OPERATORS/op-int.h: Use powf instead of pow when invoked with float arguments. 2008-07-09 John W. Eaton <jwe@octave.org> * input.cc (get_debug_input): Don't delete global_command here. * toplev.cc (main_loop): Undo previous change. * toplev.h (octave_call_stack::instance_ok): Push top scope when creating instance. * DLD-FUNCTIONS/inv.cc (Finv): Avoid GCC warning. * DLD-FUNCTIONS/expm.cc (Fexpm): Avoid GCC warning. * ov-fcn-inline.cc (octave_fcn_inline::load_ascii): Avoid GCC warning. 2008-07-09 Michael Goffioul <michael.goffioul@gmail.com> * gl-render.cc (opengl_renderer::draw(figure)): Enable line smoothing according to __enhanced__ property. (opengl_renderer::draw_marker): Only draw markers with valid call lists ID. (opengl_renderer::make_marker_list): Do not produce filled marker call list for non-fillable markers. (opengl_renderer::draw(axes)): Do not antialias axes system. * gl-render.cc (opengl_renderer::set_polygon_offset): Also enable polygon offseting in GL_LINE mode. (opengl_renderer::draw_marker): Offset markers foward instead of backward (to draw them above lines). * Makefile.in: new substituted variables GL_RENDER_SRC and FLTK_BACKEND_SRC. * gl-render.cc (vertex_data::vertex_data_rep::vertex_data(void), vertex_data::vertex_data(void), vertex_data::vertex_data(...)): initialize reference counting correctly. 2008-07-09 John W. Eaton <jwe@octave.org> * toplev.cc (main_loop): Unwind-protect global_command. * input.cc (get_debug_input): Likewise. 2008-07-09 David Bateman <dbateman@free.fr> * pt-id.cc (octave_value_list tree_identifier::rvalue (int), octave_lvalue tree_identifier::lvalue (void)): Remove MAYBE_DO_BREAKPOINT. 2008-07-08 John W. Eaton <jwe@octave.org> * graphics.h.in (axes::properties::keypos): Declare as any_property instead of double_property. 2008-06-28 John W. Eaton <jwe@octave.org> * debug.cc (push_dummy_call_stack_elt): Delete. (Fdbstack): Don't push dummy stack elt. Use nskip instead of nframes, and curr_frame instead of idx. Pass curr_frame to octave_call_stack::backtrace. * ls-mat5.cc (read_mat5_binary_element): Explicitly pass 0 for current_context in call to symbol_table::varref. * ov-fcn-handle.cc (octave_fcn_handle::load_ascii): Likewise. Fix test. * mex.cc (mexGetVariable, mexPutVariable): Use octave_call_stack methods to manipulate scope and context. * parse.y (source_file, Fassignin, Fevalin): Likewise. * ov-usr-fcn.cc (octave_user_function::do_multi_index_op): Call octave_call_stack::push after call to symbol_table::push_scope. Call unwind_protect::add with octave_call_stack::unwind_pop immediately after call to octave_call_stack::push. * symtab.cc (symbol_table::xcurrent_caller_scope): Delete definition. * symtab.h (symbol_table::xcurrent_caller_scope): Delete decl. Delete all uses. (xcurrent_context_this_table): Delete. Delete all uses. (symbol_table::current_caller_scope): Delete. * toplev.cc (octave_call_stack::do_num_user_code_frames): New function. (octave_call_stack::do_backtrace): New arg, curr_user_frame. Rename nframes arg to nskip. Correctly handle curr_frame not at end of stack. (octave_call_stack::do_goto_frame_relative): Rename n arg to nskip. Correctly handle curr_frame not at end of stack. (octave_call_stack::do_goto_caller_frame): New function. (octave_call_stack::do_goto_base_frame): New function. * toplev.h: Provide decls for new functions. (octave_call_stack::call_stack_elt::prev): New data member. Initialize it in constructor. (octave_call_stack::const_reverse_iterator, octave_call_stack::reverse_iterator): New typedefs. (octave_call_stack::symbol_table::scope_id current_scope, octave_call_stack::symbol_table::context_id current_context, octave_call_stack::num_user_code_frames, octave_call_stack::goto_caller_frame, octave_call_stack::goto_base_frame, octave_call_stack::do_num_user_code_frames, octave_call_stack::do_current_scope, octave_call_stack::do_current_context): New functions. (octave_call_stack::push): Default value for context arg is symbol_table::current_context, not 0. (octave_call_stack::do_push): Save previous frame. Always push new frame on back of stack. Call symbol_table::set_scope_and_context. (octave_call_stack::do_pop): Restore previous frame. Always pop frame from back of stack. Call symbol_table::set_scope_and_context. 2008-06-26 John W. Eaton <jwe@octave.org> * token.h: Omit "class symbol_table::symbol_record" decl; * lex.l (grab_block_comment): Use parens around || expression within && expression. 2008-06-23 John W. Eaton <jwe@octave.org> * debug.cc (Fdbstack): Avoid shadowed variable warning. 2008-06-23 Jaroslav Hajek <highegg@gmail.com> * genprops.awk (emit_source): Avoid gensub for portability. (BEGIN): Ditto. 2008-06-20 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/regexp.cc (octregexp_list): Make "once" an output argument. (octregexp): Do not use cell arrays when "once" is requested. * ov.cc (make_vector_dims): New function. (vector_value, complex_vector_value, float_vector_value, float_complex_vector_value): Query N-d array values and simplify, avoid copying. (column_vector_value, complex_column_vector_value, float_column_vector_value, float_complex_column_vector_value, row_vector_value, complex_row_vector_value, float_row_vector_value, float_complex_row_vector_value): Simplify to trivial wrappers. (int_vector_value): Avoid conversions if integer type, query N-d array value, simplify. 2008-06-17 John W. Eaton <jwe@octave.org> * toplev.h, toplev.cc (class octave_call_stack): Push elements on and pop from back of queue. (octave_call_stack::do_push, octave_call_stack::do_pop): Always adjust curr_frame. (octave_call_stack::size, octave_call_stack::do_size): New functions. * pt-stmt.cc (tree_statement::eval): Also call octave_call_stack::set_statement when debugging. * debug.cc (push_dummy_call_stack_elt): New function. (Fdbstack): Omit dbstack from call stack by popping element rather than adjusting frame number. Correctly handle arg. 2008-06-12 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/qr.cc (Fqrupdate, Fqrinsert, Fqrshift, Fqrdelete): Allow single precision arguments, add tests for single precision. 2008-06-11 John W. Eaton <jwe@octave.org> * ov-base.cc (octave_base_value::streamoff_value, octave_base_value::streamoff_array_value): Delete. * ov-base.h: Delete decls. (octave_base_value::is_streamoff): Delete. * ov-float.cc (octave_float_scalar::streamoff_value, octave_float_scalar::streamoff_array_value): Delete. * ov-float.h: Delete decls. * ov-flt-re-mat.cc (octave_float_matrix::streamoff_array_value): Delete. * ov-flt-re-mat.h: Delete decl. * ov-re-mat.cc (octave_matrix::streamoff_array_value): Delete. * ov-re-mat.h: Delete decl. * ov-re-sparse.cc (octave_sparse_matrix::streamoff_array_value): Delete. * ov-re-sparse.h: Delete decl. * ov-scalar.cc (octave_scalar::streamoff_value, octave_scalar::streamoff_array_value): Delete. * ov-scalar.h: Delete decls. * ov.cc (octave_value::octave_value (const streamoff_array&), octave_value::octave_value (const ArrayN<std::streamoff>&), octave_value::streamoff_value (void) const, octave_value::streamoff_array_value (void) const): Delete. * ov.h: Delete decls. (octave_value::is_streamoff): Delete. * ov.cc (install_types): Don't register streamoff type. * ov-streamoff.h, ov-streamoff.cc, OPERATORS/op-streamoff.cc: Delete. * Makefile.in: Delete them from the lists. * error.cc (verror): Restore newline in msg_string. Stripping "error: " prefix when buffering error messages is no longer neeed. 2008-06-25 David Bateman <dbateman@free.fr> * pr-output.cc (Frats): Print usage if nargin == 0. 2008-06-10 John W. Eaton <jwe@octave.org> * mexproto.h (mxCreateLogicalScalar): Declar arg as mxLogical, not int. 2008-06-09 John W. Eaton <jwe@octave.org> * graphics.cc (execute_callback): Pass CB by const reference and explicitly make a copy. (xget_ancestor): Pass GO by const reference and explicitly make a copy. * error.cc (verror): Omit "name: " and "\a" from Vlast_error_msg. Save line and column information from user code. * toplev.cc (octave_call_stack::do_caller_user_code_line, octave_call_stack::do_caller_user_code_column): New functions. * toplev.h: Provide decls. (octave_call_stack::caller_user_code_line, octave_call_stack::caller_user_code_column): New functions. (octave_call_stack::current_line, octave_call_stack::current_column): Default return value is -1, not 0. 2008-06-06 John W. Eaton <jwe@octave.org> * ov.h (octave_value::erase_subfunctions): New function. * ov-base.h (octave_base_value::erase_subfunctions): New virtual function. * ov-usr-fcn.h (octave_user_function::erase_subfunctions): New function. * symtab.h (symbol_table::fcn_info::::erase_subfunction, symbol_table::fcn_info::fcn_info_rep::erase_subfunction, symbol_table::erase_subfunctions_in_scope): New functions. (symbol_table::fcn_info::fcn_info_rep::clear_user_function): Erase subfunctions here. * variables.cc (Fmlock): Doc fix. 2008-06-05 John W. Eaton <jwe@octave.org> * gl-render.cc (opengl_renderer::draw): Correctly avoid shadow warnings from gcc for xmin, xmax, ymin, ymax, zmin, and zmax. * graphics/ChangeLog, graphics/Makefile.in, graphics/Makerules.in, graphics/fltk_backend/Makefile.in, graphics/opengl/Makefile.in: Delete. * gl-render.cc, gl-render.h: Move here from src/graphics/opengl. * Makefile.in: Add them to the appropriate lists. (octave$(EXEEXT)): Also link with $(OPENGL_LIBS) * fltk_backend.cc: Move here from src/graphics/fltk_backend. * Makefile.in (DLD_XSRC): Add it to the list (fltk_backend.oct): Include special rules for linking with $(GRAPHICS_LIBS) and $(FT2_LIBS). * dynamic-ld.cc (octave_dynamic_loader::mex_mangler, octave_dynamic_loader::mex_uscore_mangler, octave_dynamic_loader::mex_f77_mangler): New functions. (octave_dynamic_loader::do_load_mex): Use them. (octave_dynamic_loader::do_remove_oct): Rename from octave_dynamic_loader::do_remove. (octave_dynamic_loader::do_remove_mex): New function. * dynamic-ld.h: Provide/fix decls. * graphics.cc (properties::update_normals): Style fixes. * graphics.h.in: Style fixes. ChangeLog entries for gl-render.h, gl-render.cc, and fltk_backend.cc before the move: 2008-06-05 John W. Eaton <jwe@octave.org> * opengl/gl-render.cc (xmin): New static function. * opengl/gl-render.h (opengl_renderer): Style fixes. * fltk_backend/fltk_backend.cc: Style fixes. 2008-04-26 Michael Goffioul <michael.goffioul@gmail.com> * opengl/gl-render.h (opengl_renderer::draw(hggroup)): New method. * opengl/gl-render.cc (opengl_renderer::draw(hggroup)): Likewise. (opengl_renderer::draw(graphics_object)): Call it. 2008-03-17 Shai Ayal <shaiay@users.sourceforge.net> * fltk_backend/fltk_backend.cc (plot_window::resize, plot_window::draw): make canvas the size of figure.position 2008-03-09 Shai Ayal <shaiay@users.sourceforge.net> * fltk_backend/fltk_backend.cc (plot_window::handle): add zoom stack 2008-03-06 Shai Ayal <shaiay@users.sourceforge.net> * fltk_backend/fltk_backend.cc (plot_window::handle): Add handling of the 'a' and 'g' keys (plot_window: toggle_grid): New helper function (plot_window): Add new togglegrid button 2008-03-01 Shai Ayal <shaiay@users.sourceforge.net> * fltk_backend/fltk_backend.cc (OpenGL_fltk::draw_overlay, OpenGL_fltk::zoom, OpenGL_fltk::set_zoom_box): Added to support zoom box (plot_window::handle): Added zoom box code, B-3 now does autoscale (plot_window::axis_auto): New utility function to call axis("auto") (plot_window::button_press): "A" button now does autoscale * opengl/gl-render.cc (make_marker_list): Add the "+x*.^v><" markers 2008-02-27 Michael Goffioul <michael.goffioul@gmail.com> * opengl/gl-render.cc (opengl_renderer::draw(patch), opengl_renderer::draw(surface)): Adapt to type change of facealpha and edgealpha, using double_radio_property class. 2008-02-26 Michael Goffioul <michael.goffioul@gmail.com> * opengl/gl-render.h: Make sure windows.h is included before OpenGL headers. * fltk_backend/Makefile.in (FLTK_EXTRA_CXXFLAGS): Use $(srcdir) for includesion of OpenGL renderer headers. (Makeconf): Move inclusion of Makeconf later on, to avoid freezing MinGW make. * fltk_backend/Makefile.in (GRAPHICS_CFLAGS): New substituted variable. 2008-02-25 Shai Ayal <shaiay@users.sourceforge.net> * fltk_backend/fltk_backend.cc (class plot_window): Many changes to use figure::properties instead of figure handle to reference the figure (class figure_manager): ditto (__fltk_redraw__): moved most of functionality into the figure_manager class (plot_window::pixel2pos): Modified to use axes::pixel2coord (plot_window::pixel2staus): Modified to use pixel2pos (plot_window::handle): Added zoom with mouse 2008-02-24 Shai Ayal <shaiay@users.sourceforge.net> * fltk_backend/fltk_backend.cc (OpenGL_fltk::Draw): removed double buffer switch (OpenGL_fltk::setup_viewport): removed call to glOrtho -- gl-render takes care of all the transformations 2008-02-23 Shai Ayal <shaiay@users.sourceforge.net> * fltk_backend/fltk_backend.cc (plot_window::mark_modifed): mark the whole window as damaged (otherwise changing figure.postion does not have immediate effect) (plot_window::draw): New function, checks for window size (__fltk_maxtime__): New DEFUN to allow tweaking of fltk timeout (__fltk_redraw__): Use fltk_maxtime as timeout 2008-02-21 Michael Goffioul <michael.goffioul@gmail.com> * opengl/gl-render.cc (opengl_renderer::patch_tesselator::combine): Protect against NULL vertex data. * opengl/gl-render.cc (opengl_renderer::draw(patch)): Add marker rendering of patch objects. 2008-02-21 Shai Ayal <shaiay@users.sourceforge.net> * opengl/gl-render.cc: remove OpenGL includes * opengl/gl-render.h: add OpenGL includes * fltk_backend/fltk_backend.cc: remove OpenGL includes (__fltk_redraw__): put figure handle into the figure's __plot_stream__ property for later (fltk_backend::close_figure): use argument as figure handle to close 2008-02-20 Shai Ayal <shaiay@users.sourceforge.net> * fltk_backend/Makefile.in: initial import * fltk_backend/fltk_backend.cc: initial import 2008-02-20 Michael Goffioul <michael.goffioul@gmail.com> * opengl/gl-render.h (opengl_renderer::draw(patch)): New method to render patch objects. (class opengl_renderer::patch_tesselator): Forward declaration. * opengl/gl-render.cc (opengl_texture::create): Use RGB data format instead of RGBA. (class opengl_tesselator): New classes to abstract GLU tessellation process. (class opengl_renderer::patch_tesselator): New class to render opaque patch objects. (class vertex_data): New class to hold vertex data during tessellation of patch objects. (opengl_renderer::draw(patch)): New method to render patch objects (no transparency, no border, no marker yet). (opengl_renderer::draw(graphics_object)): Dispatch to it. * opengl/gl-render.cc (opengl_renderer::draw(patch)): Use patch color data and support face/vertex single color specification. * opengl/gl-render.cc (opengl_tesselator::begin_polygon): Set tessellation property also for non-filled polygons. (opengl_renderer::patch_tesselator::vertex): Protect against empty color matrices. (opengl_renderer::draw(patch)): Render patch border (no transparency yet). 2008-02-19 Michael Goffioul <michael.goffioul@gmail.com> * opengl/gl-render.cc (opengl_texture::texture_rep::tex_coord, opengl_texture::tex_coord): New wrapper around glTexCoord2d. (opengl_renderer::draw(surface)): Use it for texturemap implementation. (opengl_renderer::draw(surface)): Fix indexing bug when creating clip matrix. (opengl_texture::operator=): Add assignment operator. (opengl_texture::create): New static opengl_texture creator. (opengl_texture::is_valid): New accessor. 2008-02-18 Michael Goffioul <michael.goffioul@gmail.com> * opengl/gl-render.cc (class opengl_texture): New class to wrap texture operations in OpenGL. 2008-02-17 Michael Goffioul <michael.goffioul@gmail.com> * opengl/gl-render.cc (opengl_renderer::draw(surface)): Set material color when rendering surface facets. * opengl/gl-render.cc (opengl_renderer::draw(surface)): Add rendering of mesh and markers. 2008-02-16 Michael Goffioul <michael.goffioul@gmail.com> * opengl/gl-render.cc (opengl_renderer::draw(figure)): Initialize the OpenGL context correctly. (opengl_renderer::draw(surface)): Add missing glEnd call. 2008-02-14 Michael Goffioul <michael.goffioul@gmail.com> * opengl/gl-render.h opengl/gl-render.cc: Add rendering interface for surface objects (actual implement still missing). 2008-02-14 Michael Goffioul <michael.goffioul@gmail.com> * Makefile.in Makerules.in: Initial import * opengl/Makefile.in: Likewise. * opengl/gl-render.h opengl/gl-render.cc: Likewise. 2008-06-04 Shai Ayal <shaiay@users.sourceforge.net> * graphics.cc (axes::properties::set_defaults): Preserve position if mode is replace. (axes::properties::sync_positions): Use default_axes_postion for consistency. * graphics.h.in (axes::properties::sync_positions, axes::properties::update_position, axes::properties::update_outerposition): New functions to sync outerposition and position. * graphics.h.in (axes::properties::update_xlim, axes::properties::update_ylim, axes::properties::update_zlim): pass is_logscale flag to axes::properties::calc_ticks_and_lims * graphics.cc (axes::properties::calc_ticks_and_lims): Added support for log scale * graphics.h.in (axes::properities::fix_limits) : New method. (axes::properties::update_xlim, axes::properties::update_ylim, axes::properties::update_zlim): Use fix_limits. * graphics.cc (axes::properties::calc_ticks_and_lims): Make sure that lo <= hi. * graphics.h.in (axes::pixel2coord, axes::coord2pixel): New functions. * graphics.cc (convert_position): No longer static. * graphics.h.in: Provide decl. * graphics.cc (Favailable_backends): New function. * graphics.h.in (base_graphics_backend::available_backends_list): New function. * graphics.cc (axes::properties::calc_ticks_and_lims): Refactor. Adjust axes limits & tics together so that the result is consistent. (axes::properties::calc_tick_sep): Ditto. (axes::properties::get_axis_limits): Ditto. Now a member of axes::properties (magform): Now file-scope static function instead of axes::properties member function. * graphics.h.in (axes::properties::update_xlim): call the new axes::properties::calc_ticks_and_lims method (axes::properties::update_ylim): ditto (axes::properties::update_zlim): ditto 2008-06-04 Michael Goffioul <michael.goffioul@gmail.com> * ov-fcn-inline.h (class octave_fcn_inline): Mark with OCTINTERP_API. * ov-fcn-handle.h (class Octave_fcn_handle): Likewise. * ls-oct-binary.h (save_binary_data, read_binary_data): Likewise. * genprops.awk (emit_source): Fix if-then-else statement generation when the first property is hidden. * graphics.h.in (base_properties::adopt): Call mark_modified. (class hggroup): New graphics object class. * graphics.cc (lookup_object_name, make_graphics_object_from_type, property_list::lookup, property_list::set, root_figure::init_factory_properties): Support hggroup as possible object type. (hggroup::update_axis_limits): New graphics object class. (make_graphics_object): Look for "parent" property in the arguments and use it as actual parent for the created object. (F__go_hggroup__): New function. (F__go_delete__): Set Vdrawnow_requested to true. * graphics.h.in (base_property::clone, string_property::clone, radio_property::clone, color_property::clone, double_property::clone, double_radio_property::clone, array_property::clone, row_vector_property::clone, bool_property::clone, handle_property::clone, callback_property::clone, any_property::clone, property::clone): New virtual method. (property::create): New static method to create dynamic properties. (base_properties::has_property): New method to check the existence of a property. (any_property::any_property, row_vector_property::row_vector_property, double_radio_property::double_radio_property): New copy constructors. * graphics.cc (lookup_object_name): New static utility function. (make_graphics_object_from_type): Likewise. (gh_manager::do_make_graphics_handle): Use it. (dprop_obj_map): New static map used for chaching purpose in dynamic property creation. (property::create): New static method to create dynamic properties. (base_properties::has_property): New method to check the existence of a property. (base_properties::override_defaults): Check parent validity. (Faddlistener): Documentation fix. (Faddproperty): New function to create dynamic properties. * genprops.awk (emit_get_array): Don't produce get_xxx_property accessors. * graphics.h.in (array_property::get_limits): New method to return the array limits. (base_properties::get_xdata_property, base_properties::get_ydata_property, base_properties::get_zdata_property, base_properties::get_ldata_property, base_properties::get_udata_property, base_properties::get_xldata_property, base_properties::get_xudata_property, base_properties::get_cdata_property): Remove methods, replaced with limit-based equivalent. (base_graphics_object::get_xdata_property, base_graphics_object::get_ydata_property, base_graphics_object::get_zdata_property, base_graphics_object::get_ldata_property, base_graphics_object::get_udata_property, base_graphics_object::get_xldata_property, base_graphics_object::get_xudata_property, base_graphics_object::get_cdata_property): Likewise. (graphics_object::get_xdata_property, graphics_object::get_ydata_property, graphics_object::get_zdata_property, graphics_object::get_ldata_property, graphics_object::get_udata_property, graphics_object::get_xldata_property, graphics_object::get_xudata_property, graphics_object::get_cdata_property): Likewise. (base_properties::get_xlim, base_properties::get_ylim, base_properties::get_zlim, base_properties::get_clim, base_properties::get_alim, base_properties::is_xliminclude, base_properties::is_yliminclude, base_properties::is_zliminclude, base_properties::is_climinclude, base_properties::is_aliminclude): New methods. (base_graphics_object::get_xlim, base_graphics_object::get_ylim, base_graphics_object::get_zlim, base_graphics_object::get_clim, base_graphics_object::get_alim, base_graphics_object::is_xliminclude, base_graphics_object::is_yliminclude, base_graphics_object::is_zliminclude, base_graphics_object::is_climinclude, base_graphics_object::is_aliminclude): Likewise. (graphics_object::get_xlim, graphics_object::get_ylim, graphics_object::get_zlim, graphics_object::get_clim, graphics_object::get_alim, graphics_object::is_xliminclude, graphics_object::is_yliminclude, graphics_object::is_zliminclude, graphics_object::is_climinclude, graphics_object::is_aliminclude): Likewise. (base_graphics_object::update_axis_limits): Provide default behavior by passing the call to the parent object. (line::properties::xdata, line::properties::ydata, line::properties::zdata, line::properties::ldata, line::properties::udata, line::properties::xldata, line::properties::xudata): Replace 'l' modifier with 'u'. (line::properties::xlim, line::properties::ylim, line::properties::zlim, line::properties::xliminclude, line::properties::yliminclude, line::properties::zliminclude): New hidden properties. (line::properties::update_xdata, line::properties::update_ydata, line::properties::update_zdata, line::properties::update_xldata, line::properties::update_xudata, line::properties::update_ldata, line::properties::update_udata): New updaters that update limit properties. (line::properties::compute_xlim, line::properties::compute_ylim): New method to compute actual limits taking into account x/y data and upper/lower bounds. (text::properties::position): Add 'u' modifier. (text::properties::xlim, text::properties::ylim, text::properties::zlim, text::properties::xliminclude, text::properties::yliminclude, text::properties::zliminclude): New hidden properties. (text::properties::update_position): New updater that updates limit properties. (image::properties::xdata, image::properties::ydata, image::properties::cdata): Replace 'l' modifier with 'u'. (image::properties::cdatamapping): Add 'l' modifier. (image::properties::xlim, image::properties::ylim, image::properties::clim, image::properties::xliminclude, image::properties::yliminclude, image::properties::climinclude): New hidden properties. (image::properties::get_climinclude, image::properties::is_climinclude): Provide specialized inline accessors. (image::properties::update_xdata, image::properties::update_ydata, image::properties::update_cdata): New updaters that update limit properties. (patch::properties::xdata, patch::properties::ydata, patch::properties::zdata, patch::properties::cdata): Replace 'l' modifier with 'u'. (patch::properties::cdatamapping): Add 'l' modifier. (patch::properties::alphadatamapping): New property. (patch::properties::xlim, patch::properties::ylim, patch::properties::zlim, patch::properties::clim, patch::properties::alim, patch::properties::xliminclude, patch::properties::yliminclude, patch::properties::zliminclude, patch::properties::climinclude, patch::properties::aliminclude: New hidden properties. (patch::properties::get_climinclude, patch::properties::is_climinclude, patch::properties::get_aliminclude, patch::properties::is_aliminclude): Provide specialized inline accessors. (patch::properties::update_xdata, patch::properties::update_ydata, patch::properties::update_zdata, patch::properties::update_cdata): New updaters that update limit properties. (surface::properties::xdata, surface::properties::ydata, surface::properties::zdata, surface::properties::cdata, surface::properties::alphadata): Replace 'l' modifier with 'u'. (surface::properties::cdatamapping, surface::properties::alphadatamapping): Add 'l' modifier. (surface::properties::xlim, surface::properties::ylim, surface::properties::zlim, surface::properties::clim, surface::properties::alim, surface::properties::xliminclude, surface::properties::yliminclude, surface::properties::zliminclude, surface::properties::climinclude, surface::properties::aliminclude: New hidden properties. (surface::properties::get_climinclude, surface::properties::is_climinclude, surface::properties::get_aliminclude, surface::properties::is_aliminclude): Provide specialized inline accessors. (surface::properties::update_xdata, surface::properties::update_ydata, surface::properties::update_zdata): Update limit properties. (surface::properties::update_cdata, surface::properties::update_alphadata): New updaters that update limit properties. * graphics.cc (base_properties::update_axis_limits): Simply call update_axis_limits in owning graphics_object. (base_graphics_object::update_axis_limits): Provide default behavior by passing the call to the parent object. (check_limits_vals(double&,double&,double&,const octave_value&)): New static method to work with new limit properties in graphics objects. (get_children_limits): New static method to compute the raw limits of a set of children, based on the new limit properties. (axes::update_axis_limits): Simplify and call get_children_limits. Add handling of alpha limits. (line::properties::compute_xlim, line::properties::compute_ylim): New methods to compute line limits taking into account upper/lower bounds. * graphics.cc (axes::properties::sync_positions): Update transformation data. * graphics.cc (Faddlistener): Rename from Fadd_listener. * graphics.h.in (axes::properties::pixel2coord): Center Z coordinate on x_zlim instead of 0. (axes::properties::zoom, axes::properties::unzoom, axes::properties::clear_zoom_stack): New methods to handle zoom stack. (axes::properties::zoom_stack): New field to hold zoom stack. (axes::properties::update_xlim, axes::properites::update_ylim): Additional do_clr_zoom argument to control whether the zoom stack will be cleared. (axes::properties::update_zlim): Clear zoom stack. * graphics.cc (axes::properties::zoom, axes::properties::unzoom, axes::properties::clear_zoom_stack): New methods to handle zoom stack. * genprops.awk (emit_source): Use all properties in factory defaults. * graphics.h.in (base_property::base_property): Set internal counter to 1 by default. (property::property): Adapt constructors to default counter value in base_property. * graphics.h.in (base_properties::get_property): Make virtual and remove const modifier. * graphics.cc (base_properties::get_property): Can return built-in properties. Generate an error if the property does not exist. (base_properties::add_listener): Use get_property. (Fadd_listener): Add documentation. * genprops.awk (emit_common_declarations, emit_source): Emit code for overloaded get_property method. * genprops.awk (emit_declarations): Run listeners in the property setter methods. * graphics.h.in (enum listener_mode): New enum type for listeners. (base_property::set): Make non-virtual and handle listeners execution. (base_property::listeners): New field holding a map of listeners. (base_property::add_listener, base_property::run_listeners, base_property::do_set): New methods to handle listeners. (property::add_listener, property::run_listeners): Likewise. (base_properties::add_listener): Likewise. (base_graphics_object::add_property_listener, graphics_object::add_property_listener): Likewise. (all property classes): Rename set to do_set and make it protected. * graphics.cc (base_property::run_listeners): New method to execute listeners. (color_property::set, double_radio_property::set, handle_property::set): Rename to do_set. (base_properties::add_listener): New method to handle listener additio. Only handle dynamic properties. (Fadd_listener): New octave interface to add property listeners to graphics object. * genprops.awk (emit_get_data): Remove. (emit_declarations): Treat row_vector_property as array_property and remove data_property references. * graphics.h.in (array_property::array_property(array_property)): Add copy constructor. (class data_property): Remove (replaced by array_property). (class base_graphics_backend, class graphics_backend): Replace data_property references with array_property. (line::properties::xdata, line::properties::ydata, line::properties::zdata, line::properties::ldata, line::properties::udata, line::properties::xldata, line::properties::xudata): Turn into row_vector_property. (image::properties::xdata, image::properties::ydata): Likewise. (image::properties::init): Add length constraints for xdata and ydata. (patch::properties::xdata, patch::properties::ydata, patch::properties::zdata, patch::properties::facevertexalphadata): Turn into array_property. (surface::properties::xdata, surface::properties::ydata, surface::properties::zdata): Likewise. (patch::properties::init): Add size constraints for xdata, ydata, zdata and facevertexalphadata. (surface::properties::init): Add size constraints for xdata, ydata and zdata. * graphics.cc (check_limit_vals): Remove override with data_property. (axes::update_axis_limits): Replace data_property references with array_property. * graphics.h.in (root_figure::get_default): Use factory defaults when no explicit default value exists. (figure::properties::set___backend__): Reset __plot_stream__ to empty value. * graphics.cc (gh_manager::gh_manager): Call graphics_backend::default_backend to make sure the default backend is initialized. * graphics.h.in (patch::properties::edgealpha, surface::properties::facealpha, surface::properties::edgealpha): Fix typos in property names. * graphics.h.in (class double_radio_property): New property class for holding face/edge alpha values. (patch::properties::facealpha, patch::properties::edgealpha, surface::properties::facealpha, surface::properties::edgealpha): Use double_radio_property class. * graphics.cc (double_radio_property::set): Implement new property class. * genprops.awk (emit_get_double_radio): New function to emit code for double_radio_property. (emit_declarations): Use it. * graphics.h.in (array_property::array_property(void)): New default constructor. (array_property::xmin, array_property:xmax, array_property::xminp, array_property::min_val, array_property::max_val, array_property::min_pos): New fields and accessors to hold min/max values of the array data. (array_property::get_data_limits): New method to compute min/max values of the array data. (base_properties::get_cdata_property, graphics_object::get_cdata_property): Return array_property. (image::properties::cdata, surface::properties::cdata, patch::properties::cdata, patch::properties::facevertexcdata): Turn into array_property type. (image::properties::init, surface::properties::init, patch::properties::init): Add constraint initialization for cdata and facevertexcdata (patch only). * genprops.awk (emit_get_array): New function to emit accessor for array_property. (emit_declarations): Use it. * graphics.cc (get_array_limits): New template function to compute min/max values of an Array<T> object. (array_property::get_data_limits): New method to compute min/max values of the array data, using get_array_limits. (check_limit_vals): Overridden function with array_property. (axes::update_axis_limits): Turn cdata property into array_property. * graphics.h.in (patch::properties::get_color_data): New utility function to retrieve actual color data. * graphics.cc (patch::properties::get_color_data): Likewise. * graphics.h.in (base_scaler::is_linear, lin_scaler::is_linear, scaler::is_linear): New method to detect linear scales. (graphics_xform::scale(Matrix)): New method to scale 2D/3D coordinates directly. (patch::properties::facelighting): Set default value to "none". * graphics.h.in (axes::axes): Be sure to initialize transformation data correctly. * graphics.cc (xget_ancestor): Pass graphics_object argument by value instead of by reference. * graphics.h.in (surface::properties::xdata, surface::properties::ydata, surface::properties::zdata, surface::properties::normalmode, surface::properties::vertexnormals): Add 'u' modifier. (surface::properties::update_normals): New method to compute normals automatically. (surface::properties::update_xdata, surface::properties::update_ydata, surface::properties::update_zdata, surface::properties::update_normalmode, surface::properties::update_vertexnormals): New updaters to update normals automatically. * graphics.cc (surface::properties::update_normals): Likewise. (cross_product): New inlined utility function for cross product computation adn accumulation. * graphics.h.in (class base_scaler, class lin_scaler, class log_scaler, class scaler): Add scale method for NDArray. (log_scaler::do_scale): Factorize scaling code. * graphics.h.in (figure::properties::update_position): Re-remove. (figure::properties::facecolor): Re-add 'texturemap' value. (surface::properties::get_color_data): New method to compute actual surface color data from cdata. * graphics.cc (surface::properties::get_color_data): Likewise. (xget_ancestor): New utility function to retrieve an ancestor of a given type. (convert_cdata): New utility function to convert cdata property into actual color data. * graphics.h.in (surface::properties::facecolor): Add "texturemap" as possible value. (class surface::properties): New properties alphadata, alphadatmapping, ambientstrength, backfacelighting, diffusestrength, edgealpha, edgelighting, erasemode, facelighting, meshstyle, normalmode, specularcolorreflectance, specularexponent, specularstrength, vertexnormals. (surface::properties::init): Add constraints for alphadata, vertexnormals and cdata (the latter are commented until cdata has changed type). * graphics.h.in (base_properties::update_boundingbox): New method to handle object resize. (figure::properties::set_boundingbox): New method to set figure position from backend. (figure::properties::update_position): Remove method. (figure::properties::position): Remove 'u' modifier and add 'S' modifier. (axes::properties::update_boundingbox): Overload to recompute transformation when axes size changed. * graphics.cc (base_properties::update_boundingbox): New method. (figure::properties::set_boundingbox, figure::properties::set_position): Likewise. * genprops.awk: Add 'U' modifier to support extern updaters. * graphics.h.in (base_graphics_backend::gripe_invalid): New method to simplify error reporting. (class base_graphics_backend): Use it. (base_graphics_backend::set_figure_position): New backend method. (graphics_backend::set_figure_position): Likewise. (figure::properties::position): Mark property with updater. (figure::properties::update_position): New updater. * graphics.h.in (root_figure::properties::callbackobject): New root property. (root_figure::properties::cbo_stack): New field. * graphics.cc (xset_gcbo, xreset_gcbo): New utility functions. (execute_callback): Set callbackobject property in root object before executing a callback. (root_figure::properties::set_callbackobject): Implement accessor. * graphics.h.in (root_figure::properties::callbackobject): New root property. (root_figure::properties::cbo_stack): New field. * graphics.cc (xset_gcbo, xreset_gcbo): New utility functions. (execute_callback): Set callbackobject property in root object before executing a callback. (root_figure::properties::set_callbackobject): Implement accessor. * graphics.h.in (class root_figure::properties, class line::properties, class text::properties, class image::properties, class patch::properties, class surface::properties): Export classes with OCTINTERP_API. * graphics.cc (axes::properties::set_defaults): Use correct default values for gridlinestyle and minorgridlinestyle. 2008-06-03 Jaroslav Hajek <highegg@gmail.com> * load-save.cc (Fload): Fix "-7" option. 2008-06-02 David Bateman <dbateman@free.fr> * pt.cc (tree:last_break_function): Next pointer to last function with a breakpoint. * pt.h (tree:last_break_function): ditto. * debug.cc (Fdbstep): Use tree::break_function value of zero to signal to step into the next function. Set tree::last_break_function to indicate position of last breakpoint. (Fdbnext): Set tree::last_break_function to indicate position of last breakpoint. * pt-bp.h (MAYBE_DO_BREAKPOINT): Check tree::break_function value of zero as well. Only check tree::last_line if we are in teh same function as the last breakpoint. * input.cc (char Vfilemarker): New global variable. (Ffilemarker): New function to query and set Vfilemarker. * input.h (extern char Vfilemarker): Make Vfilemarker available. * util.cc (fcn_file_in_path): If the input argument contains Vfilemarker, strip the trailing part of string from this point when looking for function file. * toplev.cc (octave_call_stack::fo_backtrace): Mark subfunctions with the name of the parent function and Vfilemarker. * symtab.cc (symbol_table::find_function (const std::string&, tree_argument_list *, const string_vector&, octave_value_list*, bool&): If function name contains Vfilemarker, check in scope of specified parent function. * DLD-FUNCTIONS/betainc.cc: Move test code here. Add test code for single precision type. * DLD-FUNCTIONS/gammainc.cc: Ditto. * DLD-FUNCTIONS/gcd.cc (Fgcd): Support single precision. Move test code here. Add test code for single precision type. * data.cc: Move test code here and add tests for single precision type. Add tests for Fislogical. (NATIVE_REDUCTION): Support the 'double' argument. * mapper.cc: Move test code here and add tests for single precision type. * ov-float.cc (CD_SCALAR_MAPPER): Replace Complex with FloatComplex. (erf, erfc, abs, acos, asin, asinh, atan, atanh, ceil, cos, cosh, exp, expm1, floor, log10, log1p, sin, sinh, sqrt, tan, tanh): Use float version of base functions (ie. ::sinf and not ::sin) (lgamma, acosh, log, log2, log10, log1p): Use single precision infinity value. * ov-flt-complex.cc (erf, erfc, expm1, log1p): Use the float version of base functions. * ov-flt-cx-mat.cc (DARRY_MAPPER): Replace NDArray with FloatNDArray. (erf, erdc, gamma): Use FloatNDArray::dmapper and not NDArray::dmapper. * ov-flt-cx-mat.h (is_double_type): Delete. (is_single_type): New method. * ov-flt-re-mat.cc (lgamma, acosh, log, log2, log10, log1p, sqrt): Use single precision infinity value. * chol.cc (Fcholinv, Fchol2inv, Fcholupdate, Fcholinsert, Fcholdelete, Fcholshift): Allow single precision arguments. (Fchol): Move test code here. Add test code for single precision. (Fcholupdate, Fcholinsert, Fcholdelete, Fcholshift): Add test code for single precision. * conv2.cc (Fconv2): Add single precision test code. * det.cc (Fdet): For single values or empty matrices, return single precision arg for single precion input. Move test code here. Add single precision test code. * fft.cc (do_fft): For empty single precision arguments return a single precision value. Add single precision test code. Remove fft2 test code. * fft2.cc (do_fft2): For empty single precision arguments return a single precision value. Add single precision test code. Move fft2 test code here. * fftn.cc (do_fftn): For empty single precision arguments return a single precision value. * eig.cc (Feig): Move test code here. Add single precision test code. * expm.cc (Fexpm): Ditto. * find.cc (Ffind): Ditto. * hess.cc (Fhess): Ditto. * inv.cc (Finc): Ditto. * lu.cc (Flu): Ditto. * qr.cc (Fqr): Ditto. * schur.cc (Fschur): Ditto. * svd.cc (Fsvd): Ditto. * syl.cc (Fsyl): Ditto. * op-fcm-fcm.cc, op-fcm-fcs.cc, op-fcm-fm.cc, op-fcm-fs.cc, op-fcs-fcm.cc, op-fcs-fcs.cc, op-fcs-fm.cc, op-fcs-fs.cc, op-fm-fcm.cc, op-fm-fcs.cc, op-fm-fm.cc, op-fm-fs.cc, op-fs-fcm.cc, op-fs-fcs.cc, op-fs-fm.cc, op-fs-fs.cc: Add mixed double, single precision concatenation operators. * data.cc (Fall, Fany, Fdiag, Fcat, Fismatrix, Fones, Fzeros, Finf, FNaN, FNA, Feye, Flinspace, Freshape, Ftranspose, Fctranspose, Fsort). Move tests here. Add single precision tests. * mappers.cc (Ffinite, Fisinf, Fisna, Fisnan): Ditto. * ov-float.cc (octave_float_scalar:resize): single precision return value. * ov.cc (octave_value::octave_value (const FloatComplexDiagMatrix&)): Ditto. * data.cc (Fnorm): Add single precision. (do_cat): Disable fast return and skipping empty matrices, as they play a part in determining the return type. * ov.cc (octave_value do_cat_op (const octave_value&, const octave_value&, const Array<octave_idx_type>&)): ditto. 2008-06-02 Jaroslav Hajek <highegg@gmail.com> * ov-cell.cc (Fcellstr): For compatibility with Matlab, return {''} when given ''. 2008-05-26 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/fsolve.cc (fsolve_user_function, fsolve_user_jacobian): Reshape argument to original dims before passing. (Ffsolve): Save original dimensions of the starting guess and reshape on return. Fix tests. 2008-05-21 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/quad.cc (quad_float_user_function): New function. (Fquad): Handle float type. New tests. 2008-05-21 Jaroslav Hajek <highegg@gmail.com> * OPERATORS/op-fcm-fcm.cc (trans_mul, mul_trans, herm_mul, mul_herm): New functions. (install_fcm_fcm_ops): Install them. * OPERATORS/op-fm-fm.cc (trans_mul, mul_trans): New functions. (install_fm_fm_ops): Install them. * OPERATORS/op-sm-m.cc (trans_mul): New function. (install_sm_m_ops): Register it. * OPERATORS/op-m-sm.cc (mul_trans): New function. (install_m_sm_ops): Register it. * OPERATORS/op-scm-cm.cc (trans_mul, herm_mul): New function. (install_scm_cm_ops): Register it. * OPERATORS/op-cm-scm.cc (mul_trans, mul_herm): New function. (install_cm_scm_ops): Register it. * dMatrix.cc: Declare DSYRK. (xgemm): Call DSYRK if symmetric case detected. * CMatrix.cc: Declare ZSYRK, ZHERK. (xgemm): Call ZSYRK/ZHERK if symmetric/hermitian case detected. * ov.h (octave_value::compound_binary_op): New enum. (do_binary_op (octave_value::compound_binary_op, ...), octave_value::binary_op_fcn_name (compound_binary_op), octave_value::do_binary_op (compound_binary_op, ...)): New declarations. (OV_COMP_BINOP_FN): New macro (+ several expansions). * ov.cc (octave_value::binary_op_fcn_name (compound_binary_op), decompose_binary_op, do_binary_op (compound_binary_op, ...)): New functions. * ov-typeinfo.h (octave_value_typeinfo::register_binary_class_op (octave_value::compound_binary_op, ...), octave_value_typeinfo::register_binary_op (octave_value::compound_binary_op, ...), octave_value_typeinfo::do_register_binary_class_op (octave_value::compound_binary_op, ...), octave_value_typeinfo::do_register_binary_op (octave_value::compound_binary_op, ...), octave_value_typeinfo::do_lookup_binary_class_op (octave_value::compound_binary_op), octave_value_typeinfo::do_lookup_binary_op (octave_value::compound_binary_op, ...)): New declarations. (octave_value_typeinfo::lookup_binary_class_op (octave_value::compound_binary_op), (octave_value_typeinfo::lookup_binary_op (octave_value::compound_binary_op, ...)): New functions. (octave_value_typeinfo::compound_binary_class_ops, octave_value_typeinfo::compound_binary_ops): New fields. * ov-typeinfo.cc (octave_value_typeinfo::register_binary_class_op (octave_value::compound_binary_op, ...), octave_value_typeinfo::register_binary_op (octave_value::compound_binary_op, ...), octave_value_typeinfo::do_register_binary_class_op (octave_value::compound_binary_op, ...), octave_value_typeinfo::do_register_binary_op (octave_value::compound_binary_op, ...), octave_value_typeinfo::do_lookup_binary_class_op (octave_value::compound_binary_op), octave_value_typeinfo::do_lookup_binary_op (octave_value::compound_binary_op, ...)): New functions. (octave_value::do_register_type): Resize also compound_binary_ops field. * pt-exp.h (tree_expression::is_unary_expression): New virtual function. * pt-unop.h (tree_unary_expression::is_unary_expression): New virtual override. * pt-cbinop.h, pt-cbinop.cc: New files (implement tree_compound_binary_expression class). * pt-all.h: Include pt-cbinop.h. * Makefile.in (PT_INCLUDES, PT_SRC): Include them in the lists. * parse.y (make_binary_op): Call maybe_compound_binary_expression. * OPERATORS/op-m-m.cc (trans_mul, mul_trans): New operator handlers. (install_m_m_ops): Register them. * OPERATORS/op-cm-cm.cc (trans_mul, mul_trans, herm_mul, mul_herm): New operator handlers. (install_cm_cm_ops): Register them. * DLD-FUNCTIONS/matrix_type.cc: Fix tests relying on the older more optimistic hermitian check. 2008-05-21 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/rcond.cc (Frcond): Add support for single precision. * DLD-FUNCTIONS/sqrt.m: Replace DBL_* with FLT_* for single precision types. * data.cc (static octave_value fill_matrix (const octave_value_list&, double, float, const char *)): Add function with additional argument to allow for different valid for double and single precision. (Finf, FNaN, FNA, Frealmax, Frealmin): Use it here. (Feps): Modify behavior for a single numerical argument to give difference to next largest value in the class of the type passed. 2008-05-21 John W. Eaton <jwe@octave.org> * pt-idx.h (tree_index_expression::tree_index_expression (int, int)): Delete default argument values. 2008-05-20 David Bateman <dbateman@free.fr> * data.cc (Flog2): Handle single precision. * ov-float.h, ov.float.cc, ov-flt-complex.h, ov-flt-complex.cc, ov-flt-re-mat.h, ov-flt-re-mat.cc, ov-flt-cx-mat.h, ov-flt-cx-mat.cc: Provide single precision version of log2 mapper function. * DLD-FUNCTIONS/__convn__.cc, DLD-FUNCTIONS/__pchip_deriv__.cc, DLD-FUNCTIONS/besselj.cc, DLD-FUNCTIONS/betainc.cc, DLD-FUNCTIONS/conv2.cc, DLD-FUNCTIONS/gammainc.cc, DLD-FUNCTIONS/givens.cc, DLD-FUNCTIONS/kron.cc, DLD-FUNCTIONS/lookup.cc, DLD-FUNCTIONS/syl.cc, data.cc: Prefer demotion to single precision rather than promotion to double. * ov-float.cc, ov-float.h, ov-flt-complex.cc, ov-flt-complex.h, ov-flt-cx-mat.cc, ov-flt-cx-mat.h, ov-flt-re-mat.cc, ov-flt-re-mat.h (numeric_conversion_function (void) const): Remove method. * ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc, ov-scalar.h (numeric_conversion_function (void) const): Add method for conversion to single precision. * DLD-FUNCTIONS/conv2.cc (Fconv2): Don't access third arg if we don't have one. * DLD-FUNCTIONS/balance.cc, DLD-FUNCTIONS/expm.cc, DLD-FUNCTIONS/find.cc, DLD-FUNCTIONS/hess.cc, DLD-FUNCTIONS/qr.cc: COnvert for use with single precision. * OPERATORS/op-int.h, OPERATORS/op-int-conv.cc, OPERATORS/op-int-concat.cc: Adapt for single precision. * 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: Add includes for single precision types. * OPERATORS/op-b-b.cc, OPERATORS/op-b-bm.cc, OPERATORS/op-bm-b.cc, OPERATORS/op-fcm-fs.cc, OPERATORS/op-fcs-fs.cc, OPERATORS/op-fm-fs.cc, OPERATORS/op-fs-fcm.cc, OPERATORS/op-fs-fcs.cc, OPERATORS/op-fs-fm.cc, OPERATORS/op-fs-fs.cc, OPERATORS/op-int.h, ov.cc, ov-scalar.cc, ov-float.h, ov-flt-complex.cc, ov-float.cc, ov-flt-re-mat.cc, ov-flt-cx-mat.cc: Replace octave_float with octave_scalar_float * OPERATORS/op-fm-fm.cc, OPERATORS/op-fm-fs.cc, OPERATORS/op-fm-fcm.cc, OPERATORS/op-fm-fcs.cc, OPERATORS/op-fs-fm.cc, OPERATORS/op-fs-fs.cc, OPERATORS/op-fs-fcm.cc, OPERATORS/op-fs-fcs.cc, OPERATORS/op-fcm-fm.cc, OPERATORS/op-fcm-fs.cc, OPERATORS/op-fcm-fcm.cc, OPERATORS/op-fcm-fcs.cc, OPERATORS/op-fcs-fm.cc, OPERATORS/op-fcs-fs.cc, OPERATORS/op-fcs-fcm.cc, OPERATORS/op-fcs-fcs.cc, OPERATORS/op-m-m.cc, OPERATORS/op-m-s.cc, OPERATORS/op-m-cm.cc, OPERATORS/op-m-cs.cc, OPERATORS/op-s-m.cc, OPERATORS/op-s-s.cc, OPERATORS/op-s-cm.cc, OPERATORS/op-s-cs.cc, OPERATORS/op-cm-m.cc, OPERATORS/op-cm-s.cc, OPERATORS/op-cm-cm.cc, OPERATORS/op-cm-cs.cc, OPERATORS/op-cs-m.cc, OPERATORS/op-cs-s.cc, OPERATORS/op-cs-cm.cc, OPERATORS/op-cs-cs.cc: Add mixed single/double assign operators. * ov.h (numeric_demotion_function): New method for double to single demotion. * ov-base.h (numeric_demotion_function): Declare virtual version. * ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc, ov-scalar.h (numeric_cdemote_function (void) const): Add method for conversion to single precision renamed from the method numeric_conversion_function * ov.cc (do_binary_op): Use demotion function seperately than the numeric conversion function so as to avoid isses like a=zeros(2,2);a(1,:)=1:2. * OPERATORS/op-fcm-fcm.cc, OPERATORS/op-fcm-fcs.cc, OPERATORS/op-fcm-fm.cc, OPERATORS/op-fcm-fs.cc, OPERATORS/op-fcs-fcm.cc, OPERATORS/op-fcs-fcs.cc, OPERATORS/op-fcs-fm.cc, OPERATORS/op-fcs-fs.cc, OPERATORS/op-fm-fcm.cc, OPERATORS/op-fm-fcs.cc, OPERATORS/op-fm-fm.cc, OPERATORS/op-fm-fs.cc, OPERATORS/op-fs-fcm.cc, OPERATORS/op-fs-fcs.cc, OPERATORS/op-fs-fm.cc, OPERATORS/op-fs-fs.cc, ov-float.cc, ov-float.h, ov-flt-complex.cc, ov-flt-complex.h, ov-flt-cx-mat.cc, ov-flt-cx-mat.h, ov-flt-re-mat.cc, ov-flt-re-mat.h: New files. * Makefile.in (OV_INCLUDES, OV_SRC, OP_XSRC. FLOAT_OP_XSRC, DOUBLE_OP_XSRC): Add them here. * DLD-FUNCTIONS/__convn__.cc, DLD-FUNCTIONS/__lin_interpn__.cc, DLD-FUNCTIONS/__pchip_deriv__.cc, DLD-FUNCTIONS/besselj.cc, DLD-FUNCTIONS/betainc.cc, DLD-FUNCTIONS/bsxfun.cc, DLD-FUNCTIONS/chol.cc, DLD-FUNCTIONS/conv2.cc, DLD-FUNCTIONS/det.cc, DLD-FUNCTIONS/eig.cc, DLD-FUNCTIONS/fft.cc, DLD-FUNCTIONS/fft2.cc, DLD-FUNCTIONS/fftn.cc, DLD-FUNCTIONS/fftw.cc, DLD-FUNCTIONS/filter.cc, DLD-FUNCTIONS/gammainc.cc, DLD-FUNCTIONS/givens.cc, DLD-FUNCTIONS/inv.cc, DLD-FUNCTIONS/kron.cc, DLD-FUNCTIONS/lookup.cc, DLD-FUNCTIONS/lu.cc, DLD-FUNCTIONS/matrix_type.cc, DLD-FUNCTIONS/max.cc, DLD-FUNCTIONS/pinv.cc, DLD-FUNCTIONS/schur.cc, DLD-FUNCTIONS/sqrtm.cc, DLD-FUNCTIONS/svd.cc, DLD-FUNCTIONS/syl.cc, DLD-FUNCTIONS/symbfact.cc, DLD-FUNCTIONS/typecast.cc, OPERATORS/op-b-b.cc, OPERATORS/op-b-bm.cc, OPERATORS/op-bm-b.cc, OPERATORS/op-bm-bm.cc, OPERATORS/op-cm-cm.cc, OPERATORS/op-cs-cs.cc, OPERATORS/op-m-m.cc, OPERATORS/op-range.cc, OPERATORS/op-s-s.cc, bitfcns.cc, data.cc, oct-stream.cc, ov-base.cc, ov-base.h, ov-bool-mat.cc, ov-bool-mat.h, ov-bool.h, ov-ch-mat.cc, ov-ch-mat.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-intx.h, ov-range.cc, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-scalar.h, ov.cc, ov.h, pr-output.cc, pr-output.h, pt-mat.cc, utils.cc, utils.h, xdiv.cc, xdiv.h, xpow.cc, xpow.h: Allow single precision types. 2008-05-20 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/rcond.cc: New function. * Makefile.in (DLD_XSRC): Add it here. * debug.cc (Fdbstop): If no line specified assume line 1. (Fdbstep, Fdbcont, Fdbnext): Move debugging functions to normal commands. (Fdbquit): New command to quit debugging mode and return to the prompt. (Fdbstep): Modify the dbstep command for compatibility. * input.cc (Vdebugging_current_line): Store current line being debugged for use in DEFCMD versions of debug commands. (match_sans_spaces_semi): Delete. (static void get_debug_input (const std;string&)): New function to parse input in debug mode using standard Octave parser. (static octave_value_list get_user_input (const octave_value_list&, int)): Remove debugging specialization. * input.h (Vdebugging_current_line): Store current line being debugged for use in DEFCMD versions of debug commands. * parse.y (make_return_command): Special handling in debug mode. * pt-bp.h (MAYBE_DO_BREAKPOINT): Support break in n lines needed to support "dbstep N". * pt.cc (tree::break_next): Convert to a down counter to support break in N lines. Breakpoint occure when tree::break_next is zero. * toplev.cc (octave_user_script * octave_call_stack::do_caller_user_script (difference_type) const): Support skipping the first N functions to support "dbstep out". (octave_user_function * octave_call_stack::do_caller_user_function (difference_type) const): Ditto. (octave_user_code * octave_call_stack::do_caller_user_code (difference_type) const): Ditto. * toplev.h (octave_user_script * octave_call_stack::do_caller_user_script (difference_type) const): Add difference_type argument. (octave_user_function * octave_call_stack::do_caller_user_function (difference_type) const): Ditto. (octave_user_code * octave_call_stack::do_caller_user_code (difference_type) const): Ditto. (static octave_user_script *caller_script (difference_type)): Ditto. (static octave_user_function *caller_user_function (difference_type q)): Ditto. (static octave_user_code *caller_user_code (difference_type q)): Ditto. 2008-05-20 Kim Hansen <kimhanse@gmail.com> * load-path.cc (load_path::do_initialize): Include separator when appending sys_path. 2008-05-20 Bill Denney <bill@denney.ws> * file-io.cc (Ffgets, Fgets, Ffputs, Ffscanf): Doc fix (seealso). 2008-05-20 Thomas Weber <thomas.weber.mail@gmail.com> * DLD-FUNCTIONS/rand.cc (Frandn): Doc fix. 2008-05-20 David Bateman <dbateman@free.fr> * load-save.cc (do_load): Treat non verbose list_only output in the same manner as Fwho. * symtab.h (static void clear_variable_regexp (const std::string&): New method. (static std::list<symbol_record> regexp (const std::string&)): Ditto. (static std::list<symbol_record> regexp_variables (const std::string&)): Ditto. (static std::list<symbol_record> regexp_global_variables (const std::string&)): Ditto, (static std::list<symbol_record> regexp_variables (const string_vector&)): Ditto. (void do_clear_variable_regexp (const std::string&)): Ditto. (std::list<symbol_record> do_regexp (const std::string&, bool) const): Ditto. (do_who): Accept the "-regexp" option. Use regexp versions of symbol table functions. (static inline bool name_match_any_pattern (const string_vector&, int, int, bool): Add regexp argument, and use regexp matching if true. (do_clear_variables): Add regexp option and pass to name_match_any_pattern. (Fclear): Accept the -regexp option. 2008-05-07 John W. Eaton <jwe@octave.org> * pt-arg-list.cc, pt-arg-list.h (tree_argument_list::dup): New arg, context. * pt-assign.cc, pt-assign.h (tree_simple_assignment::dup, tree_multi_assignment::dup): Likewise. * pt-binop.cc, pt-binop.h (tree_binary_expression::dup, tree_boolean_expression::dup): Likewise. * pt-cell.cc, pt-cell.h (tree_cell::dup): Likewise. * pt-cmd.cc, pt-cmd.h (tree_no_op_command::dup, tree_function_def::dup): Likewise. * pt-colon.cc, pt-colon.h (tree_colon_expression::dup): Likewise. * pt-const.cc, pt-const.h (tree_constant::dup): Likewise. * pt-decl.cc, pt-decl.h (tree_decl_elt::dup, tree_decl_init_list::dup, tree_global_command::dup, tree_static_command::dup): Likewise. * pt-except.cc, pt-except.h (tree_try_catch_command::dup, tree_unwind_protect_command::dup): Likewise. * pt-exp.h (tree_expression:dup): Likewise. * pt-fcn-handle.cc, pt-exp.h (tree_expression:dup): Likewise. * pt-fcn-handle.h (tree_fcn_handle::dup, tree_anon_fcn_handle::dup): Likewise. * pt-id.cc, pt-id.h (tree_identifier::dup): Likewise. * pt-idx.cc, pt-idx.h (tree_index_expression::dup): Likewise. * pt-jump.cc, pt-jump.h (tree_break_command::dup, tree_continue_command::dup, tree_return_command::dup): Likewise. * pt-loop.cc, pt-loop.h (tree_while_command::dup, tree_do_until_command::dup, tree_simple_for_command::dup, tree_complex_for_command::dup): Likewise. * pt-mat.cc, pt-mat.h (tree_matrix::dup): Likewise. * pt-misc.cc, pt-misc.h (tree_parameter_list::dup, tree_return_list::dup): Likewise. * pt-select.cc, pt-select.h (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, tree_statement::dup, tree_statement_list::dup, tree_prefix_expression::dup, tree_postfix_expression::dup): Likewise. * ov-fcn-handle.cc (octave_fcn_handle::save_ascii, octave_fcn_handle::save_binary, octave_fcn_handle::save_hdf5): Pass context to symbol_table::all_variables. * load-save.cc (dump_octave_core): Likewise. * ov-fcn-handle.cc (Ffunctions): Don't skip anonymous functions with the name set to the text of the function body. Pass context to symbol_table::all_variables and symbol_table::symbol_record::varval. * symtab.h (symbol_table::varref, symbol_table::do_varref, symbol_table::varval, symbol_table::do_varval, symbol_table::all_variables, symbol_table::do_all_variables, symbol_table::symbol_record::varref, symbol_table::symbol_record::varval, symbol_table::symbol_record::is_defined, symbol_table::symbol_record::is_variable, symbol_table::symbol_record::symbol_record_rep::varref, symbol_table::symbol_record::symbol_record_rep::varval, symbol_table::symbol_record::symbol_record_rep::is_defined, symbol_table::symbol_record::symbol_record_rep::is_variable, ): * symtab.h (symbol_table::do_inherit): New arg, donor_context. Look for value in donor_contxt. Set value in base context. * symtab.cc (symbol_table::symbol_record::symbol_record_rep::dump): Pass xcurrent_context to varval. 2008-05-06 David Bateman <dbateman@free.fr> * ov-fcn-inline.cc (Finline): Also ignore NaN, Inf, pi, NA and eps. * bitfcns.cc (BITOP): Treat octave_bool types and octave_scalar. 2008-05-06 John W. Eaton <jwe@octave.org> * symtab.h (symbol_table::scope_id_cache): New class. Use it to replace scope_ids_in_use and scope_ids_free_list. (symbol_table::erase_scope): Call free_scope. (symbol_table::free_scope): Call scope_id_cache::free. * ov-fcn.h (octave_function::lock_subfunctions, octave_function::unlock_subfunctions): New virtual functions. (octave_function::lock_subfunctions): Call lock_subfunctions here. (octave_function::unlock_subfunctions): Call unlock_subfunctions here. * ov-usr-fcn.h (octave_user_function::lock_subfunctions, octave_user_function::unlock_subfunctions): New functions. * symtab.h (symbol_table::lock_subfunctions, symbol_table::lock_subfunctions, symbol_table::fcn_info::lock_subfunction, symbol_table::fcn_info::unlock_subfunction, symbol_table::fcn_info::fcn_info_rep::lock_subfunction, symbol_table::fcn_info::fcn_info_rep::unlock_subfunction): New functions. * symtab.h (symbol_table::set_scope, symbol_table::get_instance): Don't set instance unless allocation succeeds. (symbol_table::print_scope, symbol_table::do_print_scope): Delete. (symbol_table::free_scope): Avoid using invalid iterator. (symbol_table::erase_scope): Call free_scope here. * ov-fcn-handle.cc (octave_fcn_handle::load_ascii, octave_fcn_handle::load_binary, octave_fcn_handle::load_hdf5): Cache anonymous name here. (octave_fcn_handle::octave_fcn_handle): Move here from ov-fcn-handle.h. Cache name if function is user-defined. * pt-id.cc (tree_identifier::dup): Avoid shadow warning. * symtab.h (symbol_table::cache_name, symbol_table::do_cache_name): New functions. (symbol_table::get_instance): Cache top-level name here. * parse.y (finish_function): Call symbol_table::cache_name here. * symtab.cc (F__dump_symtab_info__): New function. * symtab.cc (symbol_table::dump, symbol_table::dump_global, symbol_table::dump_functions, symbol_table::do_dump, symbol_table::symbol_record::symbol_record_rep::dump, symobl_table::fcn_info::fcn_info_rep::dump): New functions. * symtab.h: Provide decls. (symtab::scopes, symbol_table::symbol_record::dump, symbol_table::fcn_info::dump): New functions. (symtab::get_instance): New arg, create; if false throw error if instance for given scope is not found. * ov-base.cc (octave_base_value::dump): New virtual function. * ov-base.h: Proivde decl. * ov.h (octave_value::dump): New function. * ov.h, ov.c (octave_value::function_value): New const version. * ov-base.h, ov-base.cc (octave_base_value::function_value): Likewise. * ov-builtin.h (octave_builtin::function_value): Likewise. * ov-fcn-handle.h (octave_fcn_handle::function_value): Likewise. * ov-mex-fcn.h (octave_mex_function::function_value): Likewise. * ov-usr-fcn.h (octave_user_script::function_value, octave_user_function): Likewise. * symtab.h, symtab.cc: Use consistent naming scheme for iterator typedefs. Change all uses. * variables.cc (F__print_symtab_info__, F__print_symbol_info__): Delete. * 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-05 John W. Eaton <jwe@octave.org> * input.cc (Fre_read_readline_init_file): New function. 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. * parse.y (frob_function): Don't install subfunctions here. (finish_function): Handle subfunctions here. Conditionally define tree_function_def object here. * symtab.h (symbol_table::fcn_info::fcn_info_rep::find_function): Initialize args_evaluated. * pt-id.cc (tree_identifier::rvalue): Likewise. * variables.cc (symbol_exist): Likewise. * pt-id.h (tree_identifier::tree_identifer): Delete useless statement. * variables.cc (get_global_value): Use symbol_table::global_varval instead of passing scope to symbol_table::varval. (set_global_value): Use symbol_table::global_varref instead of passing scope to symbol_table::varref. (do_who): Use symbol_table::glob_global_variables instead of passing scope to symbol_table::glob_variables. (do_clear_globals): Use symbol_table::global_variable_names and symbol_table::clear_global instead of passing scope to symbol_table::clear_variables. Use symbol_table::global_variable_names instead of passing scope to symbol_table::variable_names. * unwind-prot.cc (unwind_protect::save_size_t): New function. (saved_variable::restore_value): Handle size_t values. (saved_variable::saved_variable): New size_t constructor. (saved_variable::size_type): New var_type enum value. (saved_variable::ptr_to_size_t, saved_variable::size_t_value): New union elements. * unwind-prot.h (unwind_protect::save_size_t): Provide decl (unwind_protect_size_t): New macro. * toplev.cc (octave_call_stack::do_goto_frame, octave_call_stack::do_goto_frame_relative): New functions. (octave_call_stack::do_backtrace): Also return scope and context ids. * toplev.h (octave_call_stack::do_goto_frame, octave_call_stack::do_goto_frame_relative): Provide decls. (octave_call_stack::curr_frame): New data member. (octave_call_stack::octave_call_stack): Initialize it. (octave_call_stack::call_stack_elt::scope, (octave_call_stack::call_stack_elt::context): New data members., (octave_call_stack::current_frame, (octave_call_stack::do_current_frame octave_call_stack::do_goto_frame, octave_call_stack::do_goto_frame_relative): New functions. (octave_call_stack::push, octave_call_stack::do_push): New args, scope and context. (octave_call_stack::do_push, octave_call_stack::do_pop): Update curr_frame if debugging. * symtab.cc (symbol_table::global_table): New map for global values. (symbol_table::xcurrent_context): New variable for context info. * symtab.h: Provide decls. (symbol_table::global_varref, symbol_table::global_varval, symbol_table::current_context, symbol_table::set_scope_and_context, symbol_table::glob_global_variables, symbol_table::global_variable_names, symbol_table::top_leve_variable_names): New functions. (symbol_table::context_id, const_global_table_iterator, global_table_iterator): New typedefs. (symbol_table::xcurrent_context_this_table): New variable. (symbol_table::symbol_table): Initialize it. (symbol_table::set_scope): Use it. (symbol_table::symbol_record::find, symbol_table::do_find): Use symbol_table::global_varref instead of passing scope to symbol_table::varref. (symbol_table::symbol_record::symbol_record_rep::value_stack): Now a std::deque instead of a std::stack. (symbol_table::symbol_record::symbol_record_rep::push_context, symbol_table::symbol_record::symbol_record_rep::pop_context): Don't push or pop persistent of global variables. (symbol_table::symbol_record::symbol_record_rep::varval, Handle context here. Call symbol_table::global_varval instead of passing scope to symbol_table::varval. (symbol_table::symbol_record::symbol_record_rep::varref): Handle context here. Call symbol_table::global_varref instead of passing scope to symbol_table::varref. (symbol_table::symbol_record::varref, symbol_table::symbol_record::varval): No need to handle global values specially here. (symbol_table::symbol_record::push_context symbol_table::symbol_record::pop_context: No need to handle global or persistent values specially here. (symbol_table::get_instance): Don't return global scope. (symbol_table::do_push_context, symbol_table::do_pop_context): Increment/decrement xcurrent_context. (symbol_table::do_clear_global, symbol_table::do_clear_global_pattern): Use global_table instead of separate scope. * symtab.h, symtab.cc (symbol_table::fcn_info::fcn_info_rep::find, symbol_table::fcn_info::fcn_info_rep::find_function, symbol_table::fcn_info::find, symbol_table::fcn_info::find_function, symbol_table::find, symbol_table::find_function, symbol_table::do_find, symbol_table::insert, symbol_table::varref, symbol_table::varval, symbol_table::persistent_varref, symbol_table::persistent_varval, symbol_table::erase_persistent, symbol_table::is_variable, symbol_table::clear, symbol_table::clear_variables, symbol_table::clear_global, symbol_table::clear_variable, symbol_table::clear_global_pattern, symbol_table::clear_variable_pattern, symbol_table::push_context, symbol_table::pop_context, symbol_table::mark_hidden, symbol_table::mark_global, symbol_table::glob, symbol_table::glob_variables, symbol_table::variable_names, symbol_table::is_local_variable, symbol_table::is_global): Eliminate scope arg. Change all uses. (symbol_table::erase_scope, symbol_table::dup_scope): Require scope arg. * pt-stmt.cc (tree_statement::eval): Don't update statement info in octave_call_stack if debugging. * pt-id.h (tree_identifier::xsym): New function. (tree_identifier::rvalue, tree_identifier::lvalue, tree_identifier::dup, tree_identifier::is_defined, tree_identifier::is_variable, tree_identifier::mark_global, tree_identifier::mark_as_static, tree_identifier::do_lookup, tree_identifier::mark_as_formal_parameter): Use xsym to access symbol. (tree_identifier::scope): New data member. (tree_identifier::tree_identifier): Initialize it. * ov-usr-fcn.cc (octave_user_script::octave_user_script, octave_user_function::octave_user_function): Initialize call_depth to -1. (octave_user_script::do_multi_index_op): Fix comparison of call_depth with Vmax_recursion_depth. (octave_user_function::do_multi_index_op): Compare call depth > 0, instead of > 1. * ov-usr-fcn.h (octave_user_function::save_args_passed): Compare call depth > 0, instead of > 1. * input.cc (Vdebugging): New variable. (get_user_input): Eliminate DEBUG argument. Use global Vdebugging variable instead. Change all callers. (saved_frame): New static variable. (restore_frame): New function. (do_keyboard): Unwind-protect Vdebugging here and set it to TRUE. Save current frame. Use unwind_protect to restore it. (Fkeyboard): Save current frame. Use unwind_protect to restore it. Move up the call stack one frame before calling do_keyboard. * input.h (Vdebugging): Provide decl. * mex.cc (mexGetVariable): Handle global vars with get_global_value. (mexPutVariable): Likewise, with set_global_value. * octave.cc (intern_argv): Assert that we are at the top level. Don't pass scope to symbol_table::varref or symbol_table::mark_hidden. * load-save.cc (install_loaded_variable): Use symbol_table::global_varref instead of passing global scope to symbol_table::varref. * help.cc (make_name_list): Call symbol_table::global_variable_names and symbol_table::top_level_variable_names instead of passing scope to symbol_table::variable_names. * debug.cc (do_dbupdown, Fdbup, Fdbdown): New functions. (current_stack_frame): Delete static variable. (Fdbstack): Rename from F__dbstack__. Implement all of dbstack here instead of partially in dbstack.m. 2008-05-03 John W. Eaton <jwe@octave.org> * pt-arg-list.cc (F__end__): If there are more dimensions than indices, smash extra dimensions first. (num_indices): New static variable. (tree_argument_list::convert_to_const_vector): Save and set it. * parse.y (parse_fcn_file): Also temporarily set parser_end_of_input and get_input_from_eval_string to false while reading script files. 2008-05-01 John W. Eaton <jwe@octave.org> * parse.y (load_fcn_from_file): Expect * dynamic-ld.cc (octave_dynamic_loader::do_load_oct): Search currently loaded .oct files by file name. Don't search currently loaded files for functions. (octave_shlib_list::find_file, octave_shlib_list::do_find_file): New functions. (octave_shlib_list::search, octave_shlib_list::do_search): Delete. * dynamic-ld.cc (octave_dynamic_loader::do_load_oct): No need to do load_path lookups here. (octave_shlib_list::iterator, octave_shlib_list::const_iterator): New typedefs. (octave_shlib_list::do_remove, octave_shlib_list::do_search, octave_shlib_list::do_display): Use them. (octave_mex_file_list::iterator, octave_mex_file_list::const_iterator): New typedefs. (octave_mex_file_list::do_remove): Use them. 2008-05-03 Rafael Laboissiere <rafael@debian.org> * DLD-FUNCTIONS/time.cc, file_io.cc: Use ischar instead of deprecated isstr. 2008-04-30 John W. Eaton <jwe@octave.org> * dynamic-ld.cc (octave_dynamic_loader::do_load_oct): If function already exists, reload it anyway. Clear existing oct_file only if reloading a function from the same file. (octave_shlib_list::display): New static function. (octave_shlib_list::do_display): New function. * symtab.cc (out_of_date_check_internal): Better handling for functions found in files by relative file names. (load_out_of_date_fcn): New function. * ls-oct-ascii.cc (extract_keyword): Return early if first char is not a comment character. (read_ascii_data): Accept .nargin. and .nargout. as valid identifiers. * ov-fcn-handle.cc: Combine tests. Test saving and loading handles for built-in, .oct, and .m functions. (octave_fcn_handle::save_ascii, octave_fcn_handle::save_binary, octave_fcn_handle::save_hdf5, octave_fcn_handle::print): Avoid dereferencing invalid pointer. * data.cc: Fix tests. Use "%!assert", not "%! assert" for individual assert tests. 2008-04-30 Jaroslav Hajek <highegg@gmail.com> * ov-base.cc, ov-base.h, ov-bool-mat.h, ov-bool-sparse.h, ov-bool.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-cx-sparse.cc, ov-cx-sparse.h, ov-intx.h, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc, ov-scalar.h, ov.h: Provide log2 mapper function. * data.cc (Flog2): New function. 2008-04-25 John W. Eaton <jwe@octave.org> * pt-stmt.h (tree_statement_list::function_body): New data member. (tree_statement_list::tree_statement_list): Initialize it. (tree_statement_list::mark_as_script_body): New function. (tree_statement::maybe_echo_code, tree_statement::eval): Rename in_function_body argument to in_function_or_script_body. * pt-stmt.cc (tree_statement::eval): Only set statement in call stack if in_function_or_script_body is true. * pt-stmt.cc (tree_statement_list::eval): Call elt->eval with function_body || script_body. * ov-usr-fcn.cc (octave_user_script::octave_user_script): command list as script body here. (octave_user_function::octave_user_function): Mark command list as function body here. * parse.y (start_function, make_anon_fcn_handle): Not here. * toplev.h, toplev.cc (octave_call_stack::backtrace, octave_call_stack::do_backtrace): New arg, N. Skip innermost N stack frames. * debug.cc (F__dbstack__): New function. (current_stack_frame): New static variable. * error.cc (verror, pr_where): Use octave_call_stack instead of tree_statement stack to get line and column information. (pr_where): Use octave_call_stack instead of tree_statement stack to get current statement. * input.cc (get_user_input): Extract current line number from octave_call_stack instead of tree_statement_stack. * pt-stmt.cc (tree_statement::eval): Put current statement on octave_call_stack instead of tree_statement_stack. * pt-stmt.h, pt-stmt.cc (class tree_statement_stack): Delete. * toplev.h, toplev.cc (octave_call_stack::call_stack_elt): New nested struct. (octave_call_stack::cs): Now a deque of call_stack_elts. Change all uses. (octave_call_stack::current_statement, octave_call_stack::current_line, octave_call_stack::current_column, octave_call_stack::top_statement, octave_call_stack::set_statement, octave_call_stack::backtrace): New static functions. (octave_call_stack::do_current_line, octave_call_stack::do_current_column, octave_call_stack::do_top_statement, octave_call_stack::do_set_statement, octave_call_stack::do_backtrace): New member functions. 2008-04-24 John W. Eaton <jwe@octave.org> * toplev.h, toplev.cc (octave_call_stack::unwind_pop_script): Delete unused function. * ov-usr-fcn.cc: Move constructor definitions here, from ov-usr-fcn.h. * ov-usr-fcn.h (octave_user_script::octave_user_script): Also Initialize t_parsed and t_checked. 2008-04-24 Jaroslav Hajek <highegg@gmail.com> * ov-usr-fcn.h (octave_user_script::octave_user_script): Initialize call_depth. 2008-04-24 John W. Eaton <jwe@octave.org> * file-io.cc (do_stream_open): Return -1 for directories. 2008-04-23 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/__qp__.cc (qp): Avoid bounds error when removing constraint from active set. * lex.l (text_yyinput): New function. Use it in place of yyinput. (next_token_is_sep_op, scan_for_comments, eat_whitespace, have_continuation): No need to check for CR or CRLF. * parse.y (text_getc): Also return NL for single CR. 2008-04-32 Michael Goffioul <michael.goffioul@gmail.com> * input.cc (get_input_from_file): Open file in binary mode. 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> * lex.l, lex.h (process_comment): New arg, start_in_block. Call grab_block_comment if start_in_block is true. Change all uses. * lex.l (grab_block_comment): New function. (grab_comment_block): New arg, at_bol. Change all uses. Call grab_block_comment if we find the start of a block comment. (block_comment_nesting_level): New static variable. (^{S}*{CCHAR}\{{S}*{NL}): New rule. (<<EOF>>): Warn about open block comments. (reset_parser): Set block_comment_nesting_level to zero. * parse.y (parse_fcn_file): Stash help text from gobble_leading_white_space after calling reset_parser. (text_getc): Keep track of input_line_number here. (skip_white_sapce): Don't increment input_line_number here. * lex.l (grab_comment_block): Or here. * lex.l (Vdisplay_tokens): New static variable. (F__display_tokens__): New function. (display_token): New function. (DISPLAY_TOK_AND_RETURN): New macro. (COUNT_TOK_AND_RETURN): Use DISPLAY_TOK_AND_RETURN. (<COMMAND_START>[\"\'], "'", \"): Move handle_string outside of COUNT_TOK_AND_RETURN macro parameter list. (handle_identifier): Don't use macros to return token values here. (<MATRIX_START>{S}*{COMMENT}{SNLCMT}*|<MATRIX_START>{S}*{NL}{SNLCMT}*): Recognize block comments here. * pr-output.cc (Fdisp): If nargout > 0, produce an sq-string unless arg is a dq-string. 2008-04-17 John W. Eaton <jwe@octave.org> * parse.y (looks_like_copyright): Handle leading whitespace. (class stdio_stream_reader): New class. (skip_white_space): New function. (gobble_leading_white_space): New arg, EOF. Change all uses. Use skip_white_space and grab_comment_block to process comments. (process_leading_comments): Delete. (parse_fcn_file): Call gobble_leading_white_space instead of process_leading_comments. Skip parsing if gobble_leading_white_space detects EOF. * lex.l (process_comment): Delete CCHAR arg. Change all uses. ({CCHAR}): Unput comment character before calling process_comment. (grab_comment_block): Rename from grab_help_text. Don't discard spaces from comment text. Update input_line_number and current_input_column as characters are read. Warn only once about incompatible comment characters in a given block of comments. Use stream_reader class instead of accessing yyinput and yyunput directly. (class flex_stream_reader): New class. (process_comment): Use grab_comment_block to handle all comments. Don't call maybe_gripe_matlab_incompatible_comment. Always store comment text returned by grab_comment_block. * lex.h (grab_comment_block): Provide decl. (class stream_reader): New class. 2008-04-16 John W. Eaton <jwe@octave.org> * parse.y (Fautoload, Fmfilename): Call octave_call_stack::caller_user_code, not octave_call_stack::caller_user_script_or_function. * toplev.cc, toplev.h (octave_call_stack::caller_user_code): Rename from octave_call_stack::caller_user_script_or_function. (octave_call_stack::do_caller_user_code): Rename from octave_call_stack::do_caller_user_script_or_function. * ov-usr-fcn.h (class octave_user_code): New class, derived from octave_fucntion. (class octave_user_function, class octave_user_script): Derive from octave_user_code, not octave_function. (octave_user_script::user_code_value, octave_user_function::user_code_value): New functions. * ov.cc (octave_value::user_script_value, octave_value::user_code_value): New functions. * ov.h: Provide decls. (octave_value::is_user_code, octave_value::is_user_script): New functions. * ov-base.cc (octave_base_value::user_script_value, octave_base_value::user_code_value): New virutal functions. * ov-base.h: Provide decls. (octave_base_value::is_user_script, octave_base_value::is_user_code): New virtual functions. * error.cc (verror, pr_where, error_2, warning_1): Call octave_call_stack::caller_user_code instead of octave_call_stack::caller_user_script_or_function * input.cc (get_user_input): Likewise. * debug.h (bp_table::breakpoint_map): Use pointer to octave_user_code instead of octave_user_function. * debug.cc (get_user_code): Rename from get_user_function. Return pointer to octave_user_code instead of octave_user_function. Change all uses. (bp_table::do_add_breakpoint, bp_table::do_remove_breakpoint, bp_table::do_remove_all_breakpoints_in_file, bp_table::do_get_breakpoint_list): Avoid dereferencing invalid pointers. (parse_dbfunction_params): Call octave_call_stack::caller_user_code, not octave_call_stack::caller_user_script_or_function. * load-save.cc (Fsave): Fix continuation character in doc string. * pt-walk.h (tree_walker::visit_function_def): New function. * pt-pr-code.cc (tree_print_code::visit_function_def): New function. * pt-pr-code.h: Provide decl. * pt-bp.cc (tree_breakpoint::visit_function_def): New function. * pt-bp.h: Provide decl. * pt-check.cc (tree_checker::visit_function_def): New function. * pt-check.h: Provide decl. * parse.y (finish_function): Return ptr to tree_function_def object if curr_fcn_ptr is not defined. Avoid dereferencing invalid pointers. (frob_function): Set curr_fcn_ptr only when reading a function file. (function): Call finish function in both cases to generate value of production. * pt-cmd.h, pt-cmd.cc (tree_function_def): New class. * parse.y (parse_and_execute): Delete. * parse.h: Delete decl. * pt-pb.cc (tree_breakpoint::visit_octave_user_script): New function. * pt-pb.h: Provide decl. * pt-check.cc (tree_checker::visit_octave_user_script): New function. * pt-check.h: Provide decl. * pt-pr-code.cc (tree_print_code::visit_octave_user_script): New function. * pt-pr-code.h: Provide decl. * pt-walk.h (visit_octave_user_script): New pure virtual function. * parse.y (make_script, process_leading_comments, looking_at_function_keyword): New static functions. (SCRIPT): New token. (script): New non-terminal. (command): Handle script here. (parse_fcn_file): Eliminate EXEC_SCRIPT argument. Change all callers. Parse scripts and return an octave_user_script rather than executing them here. (load_fcn_from_file): Handle script and function files the same. (source_file): Call d_multi_index_op on object returned by parse_fcn_file. (is_function_file): Delete. (gobble_leading_white_space): Don't recurse. Simplify. Eliminate SKIP_CODE, IN_PARTS, and SAVE_COPYRIGHT arguments. Change all callers. (octave_function_ptr): Delete unused typedef. (get_help_from_file): If help text isn't found by gobble_leading_whitespace, parse file to find it. * lex.l (SCRIPT_FILE_BEGIN): New exclusive start state. (prep_lexer_for_script): New function. (grab_help_text): New arg, EOF. (process_comment): New function. ({CCHAR}): Use it. * lex.h (prep_lexer_for_script): Provide decl. * lex.h, lex.cc, parse.y (lexical_feedback::beginning_of_function): Delete data member and all uses. * ov-usr-fcn.cc (octave_user_script::~octave_user_script): Move destructor here from ov-usr-fcn.h. Delete cmd_list. (octave_user_script::subsref, octave_user_script::accept, octave_user_script::traceback_error): New functions. (octave_user_script::do_multi_index_op): Execute cmd_list instead of calling source_file. * ov-usr-fcn.h (octave_usr_script::cmd_list, octave_usr_script::t_parsed, octave_usr_script::t_checked, octave_usr_script::call_depth): New data members. (octave_usr_script::octave_usr_script): Initialize all data members. (octave_usr_script::octave_usr_script (const std::string&, const std::string&, tree_statement_list *, const std::string&)): New constructor. (octave_usr_script::function_value, octave_usr_script::user_script_value, mark_fcn_file_up_to_date, octave_usr_script::stash_fcn_file_time, octave_usr_script::time_parsed, octave_usr_script::time_checked, octave_usr_script::subsref, octave_usr_script::body): New functions. (octave_user_script::subsref, octave_user_script::accept, octave_user_script::traceback_error): Provide decls. 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-07 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/qr.cc (Fqrshift): New function. * DLD-FUNCTIONS/chol.cc (Fcholinsert, Fcholdelete, Fcholshift): New functions. 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-01 John W. Eaton <jwe@octave.org> * pt-id.h (do_lookup (bool&, bool)): Delete. (do_lookup (tree_argument_list *, const string_vector&, octave_value_list&, bool&)): Call MAYBE_DO_BREAKPOINT here. 2008-04-02 David Bateman <dbateman@free.fr> * graphics.cc (void gnuplot_backend::close_figure (const octave_value&) const): Allow for an input and output stream. 2008-03-28 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/lookup.cc: New file. * Makefile.in (DLD_XSRC): Add it to the list. 2008-03-28 David Bateman <dbateman@free.fr> * ov-complex.cc (SCALAR_MAPPER, CD_SCALAR_MAPPER): New macro for complex values with zero imaginary part. (erf, erfc, gamma, lgamma): Use the new mappers to define these mapper functions. * ov-complex.h (erf, erfc, gamma, lgamma): Declare them. * ov-cx-mat.cc (any_element_less_than, any_element_greater_than): New static functions (DARRAY_MAPPER, CD_ARRAY_MAPPER): New macro for complex values with zero imaginary part. (erf, erfc, gamma, lgamma): Use the new mappers to define these mapper functions. * ov-cx-mat.h (erf, erfc, gamma, lgamma): Declare them. * ov-cx-sparse.cc (any_element_less_than, any_element_greater_than): New static functions (DSPARSE_MAPPER, CD_SPARSE_MAPPER): New macro for complex values with zero imaginary part. (erf, erfc, gamma, lgamma): Use the new mappers to define these mapper functions. * ov-cx-sparse.h (erf, erfc, gamma, lgamma): Declare them. * ov-re-sparse.cc (CD_SPARSE_MAPPER): Use correct mapper functors. * mapper.cc: Add tests for the above cases. 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. * DLD-FUNCTIONS/__convn__.cc (convn): Use traits class and typedefs to allow all types to be deduced from argument types. 2008-03-27 Søren Hauberg <hauberg@gmail.com> * DLD-FUNCTIONS/__convn__.cc (Fconvn): Allow convolving real data with complex data. 2008-03-26 John W. Eaton <jwe@octave.org> * ov-range.h (octave_range::subsref (const std::string&, const std::list<octave_value_list>&, int)): Forward to simple subsref. * ov-base-sparse.h (octave_base_sparse<T>::subsref (const std::string&, const std::list<octave_value_list>&, int)): Likewise. * ov-base-scalar.h (octave_base_sparse<T>::subsref (const std::string&, const std::list<octave_value_list>&, int)): Likewise. * ov-base-matrix.h (octave_base_matrix<T>::subsref (const std::string&, const std::list<octave_value_list>&, int)): Likewise. * ov-struct.cc, ov-cell.h (octave_cell::subsref (const std::string&, const std::list<octave_value_list>&, int)): Define nargout version of subsref instead of simple version. * ov-struct.cc, ov-struct.h (octave_struct::subsref (const std::string&, const std::list<octave_value_list>&, int)): Define nargout version of subsref instead of simple version. * ov-builtin.h (octave_builtin::subsref (const std::string&, const std::list<octave_value_list>&): Forward to nargout subsref. * ov-cell.h (octave_cell::subsref (const std::string&, const std::list<octave_value_list>&)): * ov-class.h (octave_class::subsref (const std::string&, const std::list<octave_value_list>&): Likewise. * ov-fcn-handle.h (octave_fcn_handle::subsref (const std::string&, const std::list<octave_value_list>&): Likewise. * ov-list.h (octave_list::subsref (const std::string&, const std::list<octave_value_list>&): Likewise. * ov-mex-fcn.h (octave_mex_function::subsref (const std::string&, const std::list<octave_value_list>&): Likewise. * ov-struct.h (octave_struct::subsref (const std::string&, const std::list<octave_value_list>&)): * ov-usr-fcn.h (octave_user_function::subsref (const std::string&, const std::list<octave_value_list>&): Likewise. * ov.cc (octave_value::subsref): Use value of nargout instead of is_constant method to decide which type of subsref method to call. (octave_value::assign): Always call simple subref method here. * DLD-FUNCTIONS/chol.cc, DLD-FUNCTIONS/det.cc, DLD-FUNCTIONS/getpwent.cc, DLD-FUNCTIONS/inv.cc, DLD-FUNCTIONS/qr.cc, DLD-FUNCTIONS/symrcm.cc, file-io.cc): Texinfo fixes. 2008-03-26 Søren Hauberg <hauberg@gmail.com> * DLD-FUNCTIONS/__convn__.cc (Fconvn): Call complex_array_value to extract N-d array. 2008-03-26 John W. Eaton <jwe@octave.org> * ov-base-sparse.cc (octave_base_sparse<T>::print_raw): Also display percentage of elements that are nonzero. 2008-03-25 Søren Hauberg <hauberg@gmail.com> * DLD-FUNCTIONS/__convn__.cc: New file. * Makefile.in: Add __convn__.cc 2008-03-25 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/hex2num.cc: New function * Makefile.in (DLD_XSRC): Add hex2num.cc. 2008-03-25 Jaroslav Hajek <highegg@gmail.com> * mappers.cc (Fexpm1, Flog1p): New functions. * ov-base.cc, ov-base.h, ov-bool-mat.h, ov-bool-sparse.h, ov-bool.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-cx-sparse.cc, ov-cx-sparse.h, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc, ov-scalar.h, ov.h: Provide expm1 and log1p functions. * mappers.cc (Froundb): New functions * ov-base.cc, ov-base.h, ov-bool-mat.h, ov-bool-sparse.h, ov-bool.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-cx-sparse.cc, ov-cx-sparse.h, ov-intx.h, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc, ov-scalar.h, ov.h: Provide roundb mapper function. 2008-03-25 Jaroslav Hajek <highegg@gmail.com> * load-save.cc (save_vars): Handle -struct modifier. (save_fields): New function. (Fsave): Document new feature. 2008-03-25 John W. Eaton <jwe@octave.org> * lex.h (lexical_feedback::looking_at_initializer_expression): New data member. * lex.l (lexical_feedback::init): Initialize it. (handle_identifier): Don't unconditionally force identifiers to be variables in the current scope. Don't call force_local_variable for symbols that appear in parameter initializer expressions. * parse.y (decl_param_init): New parser "subroutine". (decl2): Use it. Set lexer_flags.looking_at_initializer_expression to false after parsing initializer. 2008-03-24 David Bateman <dbateman@free.fr> * data.cc (map_s_s): Fix for sparse/sparse mappers that resulted in an empty sparse matrix being returned. (Fhypot): New function based on the libm hypot function. 2008-03-24 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-21 John W. Eaton <jwe@octave.org> * ov-cell.h (octave_cell::is_constant): Return true. * ov-cell.h, ov-cell.cc (octave_cell::subsref (const std::string&, const std::list<octave_value_list>&)): Define. (octave_cell::subsref (const std::string&, const std::list<octave_value_list>&, int)): Call panic_impossible. * ov-struct.h (octave_struct::is_constant): New function. * ov-struct.h, ov-struct.cc (octave_struct::subsref (const std::string&, const std::list<octave_value_list>&)): Define. (octave_struct::subsref (const std::string&, const std::list<octave_value_list>&, int)): Call panic_impossible. 2008-03-21 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/amd.cc: New file. * Makefile.in (DLD_XSRC): Add amd.cc. 2008-03-20 David Bateman <dbateman@free.fr> * Cell.cc (Cell Cell::diag (void) const): delete. (Cell Cell::diag (octave__idx_type) const):Rewrite in terms of template classes function. * Cell.h (Cell diag (void) const): delete. * ov.h (octave_value diag (octave_idx_type) const): New method. * ov-base.h (virtual octave_value diag (octave_idx_type) const): New virtual method. * ov-base.cc (octave_value octave_base_value::diag (octave_idx_type) const): New default method. * ov-base-mat.h (octave_value diag (octave_idx_type) const): New method. * ov-base-sparse.h (octave_value diag (octave_idx_type) const): New method. * ov-base-scalar.h (octave_value diag (octave_idx_type) const): New method. * ov-range.h (octave_value diag (octave_idx_type) const): New method. * data.cc (make_diag, make_spdiag): Delete. (Fdiag): Rewrite in terms of octave_value diag function. * data.cc (static octave_value make_diag (const Cell&, octave_idx_type)): New instantiation of template function. (static octave_value make_diag (const octave_value&, octave_idx_type)): Allow cell arrays. * Cell.cc (Cell Cell::diag (void) const, Cell Cell::diag (octave__idx_type)): New methods for diagonal matrices. * Cell.h (Cell Cell::diag (void) const, Cell Cell::diag (octave__idx_type)): Declare them. 2008-03-18 David Bateman <dbateman@free.fr> * ov-re-mat.cc (lgamma): Convert to a allow negative arguments. * ov-re-sparse.cc (lgamma): ditto. * ov-scalar.cc (lgamma): ditto. * DLD-FUNCTIONS/minmax.cc: 64-bit indexing fix. 2008-03-13 John W. Eaton <jwe@octave.org> * ov-usr-fcn.cc (octave_user_function::octave_user_function): Handle num_named_args in initialization list instead of functinon body. * octave.gperf: Eliminate varargin and varargout keywords. * lex.l (is_keyword_token): Eliminate varargin_kw and varargout_kw from switch statement. * parse.y (return_list): Eliminate special cases for VARARGOUT. Call validate on tree_parameter_list object. (param_list1): Likewise, for VARARGIN. * pt-misc.cc (tree_parameter_list::validate): New function. (tree_parameter_list::mark_varargs_only): Now private. (tree_parameter_list::mark_varargs): Now private. * pt-misc.h (tree_parameter_list::validate): Provide decl. 2008-03-12 John W. Eaton <jwe@octave.org> * variables.cc (Vwhos_line_format): Omit print_dims parameter. Fix doc string in Vwhos_line_format DEVAR. (symbol_record_name_compare): Delete unused function. (whos_parameter::dimensions): Delete struct field. (symbol_info_list): New class. (dimensions_string_req_first_space, make_dimensions_string, dimensions_string_req_total_space): Delete. (parse_whos_line_format): Move functionality to new symbol_info_list class. (print_symbol_info_line): Move functionality to new symbol_info_list::struct symbol_info::displaly_line method. (do_who): Simplify with new symbol_info_list class. Handle index expressions in addition to symbol names. * DLD-FUNCTIONS/dlmread.cc (Fdlmread): Fix separator detection. 2008-03-11 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/eig.cc (Feig): Handle possible error from EIG. * DLD-FUNCTIONS/qp.cc (qp, Fqp): Likewise. * xpow.cc (xpow): Likewise. 2008-03-11 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/dlmread.cc: Style fixes. 2008-03-11 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/dlmread.cc: Function ported from octave forge. Add spreadsheet style ranges. * Makefile.in (DLD_XSRC): Add dlmread.cc. 2008-03-10 John W. Eaton <jwe@octave.org> * mex.cc (mxCreateLogicalScalar): Argument is now mxLogical. * data.cc (Fisfloat): New function. * ov.h (octave_value::is_float_type): Ditto. * ov-base.h (octave_base_value::is_float_type): Ditto. * ov-complex.h (octave_complex): Ditto. * ov-cx-mat.h (octave_complex_matrix): Ditto. * ov-cx-sparse.h (octave_sparse_complex_matrix): Ditto. * ov-range.h (octave_range): Ditto. * ov-re-mat.h (octave_matrix): Ditto. * ov-re-sparse.h (octave_sparse_matrix): Ditto. * ov-scalar.h (octave_scalar): Ditto. * mxarray.h.in (mxLogical): Use unsigned char instead of int. From Antwerpen, G. (Gert) van <gert.vanantwerpen@tno.nl>. 2008-03-07 John W. Eaton <jwe@octave.org> * ov-struct.cc (octave_struct::print_raw): Don't print contents fo struct arrays that have more than one element. 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> * parse.y: Move tests here from test/test_eval.m. * DLD-FUNCTIONS/fft.cc: Move tests here from test/test_signal.m. * DLD-FUNCTIONS/dassl.cc: Move tests here from test/test_diffeq.m. * DLD-FUNCTIONS/lsode.cc: Move tests here from test/test_diffeq.m. * DLD-FUNCTIONS/quad.cc: Move tests here from test/test_quad.m. * DLD-FUNCTIONS/time.cc: Move tests here from test/test_system.m. 2008-03-06 Alexander Barth <barth.alexander@gmail.com> * DLD-FUNCTIONS/__lin_interpn__.cc (lookup): Handle decreasing coordinate values. 2008-03-05 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/chol.cc (Fcholupdate): Adjust code to meet Octave's coding guidelines. * DLD-FUNCTIONS/qr.cc (Fqrupdate, Fqrinsert, Fqrdelete): Adjust code to meet Octave's coding guidelines. * DLD-FUNCTIONS/qr.cc (Fqrdelete): Fix incorrect test. * DLD-FUNCTIONS/qr.cc (Fqrinsert, Fqrdelete): Modify to use 0-based indexing in liboctave's QR classes. 2008-03-04 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/chol.cc (Fcholupdate): New function. * DLD-FUNCTIONS/qr.cc (Fqrupdate, Fqrinsert, Fqrdelete): New functions. 2008-03-04 Ryan Rusaw <rrusaw@gmail.com> * toplev.h (octave_call_stack::element): New static function. (octave_call_stack::cs): Now std::deque instead of std::list. * pt-stmt.cc (curr_statement, curr_caller_statement): Delete. * pt-stmt.h: Delete decls. * pt-stmt.h, pt-stmt.cc (tree_statement_stack): New class. * pt-stmt.cc (tree_statement::eval): Use tree_statement_stack instead of curr_statement variable. * ov-usr-func.cc (octave_user_function::do_multi_index_op): Don't set curr_caller_statement. * error.cc (verror, pr_where): Call tree_statement_stack::current_line and tree_statement_stack::current_column instead of instead of curr_statement->line and curr_statement->column. * input.cc (get_user_input): Likewise. 2008-02-27 John P. Swensen <jpswensen@gmail.com> * debug.cc (get_user_function): Call symtab::find_function instead of symtab::find_user_function. 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> * ov-base-int.cc (octave_base_int_helper, octave_base_int_helper_traits): New templates and specializations. (octave_base_int_matrix<T>::convert_to_str_internal, octave_base_int_matrix<T>::convert_to_str_internal): Use them. * DLD-FUNCTIONS/rand.cc (do_rand): Pass name of calling function to octave_rand::state. * variables.cc (bind_ans): Handle cs-lists recursively. * ov-cs-list.h, ov-cs-list.cc (octave_cs_list::print, octave_cs_list::print_raw): Delete. 2008-02-25 John W. Eaton <jwe@octave.org> * Cell.cc (Cell::map): New function. * Cell.h (Cell::map): Declare. (xisalnum, xisalpha, xisascii, xiscntrl, xisdigit, xisgraph, xislower, xisprint, xispunct, xisspace, xisupper, xisxdigit, xtoascii, xtolower, xtoupper): New mapper functions. (ctype_mapper): New private typedef. * ov-cell.h (xisalnum, xisalpha, xisascii, xiscntrl, xisdigit, xisgraph, xislower, xisprint, xispunct, xisspace, xisupper, xisxdigit, xtoascii, xtolower, xtoupper): New mapper functions. 2008-02-25 Michael Goffioul <michael.goffioul@gmail.com> * ov-scalar.cc (octave_scalar::round): Use xround instead of ::round in mapper implementation. 2008-02-25 John W. Eaton <jwe@octave.org> * ov-base.cc (UNDEFINED_MAPPER, STRING_MAPPER): New macros. Use them to define mapper functions. * mappers.cc (Fisalnum, Fisalpha, Fisascii, Fiscntrl, Fisdigit, Fisgraph, Fislower, Fisprint, Fispunct, Fisspace, Fisupper, Fisxdigit, Ftoascii, Ftolower, Ftoupper): Use DEFUNX to define ctype mapper functions. Use new function names. * ov-base.h, ov-base.cc, ov-str-mat.h, ov-str-mat.cc: Prepend x to ctype mapper function names. * graphics.h.in (row_vector_property::row_vector_property): Set default constraints here. (row_vector_property::add_constraint): New function. (row_vector_property::validate): Delete decl. (axes::properties::init): Use single-arg add_constraint function for xlim, ylim, zlim, clim, and alim properties. * graphics.cc (row_vector_property::validate): Delete. * graphics.cc (axes::properties::update_camera, axes::properties::update_aspectratios): Avoid shadow warnings from GCC. * graphics.h.in (base_properties::get_bounding_box): Avoid unused argument warning from GCC. * graphics.h.in (array_property::add_constraint): Arg is now const reference, not value. * graphics.h.in, graphics.cc (class row_vector_property): New class. (axes::properties): xlim, ylim, zlim, clim, alim, xtick, ytick, ztick properties are now row_vector_property objects instead of array_property objects. * genprops.awk: Special case row_vector_property in the same way as array_property. 2008-02-22 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/ccolamd.cc, DLD-FUNCTIONS/colamd.cc, DLD-FUNCTIONS/convhulln.cc, DLD-FUNCTIONS/dmperm.cc, DLD-FUNCTIONS/qz.cc, DLD-FUNCTIONS/regexp.cc, DLD-FUNCTIONS/symbfact.cc, zfstream.h, zfstream.cc: Use 0 instead of NULL. 2008-02-22 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/chol.c (Fchol, Fcholinv, Fchol2iinv): Treat sparse matrices. Add the "lower" and "vector" flags. * DLD-FUNCTIONS/inv.c (Finv): Treat sparse matrices. * DLD-FUNCTION/sparse.cc (static bool is_sparse (const octave_value&)): Remove and use arg.is_sparse_type () instead. (Fspcumprod, Fspcumsum, Fspprod, spsum, spsumsq, spdiag): Remove. * DLD-FUNCTIONS/splu.cc: Remove. * DLD-FUNCTIONS/lu.cc: Treat sparse matrices, Add "vector" flag. * DLD-FUNCTIONS/spchol.cc: Move to symbfact.cc * DLD-FUNCTIONS/symbfact.cc: Remove cholesky functions Fspchol, Fspcholinv, Fspchol2inv. * DLD-FUNCTIONS/luinc.cc: Modify for new sparse LU constructors. Ass the 'vector' flag. * DLD-FUNCTIONS/spparms.cc: Add the sum_tol flag. * Makifile.in (DLD_XSRC): Remove spchol.cc, splu.cc and add symbfact.cc * data.cc (NATIVE_REDUCTION): Treat sparse matrices (DATA_REDUCTION): Ditto. (template <class T> static octave_value make_spdiag (const T&, octave_idx_type)): New template function for sparse diag function. Instantiate it. (static octave_value make_diag (const octave_value&, octave_idx_type): Use make_spdiag for sparse matrice. (Fatan2): Compatibility fixes for mixed full/sparse matrices. 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-20 John W. Eaton <jwe@octave.org> * data.cc (map_d_m, map_m_d, map_m_m, Fatan2, Ffmod): Handle N-d arrays. * ov-bool-mat.h (octave_bool_matrix (const Array2<bool>&)): Delete. 2008-02-20 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/det.cc, DLD-FUNCTIONS/find.cc, * DLD-FUNCTIONS/minmax.cc, DLD-FUNCTIONS/qr.cc: Treat sparse matrices. * DLD-FUNCTIONS/sparse.cc (Fspmin, Fspmax, Fatan2): Remove functions. * DLD-FUNCTIONS/dmperm.cc: Rename from spqr.cc. (Fspqr): Delete function. * DLD-FUNCTIONS/spqr.cc, DLD-FUNCTIONS/spdet.cc, DLD-FUNCTIONS/spfind.cc: Remove. * Makefile.in (DLD_XSRC): Add dmperm.cc to the list. Delete det.cc, find.cc, minmax.cc, and qr.cc from the list. * Makefile.in (OV_SRC): Remove ov-mapper.cc. (OV_INCLUDES): Remove ov-mapper.h. (DEFUN_PATTERN): No longer accept DEFUN_MAPPER as valid. * ov-mapper.cc, ov-mapepr.h: Delete, remove all includes of ov-mapper.h from all files. * op-b-sbm.cc, op-bm-sbm.cc, op-smb-b.cc, op-sbm-bm.cc: Include ov-bool-sparse.h. * defun-int.h (DEFUN_MAPPER_INTERNAL, install_builtin_mapper): Remove. * defun.cc (install_builtin_mapper): Ditto. * defun.h (DEFUN_MAPPER): Remove. * mappers.cc: Rewrite all mapper function using DEFUN and newly introduced octave_value mapper functions. (dummyp, xabs, xisalnum, xisascii, xiscntrl, xisdigit, xisgraph, xislower, xisprint, xispunct, xisspace, xisupper, xtoascii, xtolower, xtoupper, xconj, ximag, xreal): Remove static wrapper functions. * mkbuiltins (XDEFUN_MAPPER_INTERNAL, install_builtin_functions): Remove. * mkgendoc (XDEFUN_MAPPER_INTERNAL): Remove. * ov.cc (octave_mapper::register_type): Remove. * ov.h (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor, gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh, isalnum, isalpha, isascii, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit, toascii, tolower, toupper): New octave_value mapper functions. * ov-base.h (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor, gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh, isalnum, isalpha, isascii, iscntrl, isdigit, isgraph, slower, isprint, ispunct, isspace, isupper, isxdigit, toascii, tolower, toupper): New virtual mapper functions. * ov-base.cc (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor, gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh, isalnum, isalpha, isascii, iscntrl, isdigit, isgraph, slower, isprint, ispunct, isspace, isupper, isxdigit, toascii, tolower, toupper): Base versions of mapper functions. * ov-bool-mat.h (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor, gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh): Mapper function recast boolen matrix as double. * ov-bool.h (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor, gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh): Ditto. * ov-bool-sparse.h (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor, gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh): Ditto. (char_array_value): New method to convert to charNDArray. * ov-bool-sparse.cc (char_array_value): New method to convert to charNDArray. * ov-complex.cc (char_array_value): ditto. (xabs, ximag, xreal): Static wrapper functions. (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, exp, finite, fix, floor, imag, isinf, isna, isnan, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh): New mapper methods. * ov-complex.h: Provide decls. * ov-cx-mat.cc (char_array_value): New method to convert to charNDArray. (xabs, ximag, xreal): Static wrapper functions. (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, exp, finite, fix, floor, imag, isinf, isna, isnan, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh): New mapper methods. * ov-cx-mat.h: Provide decls. * ov-cx-sparse.cc (char_array_value): New method to convert to charNDArray. (xabs, ximag, xreal): Static wrapper functions. (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, exp, finite, fix, floor, imag, isinf, isna, isnan, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh): New mapper methods. * ov-cx-sparse.h: Provide decls. * ov-intx.h (abs, signum, imag, ceil, conj, fix, floor, real, round, finite, isinf, isna, isnan): Define for both matrix and scalar classes. * ov-range.h (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor, gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh): New mapper functions. * ov-re-mat.cc (any_element_less_than): Static function to check if any elemet was less than a value, (any_element_greater_than): Ditto with greater than. (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor, gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round, signum, sin, sinh, sqrt, tan, tanh): New mapper functions. * ov-re-mat.h: Provide decls. * ov-scalar.cc (any_element_less_than): Static function to check if any elemet was less than a value, (any_element_greater_than): ditto with greater than. (abs acos acosh angle arg asin asinh atan atanh ceil conj cos cosh erf erfc exp finite fix floor gamma imag isinf isna isnan lgamma log log10 real round signum sin sinh sqrt tan tanh): New mapper functions. * ov-scalar.h: Provide decls. * ov-str-mat.cc (xisalnum, xisascii, xiscntrl, xisdigit, xisgraph, xislower, xisprint, xispunct, xisspace, xisupper, xtoascii, xtolower, xtoupper): New static wrapper functions. (isalnum, isalpha, isascii, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit, toascii, tolower, toupper): New mapper methods. * ov-str-mat.h: Provide decls. 2008-02-18 David Bateman <dbateman@free.fr> * data.cc (Fatan2): Reject arguments that are integer types. 2008-02-19 Jaroslav Hajek <highegg@gmail.com> * DLD-FUNCTIONS/qr.cc: Doc fix. 2008-02-18 John W. Eaton <jwe@octave.org> * symtab.h (symbol_table::fcn_info::fcn_info_rep::clear_unlocked_functions): symbol_table::fcn_info::fcn_info_rep::clear_cmdline_function, symbol_table::fcn_info::fcn_info_rep::clear_autoload_function): New functions. (symbol_table::fcn_info::fcn_info_rep::clear_user_function): Don't clear locked functions. (symbol_table::fcn_info::fcn_info_rep::clear_mex_function): Call clear_user_function instead of setting function_on_path directly. (symbol_table::fcn_info::fcn_info_rep::clear): Use new functions to do the real work. * ov.h (octave_value::lock, octave_value::unlock, octave_value::islocked): New functions. * ov-base.cc (octave_base_value::lock, octave_base_value::unlock): New functions. * ov-base.h Provide decls. (octave_base_value::islocked): New function. * ov-fcn.h (octave_function::islocked): Now const. 2008-02-15 John W. Eaton <jwe@octave.org> * ov-builtin.cc (octave_builtin::do_multi_index_op): Catch possible octave_execution_exception. * ov-mex-fcn.cc (octave_mex_function::do_multi_index_op): Likewise. * ov.cc (do_binary_op, do_cat_op, do_unary_op, octave_value::do_non_const_unary_op): Likewise. 2008-02-14 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/balance.cc, DLD-FUNCTIONS/qz.cc: Don't check f77_exception_encountered. * sighandlers.cc (user_abort): If interrupting immediately, set octave_interrupt_state if it is not already set. * pt-stmt.cc (tree_statement::eval): Catch execution exceptions. * octave.cc (lo_error_handler): New static function. (initialize_error_handlers): Set liboctave_error_handler to lo_error_handler, not error. * DLD-FUNCTIONS/urlwrite.cc (urlget): Call octave_rethrow_exception instead of octave_throw_interrupt_exception. * utils.cc (BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE_FOR_VSNPRINTF): Likewise. 2008-02-12 David Bateman <dbateman@free.fr> * graphics.h.in: Implement the cdatamapping property in patch and image objects. 2008-02-12 John W. Eaton <jwe@octave.org> * pt-loop.cc (tree_simple_for_command::eval): Compute range element with multiplication. 2008-02-11 John W. Eaton <jwe@octave.org> * Makefile.in ($(MAKEDEPS)): Skip dependencies if omit_deps is defined. 2008-02-09 John W. Eaton <jwe@octave.org> * pr-output.cc (set_range_format): Eliminate sign arg. Change all callers. 2008-02-08 John W. Eaton <jwe@octave.org> * ov-struct.cc (octave_struct::subsref): Allow Cell::index to resize. * input.cc (interactive_input): Eliminate debug arg. Change All uses. (get_user_input): Don't process input_buf if there is an error. Call reset_error_handler instead of setting error_state to 0. 2008-02-08 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (callback_property::execute): New static helper method (useful to execute callbacks by name). * graphics.cc (callback_property::execute): Likewise. (execute_callback): Avoid undefined argument when executing callback. Do not use arguments when the callback is a string. 2008-02-07 John W. Eaton <jwe@octave.org> * ov-range.h (octave_range::sort): New functions. 2008-02-07 David Bateman <dbateman@free.fr> * Makefile.in (DLD_XSRC): Delete spkron.cc. * DLD-FUNCTIONS/spkron.cc: Delete. * DLD-FUNCTIONS/kron.cc: Include here and dispatch to the sparse version if either argument is sparse. 2008-02-06 John W. Eaton <jwe@octave.org> * Makefile.in (parse.cc): Also use --defines option for bison. 2008-02-06 Michael Goffioul <michael.goffioul@gmail.com> * graphics.cc (axes::properties::set_defaults): Set default axes color to white. 2008-02-06 John W. Eaton <jwe@octave.org> * Makefile.in (parse.cc): Use "-o $@" instead of renaming y.tab.c. (maintainer-clean): Don't remove y.tab.c. * Makefile.in (parse.cc : parse.y): Use mv instead of move-if-change. (stamp-prereq, stamp-liboctave-prereq): Eliminate. (clean): Don't remove stamp-prereq and stamp-liboctave-prereq. (OPT_BASE, OPT_IN, OPT_INC): New macros. (OPT_HANDLERS): Define in terms of OPT_BASE. ($(OPT_INC) : %.h : %.in): New pattern rule. (PREREQ): New macro. ($(MAKEDEPS)): Simplify with $(PREREQ). 2008-02-05 John W. Eaton <jwe@octave.org> * Makefile.in: Unconditionally include $(MAKEDEPS). Mark $(MAKEDEPS) as .PHONY targets if omit_deps is true. 2008-02-05 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (base_properties::get_boundingbox): New method. (figure::properties::get_boundingbox): Overload method. (axes::properties::get_boundingbox): Likewise. * graphics.cc (figure::properties::get_boundingbox): Return a left-to-right/top-to-bottom bounding box rectangle. (axes::properties::get_boundingbox): Likewise. (axes::properties::update_camera): Remove backend access and use the new axes bounding box. 2008-02-04 Shai Ayal <shaiay@users.sourceforge.net> * graphics.h.in (axes::properties::update_xlim, axes::properties::update_ylim, axes::properties::update_zlim): New update methods. * graphics.cc (axes::properties::calc_ticks): New function. (axes::properties::magform): New function. (axes::update_axis_limits): Call update_{x,y,z}lims if appropriate. 2008-02-04 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (base_graphics_backend::get_screen_size, graphics_backend::get_screen_size): New methods. (graphics_backend::available_backends): Export symbol. (class figure::properties, class axes::properties): Export classes. (figure::properties::get_boundingbox): New utility method. (figure::properties::position): Use valid default position. (axes::properties::gridlinestyle, axes::properties::minorgridlinestyle): Use dotted line style as default. * graphics.cc (default_figure_position): New static function. (gnuplot_backend::get_screen_size): New method. (figure::properties::get_boundingbox): New utility method. 2008-02-02 Shai Ayal <shaiay@users.sourceforge.org> * graphics.h.in (base_scaler::~base_scalar): New virtual destructor. * graphics.cc (axes::properties::update_camera): Tag abs with std. * graphics.h.in (graphics_backend::find_backend): New function. (class figure): Add __backend__ property and set method. 2008-02-02 John W. Eaton <jwe@octave.org> * help.cc (do_type): Don't print dyamically loaded function files. * ov-fcn.h (octave_function::is_dynamically_loaded_function): Delete. 2008-02-01 John W. Eaton <jwe@octave.org> * symtab.cc (Fset_variable, Fvariable_value): New functions, but commented out for now. 2008-01-30 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (axes::properties::get_transform_matrix, axes::properties::get_inverse_transform_matrix, axes::properties::get_opengl_matrix_1, axes::properties::get_opengl_matrix_2, axes::properties::get_transform_zlim): New accessors. (base_properties::is_clipping): New accessor. (class graphics_xform): New class encapsulating axes transformation. (axes::properties::get_transform): New method returning a graphics_xform object. * graphics.cc (class graphics_xform): New class. 2008-01-31 David Bateman <dbateman@free.fr> * ov.cc (octave_value::octave_value (const ArrayN<bool>&), octave_value::octave_value (const Sparse<bool>&, const MatrixType &), octave_value::octave_value (const ArrayN<std::streamoff>&)): New constructors. * ov.h: (octave_value (const ArrayN<bool>&), octave_value (const Sparse<bool>&, const MatrixType &), octave_value (const ArrayN<std::streamoff>&)): Declare them. (octave_value sort (octave_idx_type, sortmode) const, octave_value sort (Array<octave_idx_type> &, octave_idx_type, sortmode) const): octave_value sort method. * ov-base.cc (sort): Base versions of teh octave_value sort methods. * ov-base.h (sort): Declare the octave_value sort methods * ov-base-scalar.h (sort): Simple sort methods for scalars. * ov-base-mat.h, ov-base-sparse.h (sort): Sort methods calling underlying array or sparse sort methods. * ov-str-mat.h (sort): String specific sort methods. * TEMPLATE-INST/Array-tc.cc: Instantiate the array sort methods. * ov-streamoff.h (sort): Sort versions returning and error. * oct-stream.cc, ov-typeinfo.cc, Array-os.cc: Null instantiation of array sort methods. * Makefile.in (DLD_XSRC): Remove sort.cc * DLD-FUNCTIONS/sort.cc: Remove * data.cc (Fsort): New function using octave_value sort methods for the sorting. Add tests. 2008-01-30 Thomas Weber <thomas.weber.mail@gmail.com> * pager.cc (Fmore): Doc fix. 2008-01-28 Michael Goffioul <michael.goffioul@gmail.com> * genprops.awk: Add update ('u') modifier and document the readonly ('r') modifier. * graphics.h.in (class base_scaler, class lin_scaler, class log_scaler, class scaler): New classes to make abstraction of the axis scale. (base_graphics_backend::get_screen_resolution, graphics_backend::get_screen_resolution): New methods. (axes::properties::sx, axes::properties::sy, axes::properties::sz): New scaler fields. (axes::properties::get_x_scaler, axes::properties::get_y_scaler, axes::properties::get_z_scaler): New accessors. (axes::properties::x_render, axes::properties::x_render_inv, axes::properties::x_gl_mat1, axes::properties::x_gl_mat2, axes::properties::x_zlim): New utility Matrix fields. (axes::properties::get_boundingbox, axes::properties::update_camera, axes::properites::update_aspectratios, axes::properties::update_transform, axes::properties::update_xscale, axes::properties::update_yscale, axes::properties::update_zscale, axes::properties::update_view, axes::properties::update_xdir, axes::properties::update_ydir, axes::properties::update_zdir): New updater methods. (axes::properties::init): Initialize sx, sy, sz and x_zlim correctly. (axes::properties::position): Use valid default position value. (axes::properties::xscale, axes::properties::yscale, axes::properties::zscale, axes::properties::xdir, axes::properties::ydir, axes::properties::zdir, axes::properties::view): Add updater ('u') property modifier. * graphics.cc (default_axes_position, default_axes_outerposition): New initializers. (convert_position): New utility function to convert position according to specified units. (gnuplot_backend::get_screen_resolution): New method. (axes::properties::set_defaults): Initilize recently added properties. (xform_matrix, xform_vector, transform, xform_scale, xform_translate, scale, translate, xform, normalize, dot, cross, unit_cube, cam2xform, xform2cam): New inline transformation utility functions. (axes::properties::update_camera, axes::properties::update_aspectratios, axes::properties::get_boundingbox): New updater methods for computing transformation matrices. (axes::update_axis_limits): Update transformation data. 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-25 David Bateman <dbateman@free.fr> * DLD-FUNCTIONS/rand.cc (Frandp): Relax relative error on randp tests. 2008-01-25 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (base_properties::get_backend, base_graphics_object::get_backend, graphics_backend::get_backend): New methods for convenient access to the backend. (figure::get_backend, figure::set_backend): Remove. * graphics.cc (base_properties::get_backend): New method. (Fdrawnow): Use graphics_object::get_backend to simplify code. 2008-01-24 Pascal Dupuis <Pascal.Dupuis@worldonline.be> * mxarray.h.in: Include <cstring>. 2008-01-22 John W. Eaton <jwe@octave.org> * graphics.cc (clear_drawnow_request): New function. (Fdrawnow): Add it to the unwind_protect stack. * input.cc (Vdrawnow_requested): No longer static. * input.h: Provide decl. * graphics.cc (Fdrawnow, Fset, make_graphics_object): Use Vdrawnow_requested directly. * toplev.cc (octave_add_atexit_function, octave_remove_atexit_function): New functions. (Fatexit): Use them. * graphics.cc (Fdrawnow): Call octave_add_atexit_function instead of using eval. * toplev.h (octave_add_atexit_function, octave_remove_atexit_function): Provide decls. 2008-01-22 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (base_properties::is_visible, base_properties::set_modified): New accessors. (class base_graphics_backend, class graphics_backend): New classes for handling octave/backend interaction. (figure::properties::close): Add "pop" argument controlling whether the figure should be popped from the list of existing figures. (class figure::properties): New backend field and accessors, holding the graphics backend associated with the figure. * graphics.cc (class gnuplot_backend): New class for the default gnuplot backend. (figure::properties::close): Add "pop" argument and transfer the figure closing to the associated backend. (Fdrawnow): New builtin function, converted from drawnow.m. 2008-01-19 John W. Eaton <jwe@octave.org> * genprops.awk (emit_source): Use "pname" for property name argument. 2008-01-19 Shai Ayal <shaiay@users.sourceforge.net> * graphics.h.in (class figure::properties): New properties: alphamap, currentcharacter, currentobject, current_point, dockcontrols, doublebuffer, filename, integerhandle, inverthardcopy, keypressfcn, keyreleasefcn, menubar, mincolormap, name, numbertitle, paperunits, paperposition, paperpositionmode, papersize, papertype, pointer, pointershapecdata, pointershapehotspot, position, renderer, renderermode, resize, resizefcn, selectiontype, toolbar, units, windowbuttondownfcn, windowbuttonmotionfcn, windowbuttonupfcn, windowbuttonwheelfcn, windowstyle, wvisual, wvisualmode, xdisplay, xvisual, xvisualmode, buttondownfcn. 2008-01-19 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (base_properties::beingdeleted, base_properties::is_beingdeleted, base_properties::get_beingdeleted, base_properties::set_beingdeleted): Add beingdeleted property and accessors. * graphics.cc (base_properties::get): Likewise. (gh_manager::free): Set beingdeleted to "on" when freeing an object. * genprops.awk: Skip C++-style comments in property declaration. * graphics.h.in (class axes::properties): New properties: alim, alimmode, xminortick, yminortick, zminortick, ambientlightcolor, cameraposition, cameratarget, cameraupvector, cameraviewangle, camerapositionmode, cameratargetmode, cameraupvectormode, cameraviewanglemode, currentpoint, drawmode, fontangle, fontname, fontsize, fontweight, fontunits, gridlinestyle, minorgridlinestyle, linestyleorder, linewidth, plotboxaspectratio, plotboxaspectratiomode, projection, tickdir, tickdirmode, ticklength, tightinset, units, x_viewtransform, x_projectiontransform, x_viewporttransform, x_normrendertransform, x_rendertransform. * genprops.awk: Handle new readonly modifier 'r'. 2008-01-18 Juhani Saastamoinen <juhani@cs.joensuu.fi> * genprops.awk: Avoid using "default" as a variable name. 2008-01-17 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (data_property::get_data_limits): Reset min/max values. 2008-01-17 David Bateman <dbateman@free.fr> * ov-fcn-inline.cc: Add tests for Finline. 2008-01-17 Ben Abbott <bpabbott@mac.com> * load-path.cc (F__pathorig__): Rename from Fpathdef. (Frestoredefaultpath): New function. 2008-01-16 John W. Eaton <jwe@octave.org> * pt-assign.cc (tree_simple_assignment::rvalue, tree_multi_assignment::rvalue): Handle assignment of comma-separated lists. 2008-01-15 John W. Eaton <jwe@octave.org> * mappers.cc (install_mapper_functions): Move test for asin here from test/test_arith.m. * graphics.h.in (class line::properties, class text::properties): Rename erase_mode property to erasemode. 2008-01-15 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (base_properties::remove_child, base_properties::adopt, base_properties::update_axis_limits): Make virtual. (base_graphics_object::mark_modified, base_graphics_object::override-defaults, base_graphics_object::set_from_list, base_graphics_object::set, base_graphics_object::get, base_graphics_object::get_parent, base_graphics_object::remove_child, base_graphics_object::adopt, base_graphics_object::reparent, base_graphics_object::defaults, base_graphics_object::type): Add default implementation. (class root_figure, class figure, class axes, class line, class text, class image, class patch, class surface): Remove overloaded virtual methods whose implementation is identical to the default one. * genprops.awk: Handle 'h' modifier for hidden properties. Replace "get(void)" method with "get(bool all = false)" to allow access to hidden properties. * graphics.h.in (base_properties::get, base_graphics_object::get, graphics_object::get, root_figure::get, figure::get, axes::get, line::get, text::get, patch::get, surface::get, image::get): New arg, ALL, to access hidden properties. (gh_manager::do_get_object): Do not look for invalid handles. (figure::properties::__plot_stream__, figure::properties::__enhanced__, axes::properties::__colorbar__): Make properties hidden. (axes::properties, line::properties, text::properties, patch::properties, surface::properties): Remove obsolete 'a' property modifier. * graphics.cc (base_properties::get): New arg ALL, to access hidden properties. (base_properties::mark_modified): Call mark_modified only on valid parent object. (__get__): New internal function returning all properties, including the hidden ones. 2008-01-15 John W. Eaton <jwe@octave.org> * graphics.cc (properties::set_currentfigure, properties::set_currentaxes): Don't convert arg to double before passing to graphics_handle constructor. (base_properties::remove_child): Call mark_modified if list of children changes. 2008-01-15 Shai Ayal <shaiay@users.sourceforge.net> * graphics.h.in (class line::properties): New properties: displayname, erasemode. (class text::properties) New properties: backgroundcolor, displayname, edgecolor, erase_mode, editing, fontunits, linestyle, linewidth, margin, verticalalignment. 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. * symtab.h (symbol_table::do_pop_context): Remove symbol_records which have no more context. (symbol_table::symbol_record::pop_context, (symbol_table::symbol_record::symbol_record_rep::pop_context): Return size of value_stack, or 1 if variable is persistent or global. 2008-01-14 Kai Habel <kai.habel@gmx.de> * graphics.h.in (class patch::properties): New properties: cdatamapping, facevertexalphadata, facevertexcdata, vertexnormals, normalmode, facelighting, edgealpha, edgelighting, backfacelighting, ambientstrength, diffusestrength, specularstrength, specularexponent, specularcolorreflectance, erasemode. 2008-01-14 Michael Goffioul <michael.goffioul@gmail.com> * graphics.h.in (gh_manager::do_make_graphics_handle, gh_manager::make_graphics_handle): New boolean parameter do_createfcn. * graphics.cc (xcreatefcn): New static function. (gh_manager::do_make_graphics_handle): New boolean parameter do_createfcn. Execute createfcn callback accordingly. (make_graphics_object, F__go_figure__): Use do_createfcn parameter and call xcreatefcn * genprops.awk (emit_get_callback): Pass user data to execute method. * graphics.cc (execute_callback): New static function. (callback_property::validate): Make it work. (callback_property::execute): Make it work. (gh_manager::do_free): Execute delete function here. * graphics.h.in (callback_property::execute): Fix decl. (base_properties::buttondownfcn, base_properties::createfcn, base_properties::deletefcn, base_properties::userdata): Default value is empty Matrix, not undefined octave_value object. (base_properties::execute_createfcn): New function. (base_properties::execute_deletefcn): New function. 2007-12-13 Shai Ayal <shaiay@users.sourceforge.net> * graphics.h.in, graphics.cc (class base_properties): New properties: busyaction, buttondownfcn, clipping, createfcn, deletefcn, handlevisibility, hittest, interruptible, selected, selectionhighlight, uicontextmenu, userdata, visible. (class figure): Delete visible property. 2008-01-13 Michael Goffioul <michael.goffioul@gmail.com> * grahpics.h.in: Sprinkle with OCTINTERP_API as needed. (axes::properties::xaxislocation): Allow value of zero. (axes::properties::yaxislocation): Likewise. 2008-01-12 Michael Goffioul <michael.goffioul@gmail.com> * Makefile.in (distclean): Delete graphics-props.cc. * genprops.awk: Handle new graphics property classes. * graphics.h.in, graphics.cc: Adapt for new specific property types. 2008-01-12 John W. Eaton <jwe@octave.org> * toplev.cc (octave_config_info): Add GNUPLOT to the struct. * oct-conf.h.in (OCTAVE_CONF_GNUPLOT): New macro. 2008-01-11 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/__qp__.cc (qp): Undo part of change from 2007-09-04 (compute Y at each iteration). 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. * DLD_FUNCTIONS/__gnuplot_raw__.l: Delete. * Makefile.in (DLD_XSRC): Remove it from the list. (BUILT_DISTFILES): Remove __gnuplot_raw__.cc from the list. (stamp-prereq): Don't depend on __gnuplot_raw__.cc. (maintainer-clean): Don't remove __gnuplot_raw__.cc. (__gnuplot_raw__.cc): Delete target. (__gnuplot_raw__.o, pic/__gnuplot_raw__.o): Delete targets. * 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. * gripes.cc (gripe_wrong_type_arg (const std::string&, const octave_value&, bool)): New function. * gripes.h: Provide decl. * oct-stream.cc (printf_value_cache::printf_value_cache): Reject structs, cells, objects, and lists. (octave_base_stream::do_printf): Quit early if printf_value_cache constructor fails. * parse.y (make_anon_fcn_handle): Don't attempt to convert expression to assignment to __retval__. 2008-01-07 Michael Goffioul <michael.goffioul@gmail.com> * ov-builtin.h (octave_builtin): Tag with OCTINTERP_API. * ov-dld-fcn.h (octave_dld_function): Likewise. * ov-dld-fcn.cc (octave_dld_function::create): New function. * ov-dld-fcn.h: Provide decl. * defun.h (DEFINE_FUNX_INSTALLER_FUN3): Call it instead of creating a new octave_dld_function object directly. 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. 2008-01-04 Thomas Weber <thomas.weber.mail@gmail.com> * variables.cc (Fclear): Doc fix. 2008-01-04 John W. Eaton <jwe@octave.org> * symtab.h (symbol_table:pop_scope): Avoid accessing beyond end of scope_stack. 2008-01-04 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. 2007-12-28 John W. Eaton <jwe@octave.org> Merge changes from object branch: 2007-12-12 John W. Eaton <jwe@octave.org> * load-path.cc (load_path::dir_info::get_file_list, load_path::move_method_map, load_path::remove_method_map, load_path::do_find_fcn, load_path::do_find_private_fcn, load_path::do_find_method, load_path::do_find_file, load_path::do_find_first_of, load_path::do_find_all_first_of, load_path::do_display, load_path::add_to_method_map, genpath, execute_pkg_add_or_del): Use file_ops::concat. 2007-08-24 John W. Eaton <jwe@octave.org> * variables.cc (Fmislocked): return value for nargin == 0 case. 2007-07-27 John W. Eaton <jwe@octave.org> * pt-idx.cc (tree_index_expression::rvalue): Pass substring of type to subsref when doing partial evaluation. (tree_index_expression::lvalue): Likewise. 2007-06-29 John W. Eaton <jwe@octave.org> * ov-class.cc (is_built_in_class, set_class_relationship, Fsuperiorto, Finferiorto): New functions. (octave_class::in_class_method): New function. (octave_class::subsref, octave_class:subsasgn): Use it. 2007-06-28 John W. Eaton <jwe@octave.org> * src/ov-class.cc (sanitize): New function. (make_idx_args): Use it. 2007-06-28 John W. Eaton <jwe@octave.org> * src/ov-class.cc (octave_class::subsasgn): Expect and use only one return value from feval of subsasgn method. * ov.cc (octave_value::assign): Don't convert to struct if indexing a class object with ".". * pt-idx.cc (tree_index_expression::make_arg_struct): Use Cell instead of octave_value_list for subscripts. * ov-class.cc (make_idx_args): For "." index, subs field is string, not cell. 2007-06-27 John W. Eaton <jwe@octave.org> * 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): Adapt to new symbol table objects. * symtab.h (symbol_table::all_variables, symbol_table::do_all_variables): New arg, defined_only. 2007-06-26 John W. Eaton <jwe@octave.org> * ls-mat5.cc (read_mat5_binary_element): Adapt to new symbol table objects. * variables.cc (Vwhos_line_format): New static variable. (Fwhos_line_format): New function. (symbol_record_name_compare): Delete function. (symbol_record_name_compare, whos_parameter): New structs. (print_descriptor, dimensions_string_req_first_space, dimensions_string_req_total_space, make_dimensions_string, parse_whos_line_format, print_symbol_info_line): New static functions, adapted from old symbol table class. (do_who): Adapt to new symbol table objects. * symtab.h (symbol_table::glob_variables): New functions. (symbol_table::do_glob): New argument, vars_only. Change all uses. 2007-06-22 John W. Eaton <jwe@octave.org> * symtab.cc (symbol_table::fcn_info::fcn_info_rep::help_for_dispatch): New function. * symtab.h: Provide decl. (symbol_table::fcn_info::help_for_dispatch, symbol_table::help_for_dispatch): New functions. * help.cc (help_from_symbol_table): Call symbol_table::help_for_dispatch instead of extract_help_from_dispatch. * help.cc (extract_help_from_dispatch): Delete. * help.h: Delete decl. 2007-06-21 John W. Eaton <jwe@octave.org> * DLD-FUNCTIONS/dispatch.cc (class octave_dispatch): Delete class. (builtin, any_arg_is_magic_colon, dispatch_record): Delete functions. (Fbuiltin, Fdispatch): Adapt to new symbol table objects. * symtab.cc (symbol_table::fcn_info::fcn_info_rep::print_dispatch): New function. * symtab.h: Provide decl. (symbol_table::fcn_info::print_dispatch, symbol_table::print_dispatch): New functions. * symtab.h (symbol_table::fcn_info::fcn_info_rep::clear_dispatch, symbol_table::fcn_info::clear_dispatch, symbol_table::clear_dispatch): New functions. * symtab.h (symbol_table::fcn_info::fcn_info_rep::get_dispatch, symbol_table::fcn_info::get_dispatch, symbol_table::get_dispatch): New functions. * symtab.cc (symbol_table::fcn_info::fcn_info_rep::find): Use leftmost class argument as dispatch type, or first argument if there are no class arguments. 2007-06-20 John W. Eaton <jwe@octave.org> * ov-base.cc (Vprint_answer_id_name, Fprint_answer_id_name): Delete. (octave_base_value::print_with_name): Always print name. * ov-base.cc (Vsilent_functions): No longer static. * ov-base.h: Provide decl. * ov-class.cc (Fmethods): Define as command. * ov-class.cc (octave_class::print): Simply call print_raw. * ov-class.cc (octave_class::print_with_name): New function. * ov-class.h: Provide decl. 2007-06-19 John W. Eaton <jwe@octave.org> * ov.cc (octave_value::do_unary_op, octave_value::do_binary_op): Handle class methods. * ov.cc (octave_value::unary_op_fcn_name, octave_value::binary_op_fcn_name): New functions. * ov.h: Provide decls. * ov-typeinfo.cc (octave_value_typeinfo::register_unary_class_op, octave_value_typeinfo::register_binary_class_op, octave_value_typeinfo::do_register_unary_class_op, octave_value_typeinfo::do_register_binary_class_op, octave_value_typeinfo::do_lookup_unary_class_op, octave_value_typeinfo::do_lookup_binary_class_op): New functions. * ov-typeinfo.h: Provide decls. * ov-typeinfo.h (octave_value_typeinfo::unary_class_op_fcn, octave_value_typeinfo::binary_class_op_fcn): New typedefs. (octave_value_typeinfo::unary_class_ops, octave_value_typeinfo::binary_class_ops): New data members. (octave_value_typeinfo::octave_value_typeinfo): Initialize them. (octave_value_typeinfo::lookup_unary_class_op, octave_value_typeinfo::lookup_binary_class_op): New functions. * OPERATORS/op-class.cc: New file. * Makefile.in (OP_XSRC): Add it to the list. * ov.cc (install_types): Call octave_class::register_type here. * ov-class.h (octave_class): Implement by containing a map object instead of deriving from octave_struct. * ov-class.cc (octave_class::subsref, octave_class::subsasgn): Don't use octave_class implementation as default action. * ov.h, ov.cc (octave_value::octave_value (const Octave_map&, const std::string&)): New constructor. 2007-06-18 John W. Eaton <jwe@octave.org> * ov-class.cc (octave_class::subsref, octave_class::subsasgn): Handle dispatch to user-defined methods. * parse.y (load_fcn_from_file): New arg, dispatch_type. Change all uses. * ov-fcn.h (octave_function::is_class_constructor, octave_function::is_class_method, octave_function::dispatch_class): New virtual functions. * ov-usr-fcn.h (octave_user_function::dispatch_class, octave_usr_function::stash_dispatch_class): New functions. (octave_usr_fucntion::xdispatch_class): New data member. * parse.y (frob_function): Call stash_dispatch_class here. * ov-struct.cc (Ffieldnames): Also handle objects. * ov-class.cc (Fmethods): New function. * load-path.cc (load_path::do_methods): New function. * load-path.h (load_path::methods): New function. * ov.h (octave_value::is_object): New function. * ov-base.h (octave_base_value::is_object): New virtual function. * ov-class.h (octave_class::is_object): New function. * ov-class.cc (Fisobject): New function. 2007-06-15 John W. Eaton <jwe@octave.org> * ov-class.cc (octave_class::print): Call display method if found. * symtab.h (symbol_table::fcn_info::find_method): New function. (symbol_table::find_method): New function. (symbol_table::fcn_info::fcn_info_rep::find_method): Provide decl. * symtab.cc (symbol_table::fcn_info::fcn_info_rep::find_method): New function. (symbol_table::fcn_info::fcn_info_rep::find): Use it. 2007-06-14 John W. Eaton <jwe@octave.org> * symtab.h (symbol_table::clear_mex_functions): Make it work. (symbol_table::fcn_info::fcn_info_rep::clear_mex_function, symbol_table::fcn_info::clear_mex_function): New functions. 2007-06-08 John W. Eaton <jwe@octave.org> * defun.cc (Falias): Delete. * variables.cc (load_fcn_try_ctor): New function. (lookup): call load_fcn_try_ctor instead of load_fcn_from_file. * variables.cc, variables.h (at_top_level, lookup_by_name, lookup, initialize_symbol_tables, fcn_out_of_date, symbol_out_of_date, lookup_function, lookup_user_function, link_to_global_variable, link_to_builtin_or_function, force_link_to_function, Fdocument, is_local_variable, do_clear_all, do_clear_functions, do_clear_globals, do_clear_variables, do_clear_function, do_clear_global, do_clear_variable, do_clear_symbol, do_clear_function_pattern, do_clear_global_pattern, do_clear_variable_pattern, do_clear_symbol_pattern, clear_function, clear_variable, clear_symbol): Delete (some functionality moved to the new symtab.cc and some is no longer needed). (Fignore_function_time_stamp): Move to symtab.cc. * lex.l (lookup_identifier): Delete. * parse.y (is_function_file): New function. (load_fcn_from_file): Return pointer to octave_function, not bool. * ov-usr-fcn.h, ov-usr-fcn.cc (octave_user_function::argn_sr, octave_user_function::nargin_sr, octave_user_function::nargout_sr, octave_user_function::varargin_sr): Delete data members. (octave_user_function::install_automatic_vars): Delete. (octave_user_script::do_multi_index_op): New function. * ov-fcn.h (octave_function::locked, octave_function::my_dir_name): New data members. (octave_function::dir_name, octave_function::stash_dir_name, octave_function::lock, octave_function::unlock, octave_function::islocked): New functions. * of-fcn-handle.h, ov-fcn-handle.cc (octave_fcn_handle::subsref): Call out_of_date_check here to simplify time stamp checking. (octave_fcn_handle::reload_warning): Delete. * ov.h (octave_value::is_user_script, octave_value::is_user_function): New functions. * ov-base.h (octave_base_value::is_user_script, octave_base_value::is_user_function): New pure virtual functions. * ov-fcn.h (octave_function::is_user_script, octave_function::is_user_function): Delete. * load-save.cc (install_loaded_variable): Greatly simplify. * load-path.h, load-path.cc: Change private_fcn_file to private_file. (load_path::private_fcn_map): New data member. (load_path::do_add, load_path::do_remove, load_path::do_update): Also manage private_file_map here. (load_path::add_to_private_fcn_map): New function. (load_path::remove_private_fcn_map): New function. (load_path::do_find_private_fcn): Make it work. (get_file_list): New function. (load_path::do_display): Use it. Display private map. (load_path::find_method, load_path::find_fcn): Handle directory name. * token.cc, token.h, toplev.cc, debug.cc, defun.cc, defun-dld.h, defun-int.h, error.cc, help.cc, load-save.h, load-save.cc, mex.cc, octave.cc, ov-fcn-handle.cc, ov-usr-fcn.cc, parse.h, parse.y, lex.l, variables.cc: Adapt to new symbol table objects (my apologies for the lack of detail). * unwind-prot.h (unwind_protect::add): Set default value for ptr arg. * pt-stmt.cc (tree_statement::eval): Rework method for deciding whether to assign value to ans. * pt-idx.cc (tree_index_expression::rvalue): Looking up symbol may evaluaate first args now. * pt-id.h, pt-id.cc (tree_identifier::document, tree_identifier::is_defined, tree_identifier::define, tree_identifier::is_function, tree_identifier::lookup, tree_identifier::link_to_global): Delete. (tree_identifier::do_lookup): Simplify. (tree_identifier::rvalue): Looking up symbol can't execute script now. * pt-misc.cc (tree_parameter_list::initialize_undefined, tree_parameter_list::is_defined): Call is_variable for elt, not is_defined. * pt-fcn-handle.h (tree_anon_fcn_handle::fcn): Now pointer to octave_user_function, not value. Change all uses. * pt-decl.h (tree_decl_command::initialized): Delete data member. (tree_decl_elt::is_variable): New function. * pt-decl.cc: Fix all uses of tree_decl_command::initialized. * ls-hdf5.cc, ls-mat-ascii.cc, ls-mat4.cc, ls-mat5.cc, ls-oct-ascii.cc, ls-oct-binary.cc, input.cc: Don't include symtab.h. * dynamic-ld.h, dynamic-ld.cc (octave_dynamic_loader::load_oct, octave_dynamic_loader::load_mex, octave_dynamic_loader::do_load_oct, octave_dynamic_loader::do_load_mex): Adapt to new symbol table objects. Return pointer octave_function instead of bool. * DLD-FUNCTIONS/dispatch.cc (Fbuiltin): Disable for now. Disable code that works with old symbol tables. (Fbuiltin): Simply call symbol_table::add_dispatch. * pt-arg-list.cc, pt-arg-list.h, pt-assign.cc, pt-assign.h, pt-binop.cc, pt-binop.h, pt-bp.h, pt-cell.cc, pt-cell.h, pt-cmd.cc, pt-cmd.h, pt-colon.cc, pt-colon.h, pt-const.cc, pt-const.h, pt-decl.cc, pt-decl.h, pt-except.cc, pt-except.h, pt-exp.h, pt-fcn-handle.cc, pt-fcn-handle.h, pt-id.cc, pt-id.h, pt-idx.cc, pt-idx.h, pt-jump.cc, pt-jump.h, pt-loop.cc, pt-loop.h, pt-mat.cc, pt-mat.h, pt-misc.cc, pt-misc.h, pt-select.cc, pt-select.h, pt-stmt.cc, pt-stmt.h, pt-unop.cc, pt-unop.h: Adapt dup functions to use scope instead of symbol_table objects. * TEMPLATE-INST/Array-sym.cc: Delete. * Makefile.in (TI_XSRC): Remove it from the list. * symtab.h, symtab.cc: Replace with new versions. 2007-05-16 John W. Eaton <jwe@octave.org> * oct-lvalue.cc, oct-lvalue.h (octave_lvalue::chg_fcn): Delete. Fix all uses. 2007-05-15 John W. Eaton <jwe@octave.org> * load-path.cc (load_path::do_find_private_function): New function. * load-path.h (load_path::do_find_private_function): Provide decl. (load_path::find_private_function): New function. 2007-05-08 John W. Eaton <jwe@octave.org> * pt-idx.cc (tree_index_expression::rvalue): Handle dispatch here. * pt-id.cc (tree_identifier::is_variable, tree_identifier::lookup): New functions. * pt-id.cc: Provide decls. * parse.y (current_class_name): New global variable. * parse.h: Provide decl. * parse.y (load_fcn_from_file, parse_fcn_file): New arg, dispatch_type. (parse_fcn_file): Protect current_class_name and set it to dispatch_type before parsing function. (load_fcn_from_file): If dispatch_type is not empty, call load_path::find_method instead of load_path::find_fcn. * parse.h: Fix decls for extern functions. * lex.h (lexical_feedback::parsing_class_method): New data member. * lex.l (lexical_feedback::init): Initialize it. (lookup_identifier): Check it and set sym_name accordingly. * ov-usr-fcn.h (octave_user_function::mark_as_class_constructor, octave_user_function::is_class_constructor, octave_user_function::mark_as_class_method, octave_user_function::is_class_method): New functions. (octave_user_function::class_constructor, octave_user_function::class_method): New data members. * ov-usr-fcn.cc (octave_user_function::octave_user_function): Initialize them. * load-path.h, load-path.cc: Use typedefs to simplify template decls. Use fcn consistently instead of function. 2007-05-03 John W. Eaton <jwe@octave.org> * ov-class.cc (Fclass): Move here. * ov-typeinfo.cc: From here. * input.cc (octave_gets): Call load_path::update if user input contains something other than one of the characters " \t\n\r". * ov-class.cc, ov-class.h: New files. * Makefile.in: Add them to the appropriate lists. * load-path.cc (genpath): Skip directories beginning with "@". (load_path::dir_info::get_file_list): Don't return anything. Call get_private_function_map here. (load_path::dir_info::initialize): Not here. (load_path::dir_info_::get_method_file_map): New function. (load_path::method_map): New data member. (load_path::do_clear): Also clear method_map. (load_path::do_add): Also call add_to_method_map. (load_path::do_update): Also clear method_map and call (load_path::do_find_method): New function. (load_path::do_add_to_method_map): New function. (load_path::move_fcn_map, load_path::move_method_map): New functions. (load_path::move): Use them. (load_path::remove_fcn_map, load_path::remove_method_map): New functions. (load_path::remove): Use them. * load-path.h: Provide/fix decls. (load_path::find_method): New static function. * Makefile.in (%.df : %.cc): Use mv instead of $(simple-move-if-change-rule). 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