1 2009-07-16 John W. Eaton <jwe@octave.org>
3 * graphics.cc (get_array_limits): Require min_pos value to be
6 2009-07-08 John W. Eaton <jwe@octave.org>
8 * pt-assign.cc (maybe_warn_former_built_in_variable): Improve message.
10 2009-07-21 Jaroslav Hajek <highegg@gmail.com>
12 Version 3.2.2 released.
14 2009-07-03 Jaroslav Hajek <highegg@gmail.com>
16 * pt-eval.cc (do_unwind_protect_cleanup_code): Add missing
19 2009-07-02 Jaroslav Hajek <highegg@gmail.com>
21 * help.cc (do_which): Also look for files.
23 2009-07-02 Jaroslav Hajek <highegg@gmail.com>
25 * Cell.cc (Cell::index): Use proper resize_fill_value.
27 2008-07-01 David Bateman <dbateman@free.fr>
29 * pr-output.cc (static inline std::string rational_approx (double,
30 int)): Test for underflow of fractional part of rational approximation
33 2009-07-01 Joe Rothweiler <octaveuser@sensicomm.com>
35 * input.cc (raw_mode): Use TCSADRAIN if no wait.
37 2009-06-30 Jaroslav Hajek <highegg@gmail.com>
39 * symtab.h (force_variable): Remove assertion.
41 2009-06-26 John W. Eaton <jwe@octave.org>
43 * load-path.cc (Faddpath): Preserve order of prepended elements.
45 2009-06-24 Thorsten Meyer <thorsten.meyier@gmx.de>
47 * oct-map.cc (Octave_map::squeeze, Octave_map::permute,
48 Octave_map::transpose, Octave_map::reshape, Octave_map::concat,
49 Octave_map::index): Add tests for preservation of key order in
52 2009-06-24 Jaroslav Hajek <highegg@gmail.com>
54 * pt-mat.cc (get_concat_class): Use empty string as zero value.
55 (tm_row_const_rep::tm_row_const_rep): Initialize class_nm to empty
57 (tm_const::tm_const): Ditto.
59 2009-06-24 John W. Eaton <jwe@octave.org>
61 * pt-assign.cc (former_built_in_variables): Remove "ans" from the list.
63 2009-06-24 Jaroslav Hajek <highegg@gmail.com>
65 * pt-eval.cc (do_unwind_protect_cleanup_code):
66 Workaround sig_atomic_t != int.
68 2009-06-23 Jaroslav Hajek <highegg@gmail.com>
70 * quit.h (octave_quit_exception): Delete.
71 (exit_status, quitting_gracefully): New globals.
72 * quit.cc: Initialize them.
73 (Fquit): Set the globals, simulate interrupt.
74 (main_loop): Handle exit properly.
75 * octave.cc (execute_eval_option_code): Ditto.
76 (execute_command_line_file): Ditto.
77 * pt-eval.cc (do_unwind_protect_cleanup_code):
78 Fix order of unwind_protect calls.
80 2009-06-23 John W. Eaton <jwe@octave.org>
82 * oct-map.cc (Octave_map::squeeze, Octave_map::permute,
83 Octave_map::transpose, Octave_map::reshape, Octave_map::concat):
86 2009-06-22 Jaroslav Hajek <highegg@gmail.com>
88 * ov-cell.cc (octave_cell::all_strings): Avoid duplicate conversions.
90 2009-06-20 Jaroslav Hajek <highegg@gmail.com>
92 * ov.cc (Fsubsasgn): Uniquify shared value before assigning to it.
94 2009-06-17 John W. Eaton <jwe@octave.org>
96 * mex.cc (mxArray_octave_value::get_data):
97 If octave_value::mex_get_data returns a valid pointer, mark it as
98 foreign and return it instead of enumerating the types that can be
101 * ov-re-mat.h (octave_matrix::mex_get_data): New function.
102 * ov-bool-mat.h (octave_bool_matrix::mex_get_data): Ditto.
103 * ov-flt-re-mat.h (octave_float_matrix::mex_get_data): Ditto.
104 * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::mex_get_data): Ditto.
105 * ov-base-mat.h (octave_base_matrix::mex_get_data): Delete.
107 2009-06-16 Jaroslav Hajek <highegg@gmail.com>
109 * symtab.h (symbol_table::set_scope_and_context): Avoid checking
110 error_state for setting context.
112 2009-06-12 Kai NODA <nodakai@gmail.com>
114 * ls-mat4.h: Fix include guard
115 * ov-type-conv.h: Add missing include guard.
117 2009-06-12 Jaroslav Hajek <highegg@gmail.com>
119 * ov-cell.cc (octave_cell::sort (Array<octave_idx_type>&)): Simplify.
121 2009-06-10 John W. Eaton <jwe@octave.org>
123 * pt-fcn-handle.cc (tree_anon_fcn_handle::dup): Don't convert to
124 tree_constant object here. Do inherit from current symbol table
125 scope and context. New test.
127 * lex.l (handle_identifier): Set lexer_flags.looking_for_object_index
128 false if identifier is a keyword.
129 ({IDENT}{S}*): Don't set lexer_flags.looking_for_object_index here.
131 2009-06-09 Jaroslav Hajek <highegg@gmail.com>
133 * octave.cc (octave_main): Call initialize_command_input
134 conditionally. Move line_editing update in front of it.
135 Call command_editor::force_default_editor if not line_editing.
137 2009-06-09 Jaroslav Hajek <highegg@gmail.com>
139 * data.cc (Flog2): Fix tests.
141 2009-06-08 John W. Eaton <jwe@octave.org>
143 * variables.cc (symbol_exist): Returnn 1 for function handles and
144 inline function objects.
146 2009-06-08 Jaroslav Hajek <highegg@gmail.com>
148 * symtab.h (symbol_table::do_clear_global,
149 symbol_table::do_clear_global_pattern): Properly erase from both local
152 2009-06-08 Jaroslav Hajek <highegg@gmail.com>
154 * variables.cc (Fclear): Clear also globals when called without
157 2009-06-07 Jaroslav Hajek <highegg@gmail.com>
159 * graphics.cc (color_property::do_set): Allow a wider range of types.
161 2009-06-07 Jaroslav Hajek <highegg@gmail.com>
163 * DLD-FUNCTIONS/find.cc (Ffind): Fix docs. Improve second argument
164 handling. Add regression tests.
166 2009-06-06 Rik <rdrider0-list@yahoo.com>
168 * data.cc: Update documentation for 'complex' function
170 2009-06-06 Rik <rdrider0-list@yahoo.com>
172 * load-save.cc: Update documentation for NA and isna functions
174 2009-06-06 Rik <rdrider0-list@yahoo.com>
176 * load-save.cc: Update documentation for load and save
178 2009-06-06 Rik <rdrider0-list@yahoo.com>
180 * pr-output.cc: Update documentation for 'format'
182 2009-06-05 Rik <rdrider0-list@yahoo.com>
184 * variables.cc: Update documentation for 'who' family of functions
186 2009-06-03 Rik <rdrider0-list@yahoo.com>
188 * input.cc: Correct documentation for keyboard function
190 2009-05-25 Jaroslav Hajek <highegg@gmail.com>
192 Version 3.2.0 released.
194 2009-06-02 Rob Mahurin <rob@utk.edu>
196 * Makefile.in: Add CARBON_LIBS to OCTINTERP_LINK_DEPS.
197 From Bernard Desgraups <bdesgraupes@orange.fr>.
199 2009-06-02 Jaroslav Hajek <highegg@gmail.com>
201 * ov-base.cc (octave_base_value::numeric_assign): Gripe when no index
203 * ov-cell.cc (octave_cell::subsasgn): Ditto.
204 * ov-struct.cc (octave_struct::subsasgn): Ditto.
205 * ov-list.cc (octave_list::subsasgn): Ditto.
207 2009-05-28 John W. Eaton <jwe@octave.org>
209 * load-path.cc (load_path::do_files): Avoid shadow warning from GCC.
211 2009-05-27 John W. Eaton <jwe@octave.org>
213 * DLD-FUNCTIONS/__magick_read__.cc (write_image):
214 Bail out if given indexed image.
216 2009-05-27 Jaroslav Hajek <highegg@gmail.com>
218 * DLD-FUNCTIONS/__magick_read__.cc (encode_map): Fix RGB color
221 2009-05-26 John W. Eaton <jwe@octave.org>
223 * load-path.h, load-path.cc (load_path::files, load_path::do_files):
225 * help.cc (F__list_functions__): Call load_path::files with
226 omit_exts set to true.
229 (symbol_table::symbol_record::symbol_record_rep::is_variable):
230 Use "! is_local ()" instead of storage_class != local.
231 (symbol_table::do_variable_names): Only add variables to the list.
232 (symbol_table::unmark_forced_variables): New static function
233 * variables.cc (do_who): Use is_variable instead of is_defined.
234 Also limit output to variables when using regexp pattern.
235 * octave.cc (unmark_forced_vars): Delete.
236 (execute_eval_option_code): Don't add unmark_forced_vars to
237 unwind_protect stack here.
238 * toplev.cc (main_loop): Add symbol_table::unmark_forced_variables
239 to the unwind_protect stack here.
240 * input.cc (get_debug_input): Likewise.
241 * parse.y (parse_fcn_file, eval_string): Likewise.
243 2009-05-25 Jaroslav Hajek <highegg@gmail.com>
245 * toplev.h (quit_allowed): New global variable.
246 * toplev.cc (quit_allowed): Declare it.
247 (Fquit): Raise error if quitting is not allowed.
248 * octave.cc (octave_main): if running as embedded, disable quit by
251 2009-05-25 Jaroslav Hajek <highegg@gmail.com>
253 * variables.cc (do_who): Only output symbols with a defined value.
255 2009-05-22 Michael Goffioul <michael.goffioul@gmail.com>
257 * toplev.h (main_loop): Tag with OCTINTERP_API.
258 * input.h (octave_read, get_input_from_file, get_input_from_stdin):
260 * lex.h (create_buffer, current_buffer, switch_to_buffer,
261 delete_buffer, restore_input_buffer, delete_input_buffer): Ditto.
263 2009-05-22 Robert T. Short <octave@phaselockedsystems.com>
265 * ov-class.h, ov-class.cc (octave_class::clear_exemplar_map):
267 * symtab.h (symbol_record::clear_objects,
268 symbol_record::do_clear_objects): New functions.
269 * variables.cc (do_matlab_compatible_clear, clear):
270 Handle -classes option.
272 2009-05-22 Jaroslav Hajek <highegg@gmail.com>
274 * src/ov-base-mat.cc (octave_base_matrix<MT>::assign (const
275 octave_value_list, typename MT::element_type)): Avoid out of bounds
278 2009-05-21 Michael Goffioul <michael.goffioul@gmail.com>
280 * graphics.cc (figure::properties::get_boundingbox,
281 figure::properties::set_boundingbox): Get screen size from root
283 (convert_position): Get screen resolution from root object and remove
284 unneeded "backend" argument.
285 (axes::properties::get_boundingbox,
286 figure::properties::get_boundingbox,
287 figure::properties::set_boundingbox): Remove unneeded backend argument
288 to convert_position call.
290 * debug.h (class bp_table): Tag with OCTINTERP_API.
291 * input.h (Vdebugging): Ditto.
292 * pt-eval.h (class tree_evaluator): Ditto.
293 * toplev.h (class octave_call_stack): Ditto.
295 * file-io.cc (mkstemp): Add mktemp-based implementation of mkstemp on
296 platforms that do not have it (mkstemp is required by the new help
299 * TEMPLATE-INST/Array-os.cc: Add "extern template" declaration for
300 Array<octave_idx_type> to avoid implicit instantiation (and duplicate
301 symbols at link-time) [Win32]
303 2009-05-20 John W. Eaton <jwe@octave.org>
305 * pt-assign.cc (maybe_warn_former_built_in_variable):
306 Set initialized to true when done initializing vars set.
307 From Michael Goffioul <michael.goffioul@gmail.com>.
309 2009-05-20 Jaroslav Hajek <highegg@gmail.com>
312 (octave_value_typeinfo::unary_class_ops,
313 octave_value_typeinfo::unary_ops,
314 octave_value_typeinfo::non_const_unary_ops,
315 octave_value_typeinfo::binary_class_ops,
316 octave_value_typeinfo::binary_ops,
317 octave_value_typeinfo::compound_binary_class_ops,
318 octave_value_typeinfo::compound_binary_ops,
319 octave_value_typeinfo::cat_ops,
320 octave_value_typeinfo::assign_ops,
321 octave_value_typeinfo::assignany_ops,
322 octave_value_typeinfo::pref_assign_conv,
323 octave_value_typeinfo::type_conv_ops,
324 octave_value_typeinfo::widening_ops): Declare as Array<void *>.
325 * ov-typeinfo.cc: Reflect changes.
327 2009-05-20 Jaroslav Hajek <highegg@gmail.com>
329 * toplev.h (octave_exit_func): New typedef.
330 (octave_exit): Change to octave_exit_func.
332 2009-05-20 Jaroslav Hajek <highegg@gmail.com>
334 * ov-typeinfo.cc: Don't include oct-obj.h.
336 2009-05-20 Jaroslav Hajek <highegg@gmail.com>
338 * toplev.h (octave_quit_exception): New class.
339 (octave_exit): New global variable.
340 * toplev.cc (octave_exit): Initialize to ::exit.
341 (clean_up_and_exit): Call octave_exit if set.
342 (Fquit): Raise octave_quit_exception to quit.
343 (main_loop): Catch octave_quit_exception.
344 * octave.cc (execute_command_line_file): Ditto.
345 (execute_eval_option_code): Ditto.
347 2009-05-19 John W. Eaton <jwe@octave.org>
349 * DLD-FUNCTIONS/fltk_backend.cc (F__fltk_redraw__): New function.
350 (F__init_fltk__): Call add_input_event_hook with feval to add
351 __fltk_redraw__ to the list of even hook functions to call.
352 Call mlock when initializing.
353 (F__remove_fltk__): Call remove_input_event_hook with feval to
354 remove __fltk_redraw__ from the list of event hook functions.
355 Unlock __init_fltk__ when shutting down.
357 * input.cc (Finput_event_hook): Delete.
358 (input_event_hook): Handle set of functions instead of just one.
359 (Fadd_input_event_hook, Fremove_input_event_hook): New functions.
361 2009-05-19 Jaroslav Hajek <highegg@gmail.com>
363 * Makefile.in: Add X11_LIBS to OCTINTERP_LINK_DEPS.
365 2009-05-17 Jaroslav Hajek <highegg@gmail.com>
367 * TEMPLATE-INST/Array-tc.cc: Change #include.
369 2009-05-15 Robert T. Short <octave@phaselockedsystems.com>
371 * ov-class.cc (octave_class::exemplar_info): Fix typo in error message.
372 * ov-class.cc (Fmethods): Methods returns cell array.
373 * ls-mat5.cc (read_mat5_binary_element):
374 Construct exemplar array and ensure inheritance is correct.
376 2009-05-15 John W. Eaton <jwe@octave.org>
378 * error.cc (Ferror): Handle error struct argument.
380 * ls-mat5.cc (save_mat5_binary_element): Avoid multiple calls to
381 contents method. From David Bateman <dbateman@free.fr>.
382 (save_mat5_element_length): Use const Cell to avoid making copies
385 2009-05-15 Jaroslav Hajek <highegg@gmail.com>
387 * oct-stream.cc: Don't instantiate Array2<read_fptr>.
388 (octave_stream::read): Make read_fptr_table a static 2d array.
389 (FILL_TABLE_ROW): Update.
391 2009-05-12 Jaroslav Hajek <highegg@gmail.com>
393 * data.cc (F__accumarray_sum__): Optimize the constant range case.
395 2009-05-11 John W. Eaton <jwe@octave.org>
397 * sparse-xdiv.cc (do_rightdiv_sm_dm, do_leftdiv_dm_sm):
398 Avoid apparent MSVC bug with typedef.
400 * Makefile.in (install-lib): Remove
401 $(DESTDIR)$(octlibdir)/$(SHLLIBPRE)octinterp.$(SHLLIB_VER), not
402 $(DESTDIR)$(octlibdir)/$(SHLPRE)octinterp.$(SHLEXT_VER).
404 2009-05-08 Carsten Clark <tantumquantum+gnuoctave@gmail.com>
406 * data.cc (Fissorted): Fix typo in documentation entry.
408 2009-05-07 Robert T. Short <octave@phaselockedsystems.com>
410 * ov-class.h, ov-class.cc (octave_class::reconstruct_exemplar):
412 * ov-class.cc (octave_class::load_binary, octave_class::load_hdf5,
413 octave_class::load_ascii): Construct exemplar table and ensure
414 inheritance is correct.
415 * ov-struct.cc (struct): Return struct from object.
417 2009-05-07 John W. Eaton <jwe@octave.org>
419 * graphics.h.in (base_graphics_object::set): Undo previous change.
420 (base_properties::set (const caseless_str&, const octave_value&):
421 New virtual function.
422 (base_properties::set (const caseless_str&, const std::string&,
423 const octave_value&)): No longer virtual.
425 * toplev.cc (octave_config_info): Remove F2C and F2CFLAGS from the
427 * oct-conf.h.in (OCTAVE_CONF_F2CFLAGS, OCTAVE_CONF_F2C):
430 2009-05-07 Marco Atzeri <marco_atzeri@yahoo.it>
432 * Makefile.in: (SHLPRE): Rename from SHLLIBPRE.
434 2009-05-07 John W. Eaton <jwe@octave.org>
436 * genprops.awk (emit_declarations): Emit decls for static
437 has_property functions.
438 (emit_source): Add class name argument to base_properties::set
439 function. Pass class name to set_dynamic and
440 base_properties::set. Emit definitions for has_property
442 * graphics.h.in, graphics.cc
443 (base_properties::set, base_properties::set_dynamic):
445 (base_properties::all_dynamic_properties): New static data member.
446 (base_properties::has_dynamic_property): New static function.
447 (base_graphics_object::set): Pass class name to
448 base_properties::set function.
449 (property_list::set): Check for invalid property names.
451 2009-05-06 Jaroslav Hajek <highegg@gmail.com>
453 * ov-re-mat.cc (Fdouble): Fix order of branches.
455 2009-05-05 John Swensen <jpswensen@comcast.net>
457 * debug.h, debug.cc (breakpoints): Rename from bp_map, use a
458 std::set instead of a std::map object. Change all uses.
459 (bp_table::do_get_breakpoint_list): Simplify.
461 2009-05-05 Robert T. Short <octave@phaselockedsystems.com>
463 * ov-class.h, ov-class.cc (octave_class::reconstruct_parents):
465 * ov-class.cc (octave_class::load_binary, octave_class::load_hdf5):
466 Contstruct parent list.
467 (get_current_method_class): Clean up method class extraction.
469 2009-05-05 John W. Eaton <jwe@octave.org>
471 * graphics.cc (array_property::validate): Require object to be any
472 numeric type, not necessarily a double precision value.
474 * variables.cc (set_internal_variable): Pass NM in call to error.
476 2009-05-04 Peter O'Gorman <pogma@thewrittenword.com>
478 * utils.cc: Don't define HAVE_C99_VSNPRINTF here.
480 2009-05-01 John W. Eaton <jwe@octave.org>
482 * error.cc (Vlast_error_file, Vlast_error_name, Vlast_error_line,
483 Vlast_error_column): Delete.
484 (Vlast_error_stack): New static variable.
485 (initialize_last_error_stack): New static function.
486 (verror, Frethrow, Flasterror): Set or use Vlast_error_stack, not
487 Vlast_error_file, etc.
489 2009-04-27 John W. Eaton <jwe@octave.org>
491 * ov-class.cc (octave_class::dotref): Handle empty parent class.
492 (octave_class::get_current_method_class): Allow result to be empty.
493 (called_from_builtin): New static function.
494 (octave_class::subsref, octave_class::subsasgn): Use it.
496 2009-04-23 John W. Eaton <jwe@octave.org>
498 * ov-class.cc (Fclass): Check newly constructed classes against
499 the first constructed object of the class.
501 * ov-class.h, ov-class.cc (octave_class::exmplar_info): New class.
502 (exemplar_map): New static data member.
503 (exemplar_iterator, exemplar_const_iterator): New typedefs.
505 * ov-class.h (octave_class::nparents,
506 octave_class::parent_class_name_list): New functions.
507 * ov.h (octave_base_value::nparents,
508 octave_base_value::parent_class_name_list): New functions.
509 * ov-base.h, ov-base.cc (octave_base_value::nparents,
510 octave_base_value::parent_class_name_list): New functions.
511 (parent_class_names): Error if called for wrong type argument.
513 * symtab.cc (load_out_of_date_fcn): New arg, dispatch_type.
514 (out_of_date_check_internal): Pass dispatch type to
515 load_out_of_date_fcn.
517 2009-04-22 John W. Eaton <jwe@octave.org>
519 * ov-base-int.cc (octave_base_int_helper<T, false,
520 false>::char_value_out_of_range): Correct result for specialization.
522 * ov-class.cc (octave_class::dotref, octave_class::subsasgn):
523 Protect against possibly invalid octave_value -> string conversions.
525 2009-04-22 Robert T. Short <octave@phaselockedsystems.com>
527 * variables.cc (symbol_exist): Also return 1 for objects.
528 * ov-base.h (octave_base_value::assign): New virtual function.
529 * ov-class.h (octave_class::assign): New function.
530 * ov-class.cc (octave_class::find_parent_class): Simplify.
531 (octave_class::octave_class): Don't allow duplicate parent classes.
532 (octave_class::subsasgn): Allow cls = method (cls, value) to work
533 properly when method is a parent-class method.
534 (get_method_class): New static function.
535 (octave_class:subsasgn, octave_class::dotref): Use it.
536 (F__isa_parent__): New function.
538 2009-04-22 Jaroslav Hajek <highegg@gmail.com>
540 * ov-range.cc (octave_range::char_array_value): New virtual function
542 * ov-range.h: Declare it.
544 2009-04-22 Jaroslav Hajek <highegg@gmail.com>
546 * pt-mat.cc (tm_row_const::tm_row_const_rep::do_init_element):
547 Update class name even for all-zeros elements.
548 (get_concat_class): Update the default value if possible.
550 2009-04-21 John W. Eaton <jwe@octave.org>
552 * parse.y (Fassignin): Add missing unwind_protect frame.
554 * toplev.h (push (symbol_table::scope_id, symbol_table::context_id)):
557 * toplev.cc (main_loop): Don't call symbol_table::reset_scope.
559 * mex.cc (mexGetVariable, mexPutVariable): Use unwind_protect to
560 restore call stack and scope.
562 * ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
563 Don't use symbol_table::push_scope.
564 * variablees.cc (do_who): Likewise. Use octave_call_stack and
565 unwind_protect to manage change in scope.
566 * ov-fcn-handle.cc (octave_fcn_handle::load_ascii,
567 octave_fcn_handle::load_binary, octave_fcn_handle::load_hdf5):
569 * ls-mat5.cc (read_mat5_binary_element): Likewise.
571 * symtab.h (erase_scope (void*)): New function, for unwind_protect.
572 (symbol_table::push_scope, symbol_table::pop_scope,
573 symbol_table::reset_scope): Delete.
574 (symbol_table::scope_stack): Delete static member.
575 * symtab.cc (symbol_table::scope_stack): Delete definition.
577 2009-04-17 Jaroslav Hajek <highegg@gmail.com>
579 * oct-map.h (Octave_map::contents (const_iterator) const,
580 Octave_map::contents (iterator)): Simplify.
582 2009-04-17 Jaroslav Hajek <highegg@gmail.com>
584 * oct-map.cc (Octave_map::assign (const octave_value_list&, const
585 std::string&, const Cell&)): Fix & simplify.
586 (common_size): Remove.
588 2009-04-16 Jaroslav Hajek <highegg@gmail.com>
590 * pt-idx.cc (make_value_list): Gripe on magic end query for undefined
593 2009-04-16 Jaroslav Hajek <highegg@gmail.com>
595 * xpow.cc (same_sign): New helper function.
596 (elem_xpow (double, const Range&), elem_xpow (const Complex&, const Range&)):
597 Only optimize monotonic-magnitude integer ranges, start always from
600 2008-04-11 David Bateman <dbateman@free.fr>
602 * ov-cell.cc (Fstruct2cell): Treat possible trailing singleton for
603 creation of cell array from column structure vector.
605 2009-04-09 Jaroslav Hajek <highegg@gmail.com>
607 * ov-cell.cc (octave_cell::subsasgn): Fix reference counting
610 2009-04-08 John W. Eaton <jwe@octave.org>
612 * load-path.cc (rehash_internal): New function.
614 (Fpath, Faddpath, Frmpath): Call rehash_internal if path is modified.
616 2009-04-08 Jaroslav Hajek <highegg@gmail.com>
618 * xpow.cc (elem_xpow (double, const Range&),
619 elem_xpow (const Complex&, const Range&)): New functions.
620 * xpow.h: Declare them.
621 * OPERATORS/op-range.cc: Define scalar .^ range and complex .^ range &
624 2009-04-04 Jaroslav Hajek <highegg@gmail.com>
626 * ov-struct.cc (octave_struct::subsasgn): Fix reference counting
629 2008-04-03 David Bateman <dbateman@free.fr>
631 * DLD-FUNCTIONS/max.cc (MINMAX_SPARSE_BODY): Allow sparse boolean
634 2009-04-01 Jaroslav Hajek <highegg@gmail.com>
636 * ov-str-mat.cc (default_numeric_conversion_function):
637 Create an octave_scalar if possible.
639 2009-03-29 John W. Eaton <jwe@octave.org>
641 * DLD-FUNCTIONS/fltk_backend.cc (plot_window::button_press):
642 Don't pass arbitrary input to fl_message as a format string.
644 2009-03-29 Jaroslav Hajek <highegg@gmail.com>
646 * pt-eval.cc (do_unwind_protect_cleanup_code): Protect also
647 octave_interrupt_state.
649 2009-03-29 Jaroslav Hajek <highegg@gmail.com>
651 * DLD-FUNCTIONS/cellfun.cc (Fcellslices): Index n-d arrays along the
654 2009-03-27 Jaroslav Hajek <highegg@gmail.com>
656 * DLD-FUNCTIONS/balance.cc (Fbalance): Fix order of output args.
658 2009-03-26 Jaroslav Hajek <highegg@gmail.com>
660 * DLD-FUNCTIONS/find.cc
661 (find_nonzero_elem_idx (const Array<T>&, ...)): Move dimensions
664 2009-03-26 Jaroslav Hajek <highegg@gmail.com>
666 * DLD-FUNCTIONS/find.cc
667 (find_nonzero_elem_idx (const Array<T>&, ...)): Simplify.
668 Instantiate for bool and octave_int types.
669 (find_nonzero_elem_idx (const Sparse<T>&, ...)):
670 Instantiate for bool.
671 (Ffind): Handle bool and octave_int cases.
673 2009-03-25 John W. Eaton <jwe@octave.org>
675 * version.h (OCTAVE_VERSION): Now 3.1.55+.
676 (OCTAVE_API_VERSION): Now api-v37+.
678 * version.h (OCTAVE_VERSION): Now 3.1.55.
679 (OCTAVE_API_VERSION): Now api-v37.
680 (OCTAVE_RELEASE_DATE): Now 2009-03-25.
682 * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): Also return
683 [](0x0) if the array has 0 rows and it is not a column vector.
685 * oct-stream.cc (octave_stream::write (const Array<T>&,
686 octave_idx_type, oct_data_conv::data_type, octave_idx_type,
687 oct_mach_info::float_format)): Seek to skip if still inside bounds
688 of existing file. Otherwise, write NUL to skip.
690 * Makefile.in (%.df : %.cc): Write source file name to output,
691 wrapped in XDEFUN_FILE_NAME macro.
692 * mkbuiltins: Provide definition for XDEFUN_FILE_NAME.
693 * mkgendoc: Likeiwse.
694 (XDEFUN_DLD_INTERNAL, XDEFUNX_DLD_INTERNAL, XDEFUN_INTERNAL,
695 XDEFCONSTFUN_INTERNAL, XDEFUNX_INTERNAL, XDEFVAR_INTERNAL,
696 XDEFCONST_INTERNAL): Pass file_name to print_doc_string.
697 (print_doc_string): New arg, FILE_NAME. Print file name as
700 2009-03-24 John W. Eaton <jwe@octave.org>
702 * ov-class.cc (F__parent_classes__): New function.
704 2009-03-24 Robert T. Short <octave@phaselockedsystems.com>
706 * ov-class.h, ov-class.cc (octave_class::octave_class (const
707 Octave_map&, const std::string&, const octave_value_list&)):
709 (octave_class::find_parent_class, octave_class::parent_classes):
711 (octave_class::dotref): Also look in parent class.
712 (Fclass): Handle parent class arguments.
714 * ov-base.h (octave_base_value::get_parent_list,
715 octave_base_value::parent_classes): New virtual functions.
717 * load-path.h, load-path.cc (load_path::parent_map): New data member.
718 (load_path::add_to_parent_map): New static function.
719 (load_path::do_add_to_parent_map): New member function.
720 (load_path::do_find_method): Also look in parent classes for methods.
721 (load_path::parent_map_type, load_path::const_parent_map_iterator,
722 load_path::parent_map_iterator): New typedefs.
724 2009-03-23 John W. Eaton <jwe@octave.org>
727 (symbol_table::symbol_record::symobl_recoord_rep::is_variable):
728 Also return true if symbol is tagged as a variable.
729 (symbol_table::symbol_record::symobl_recoord_rep::force_variable):
730 Don't set variable value.
731 (symbol_table::symbol_record::symobl_recoord_rep::clear_forced,
732 symbol_table::symbol_record::clear_forced): Delete.
733 (symbol_table::unmark_forced_variables): Rename from
734 symbol_table::clear_forced_variables.
735 (symbol_table::do_unmark_forced_variables): Rename from
736 symbol_table::do_clear_forced_variables.
737 * parse.y (make_script, finish_function): Call
738 symbol_table::unmark_forced_variables instead of
739 symbol_table::clear_forced_variables.
740 * octave.cc (unmark_forced_vars): New function.
741 (execute_eval_option_code): Add it to the unwind-protect stack.
743 2009-03-22 Jaroslav Hajek <highegg@gmail.com>
745 * pt-eval.cc (tree_evaluator::visit_simple_for_command):
746 Remove struct branch, handle structs by the generic code.
747 (tree_evaluator::visit_complex_for_command):
748 Add missing const qualifiers.
750 2009-03-21 Jaroslav Hajek <highegg@gmail.com>
752 * ov-base-diag.cc: Add missing include.
753 * sparse-xdiv.cc: Ditto.
754 * DLD-FUNCTIONS/__glpk__.cc: Ditto.
755 * DLD-FUNCTIONS/__lin_interpn__.cc: Ditto.
756 * DLD-FUNCTIONS/__voronoi__.cc: Ditto.
758 2009-03-20 Jaroslav Hajek <highegg@gmail.com>
760 * ov-re-mat.cc (octave_matrix::load_ascii): Simplify.
761 * ov-flt-re-mat.cc (octave_float_matrix::load_ascii): Simplify.
762 * ov-cx-mat.cc (octave_complex_matrix::load_ascii): Simplify.
763 * ov-flt-cx-mat.cc (octave_float_complex_matrix::load_ascii): Simplify.
765 2009-03-20 Jaroslav Hajek <highegg@gmail.com>
767 * ov-re-mat.cc (octave_matrix::isnan, octave_matrix::isinf,
768 octave_matrix::finite): Simplify.
769 * ov-flt-re-mat.cc (octave_float_matrix::isnan,
770 octave_float_matrix::isinf, octave_float_matrix::finite): Simplify.
771 * ov-cx-mat.cc (octave_complex_matrix::isnan,
772 octave_complex_matrix::isinf, octave_complex_matrix::finite):
774 * ov-flt-cx-mat.cc (octave_float_complex_matrix::isnan,
775 octave_float_complex_matrix::isinf,
776 octave_float_complex_matrix::finite): Simplify.
778 2009-03-19 Benjamin Lindner <lindnerb@users.sourceforge.net>
780 * ls-oct-ascii.cc (extract_keyword): Replace loop with call to
781 read_until_newline to avoid leaving stray '\r' in stream when
782 reading files with CRLF line endings.
784 2009-03-18 Jaroslav Hajek <highegg@gmail.com>
786 * DLD-FUNCTIONS/cellfun.cc
787 (scalar_col_helper, scalar_col_helper_def, scalar_col_helper_nda,
788 scalar_query_helper): New classes.
789 (make_col_helper): New function.
790 (Fcellfun): Use col_helper classes for UniformOutput. Avoid copying by
791 using const variables.
793 2009-03-17 Jaroslav Hajek <highegg@gmail.com>
795 * OPERATORS/op-b-bm.cc: Add missing INSTALL_BINOPs.
796 * OPERATORS/op-bm-b.cc: Ditto.
797 * OPERATORS/op-fm-fm.cc: Ditto.
798 * OPERATORS/op-m-m.cc: Ditto.
800 2009-03-17 Jaroslav Hajek <highegg@gmail.com>
802 * ov.cc (octave_value::octave_value): Move to ov.h
803 * ov.h (octave_value::octave_value): Implement fast inline constructor
806 2009-03-15 Jaroslav Hajek <highegg@gmail.com>
808 * DLD-FUNCTIONS/cellfun.cc (Fcellslices): New DLD function.
810 2009-03-13 Jaroslav Hajek <highegg@gmail.com>
812 * ov.h (octave_value::compound_binary_op): Support bool compound ops.
813 * ov.cc (do_binary_op, decompose_binary_op, binary_op_fcn_name):
815 * pt-cbinop.cc (strip_not, simplify_and_or_op): New funcs.
816 (maybe_compound_binary_expression): Support bool compound ops.
817 * OPERATORS/op-int.h: Support bool compound ops.
818 * OPERATORS/op-b-bm.cc: Ditto.
819 * OPERATORS/op-bm-b.cc: Ditto.
820 * OPERATORS/op-bm-bm.cc: Ditto.
821 * OPERATORS/op-fm-fm.cc: Ditto.
822 * OPERATORS/op-m-m.cc: Ditto.
824 2009-03-13 Jaroslav Hajek <highegg@gmail.com>
826 * xpow.cc (xpow (const NDArray&, double), xpow (const ComplexNDArray&, double),
827 xpow (const FloatNDArray&, float), xpow (const FloatComplexNDArray&,
828 float)): Use xisint for testing ints. Optimize w.r.t int exponents.
830 2009-03-13 John W. Eaton <jwe@octave.org>
832 * parse.y (maybe_warn_assign_as_truth_value, make_binary_op,
833 maybe_warn_variable_switch_label, maybe_warn_associativity_change):
834 Print file and line number info if available.
835 * lex.l (gripe_matlab_incompatible): Likewise.
837 * error.cc (pr_where): Use octave_call_stack::backtrace to print
838 complete stack trace at once. Don't attempt to print code.
839 (error_2): Set error_state to 0 before calling pr_where.
840 (warning_1): Switch sense of test on symbol_table::at_top_level.
841 Call pr_where after printing primary warning message.
843 2009-03-13 Jaroslav Hajek <highegg@gmail.com>
845 * ov-range.h (octave_range::octave_range (const Range&)): Allow
846 constructing from invalid range op result.
847 * ov-range.cc (octave_range::try_narrowing_conversion): Validate
848 invalid range op results.
849 * data.cc (fill_matrix): Return packed form (zero-step range) if
852 2009-03-10 Jason Riedy <jason@acm.org>
854 * DLD-FUNCTIONS/lu.cc (lu): Call fact.Pr_mat () and fact.Pc_mat ()
855 to return permutation matrices in the sparse case.
857 2009-03-12 John W. Eaton <jwe@octave.org>
859 * ls-mat-ascii.cc (get_mat_data_input_line): If we are looking at
860 '\r' or '\n', skip current line ending instead of skipping until
863 2009-03-12 Ben Abbott <bpabbott@mac.com>
865 * graphics.cc: Fix default "papersize" property value.
867 2009-03-12 Jaroslav Hajek <highegg@gmail.com>
869 * ov-flt-perm.h, ov-flt-perm.cc: Remove sources.
870 * ov.h, ov.cc (octave_value::octave_value (const PermMatrix&)): Remove
871 use "single" argument.
872 * ov.cc (install_types): Update.
873 * xpow.cc, xpow.h (xpow (PermMatrix, float)): Remove.
874 * ov-base-diag.cc (octave_base_diag::do_index_op): Remove permutation
876 * ov-re-diag.cc (octave_diag_matrix::do_index_op): Move it here.
877 * ov-re-diag.h (octave_diag_matrix::do_index_op): New decl.
879 * DLD-FUNCTIONS/det.cc (Fdet): Update.
880 * DLD-FUNCTIONS/inv.cc (Finv): Update.
881 * DLD-FUNCTIONS/pinv.cc (Fpinv): Update.
883 * OPERATORS/op-fcm-pm.cc <-- OPERATORS/op-fcm-fpm.cc
884 * OPERATORS/op-fcm-pm.cc: Update.
885 * OPERATORS/op-fm-pm.cc <-- OPERATORS/op-fm-fpm.cc
886 * OPERATORS/op-fm-pm.cc: Update.
887 * OPERATORS/op-pm-fcm.cc <-- OPERATORS/op-fpm-fcm.cc
888 * OPERATORS/op-pm-fcm.cc: Update.
889 * OPERATORS/op-pm-fm.cc <-- OPERATORS/op-fpm-fm.cc
890 * OPERATORS/op-pm-fm.cc: Update.
891 * OPERATORS/op-pm-pm.cc: Update.
892 * OPERATORS/op-pm-template.cc: Update.
894 2009-03-11 Jaroslav Hajek <highegg@gmail.com>
896 * xpow.cc (xpow (const PermMatrix&, double), xpow (const PermMatrix&,
897 float)): New functions.
898 * xpow.h: Declare them.
899 * DLD-FUNCTIONS/op-pm-pm.cc: Support permutation matrix ^ scalar.
900 * DLD-FUNCTIONS/op-fpm-fpm.cc: Ditto.
902 2009-03-11 Jaroslav Hajek <highegg@gmail.com>
904 * ov-ch-mat.cc (octave_char_matrix::double_value,
905 octave_char_matrix::float_value, octave_char_matrix::complex_value,
906 octave_char_matrix::float_complex_value): Cast to unsigned char.
908 2009-03-10 Jason Riedy <jason@acm.org>
910 * OPERATORS/op-pm-sm.cc (mul_pm_sm): New Octave binding for
912 (ldiv_pm_sm): New Octave binding for perm \ sparse.
913 (mul_sm_pm): New Octave binding for sparse * perm.
914 (div_sm_pm): New Octave binding for sparse / perm.
915 (install_pm_sm_ops): Install the above bindings.
917 * OPERATORS/op-pm-scm.cc (mul_pm_scm): New Octave binding for
918 perm * sparse complex.
919 (ldiv_pm_scm): New Octave binding for perm \ sparse complex.
920 (mul_scm_pm): New Octave binding for sparse complex * perm.
921 (div_scm_pm): New Octave binding for sparse complex / perm.
922 (install_pm_scm_ops): Install the above bindings.
924 * Makefile.in (PERM_OP_XSRC): Add op-pm-sm.cc and op-pm-scm.cc for
925 operations between permutations and sparse matrices.
927 2009-03-10 Jason Riedy <jason@acm.org>
929 * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): New override
930 for find on PermMatrix.
931 (find): Add a branch testing arg.is_perm_matrix () and calling the
934 2009-03-10 John W. Eaton <jwe@octave.org>
936 * c-file-ptr-stream.cc, dynamic-ld.cc, error.cc, lex.l, pager.cc,
937 zfstream.cc: Include <iostream>.
938 * zfstream.h: Include <iosfwd> instead of <istream> and <ostream>.
939 * c-file-ptr-stream.h, help.h, load-path.h, load-save.h,
940 ls-ascii-helper.h, oct-iostrm.h, oct-stream.h, ov-base-diag.h,
941 ov-base-int.h, ov-base-mat.h, ov-base-scalar.h, ov-base-sparse.h,
942 ov-base.h, ov-bool-mat.h, ov-bool-sparse.h, ov-bool.h, ov-cell.h,
943 ov-ch-mat.h, ov-class.h, ov-colon.h, ov-complex.h, ov-cs-list.h,
944 ov-cx-mat.h, ov-cx-sparse.h, ov-fcn-handle.h, ov-fcn-inline.h,
945 ov-float.h, ov-flt-complex.h, ov-flt-cx-mat.h, ov-flt-re-mat.h,
946 ov-intx.h, ov-list.h, ov-range.h, ov-re-mat.h, ov-re-sparse.h,
947 ov-scalar.h, ov-str-mat.h, ov-struct.h, ov.h, pager.h,
948 pr-output.h, procstream.h, pt-assign.h, pt-cell.h, pt-const.h,
949 pt-fcn-handle.h, pt-id.h, pt-mat.h, pt.h, utils.h:
950 Include <iosfwd> instead of <iosstream>.
952 2009-03-10 Jaroslav Hajek <highegg@gmail.com>
954 * data.cc (Fsize_equal): Allow single argument call.
955 * DLD-FUNCTIONS/max.cc (Fcummin, Fcummax): Update docs.
957 2009-03-09 Benjamin Lindner <lindnerb@users.sourceforge.net>
959 * ls-ascii-helper.h, ls-ascii-helper.cc: New files.
960 * Makefile.in: Add them to the appropriate lists.
961 * load-save.cc (Fload): Open all files in binary mode.
962 * ov-range.cc (load_ascii): Explicitly handle CR and CRLF line endings.
963 * ov-fcn-handle.cc (load_ascii): Likewise.
964 * ov-fcn-inline.cc (load_ascii): Likewise.
965 * ov-str-mat.cc (load_ascii): Likewise.
966 * ls-mat-ascii.cc (get_mat_data_input_line): Likewise.
967 * ls-oct-ascii.cc (extract_keyword, read_ascii_data): Likewise.
968 * ls-oct-ascii.h (extract_keyword): Likewise.
970 2009-03-09 John W. Eaton <jwe@octave.org>
972 * graphics.h.in (OCTAVE_DEFAULT_FONTNAME): New macro, defaults to "*".
973 (axes::properties, text::properties): Use it to set default fontname.
974 * graphics.cc (axes::properties::set_defaults): Likewise.
976 2009-03-09 Rafael Laboissiere <rafael@debian.org>
978 * Makefile.in (maintainer-clean): Remove y.tab.h here.
979 (distclean): Not here.
981 2009-03-09 Jason Riedy <jason@acm.org>
983 * OPERATORS/op-dm-sm.cc (add_dm_sm): Octave binding for diag + sparse.
984 (sub_dm_sm): Octave binding for diag - sparse.
985 (add_sm_dm): Octave binding for diag + sparse.
986 (sub_sm_dm): Octave binding for diag - sparse.
987 (install_dm_sm_ops): Install above bindings.
989 * OPERATORS/op-dm-scm.cc (add_cdm_sm): Octave binding for diag + sparse.
990 (add_dm_scm): Octave binding for diag + sparse.
991 (add_cdm_scm): Octave binding for diag + sparse.
992 (sub_cdm_sm): Octave binding for diag - sparse.
993 (sub_dm_scm): Octave binding for diag - sparse.
994 (sub_cdm_csm): Octave binding for diag - sparse.
995 (add_sm_cdm): Octave binding for diag + sparse.
996 (add_scm_dm): Octave binding for diag + sparse.
997 (add_scm_cdm): Octave binding for diag + sparse.
998 (sub_sm_cdm): Octave binding for diag - sparse.
999 (sub_scm_dm): Octave binding for diag - sparse.
1000 (sub_scm_cdm): Octave binding for diag - sparse.
1001 (install_dm_scm_ops): Install above bindings.
1003 2009-03-08 Jason Riedy <jason@acm.org>
1005 * sparse-xdiv.h (xleftdiv): Declare overrides for
1006 xleftdiv (diagonal, sparse), both real and complex.
1007 (xdiv): Declare overrides for xdiv (sparse, diagonal), both real
1010 * sparse-xdiv.cc (do_rightdiv_sm_dm): New template function.
1011 Implementation for xdiv (sparse, diagonal).
1012 (xdiv): Call do_rightdiv_sm_dm to implement overrides, real and
1014 (do_leftdiv_dm_sm): New template function. Implementation for
1015 xleftdiv (diagonal, sparse).
1016 (xleftdiv): Call do_leftdiv_dm_sm to implement overrides, real and
1019 * OPERATORS/op-dm-sm.cc (ldiv_dm_sm): Octave binding for real left
1020 division, diagonal into sparse.
1021 (div_sm_dm): Octave binding for real right division, sparse by
1023 (install_dm_sm_ops): Install above bindings.
1025 * OPERATORS/op-dm-scm.cc (ldiv_dm_scm): Octave binding for real
1026 diagonal \ complex sparse.
1027 (ldiv_cdm_sm): Octave binding for complex diagonal \ real sparse.
1028 (ldiv_cdm_scm): Octave binding for complex diagonal \ complex sparse.
1029 (div_scm_dm): Octave binding for complex sparse / real diagonal.
1030 (div_sm_cdm): Octave binding for real sparse / complex diagonal.
1031 (div_scm_cdm): Octave binding for complex sparse / complex diagonal.
1032 (install_dm_scm_ops): Install above bindings.
1034 2009-03-08 Jason Riedy <jason@acm.org>
1036 * OPERATORS/op-dm-scm.cc: New file. Implement multiplication
1037 between diagonal matrices (both real and complex) and complex
1039 * OPERATORS/op-dm-sm.cc: New file. Implement multiplication
1040 between diagonal matrices and sparse matrices, all real.
1041 * Makefile.in (DIAG_OP_XSRC): Add op-dm-sm.cc and op-dm-scm.cc.
1043 2009-03-09 Jaroslav Hajek <highegg@gmail.com>
1045 * data.cc (F__accumarray_sum__): New function.
1046 (do_accumarray_sum): New helper template function.
1048 2009-03-07 Jaroslav Hajek <highegg@gmail.com>
1050 * xdiv.cc (mdm_div_impl, dmm_lelftdiv_impl, dmdm_div_impl,
1051 dmdm_leftdiv_impl): Optimize.
1053 2009-03-07 John W. Eaton <jwe@octave.org>
1055 * pr-output.cc (octave_print_internal (std::ostream&,
1056 const PermMatrix&, bool, int)): Delete unused variable SCALE.
1058 * utils.cc (octave_vsnprintf): Avoid uninitialized variable
1061 * DLD-FUNCTIONS/qz.cc (Fqz): Avoid "maybe clobbered by vfork"
1064 * version.h (OCTAVE_VERSION): Now 3.1.54.
1065 (OCTAVE_API_VERSION): Now api-v36.
1066 (OCTAVE_RELEASE_DATE): Now 2009-03-07.
1068 * octave.cc (verbose_usage): Include --doc-cache-file in option list.
1070 2009-03-06 Jaroslav Hajek <highegg@gmail.com>
1072 * ov.h (octave_value::diag_matrix_value,
1073 octave_value::complex_diag_matrix_value,
1074 octave_value::float_diag_matrix_value,
1075 octave_value::float_complex_diag_matrix_value,
1076 octave_value::perm_matrix_value): New methods.
1078 * ov-base.cc (octave_base_value::diag_matrix_value,
1079 octave_base_value::complex_diag_matrix_value,
1080 octave_base_value::float_diag_matrix_value,
1081 octave_base_value::float_complex_diag_matrix_value,
1082 octave_base_value::perm_matrix_value): New virtual methods.
1084 * ov-base.h: Declare them.
1086 * ov-base-diag.h (octave_base_diag::diag_matrix_value,
1087 octave_base_diag::complex_diag_matrix_value,
1088 octave_base_diag::float_diag_matrix_value,
1089 octave_base_diag::float_complex_diag_matrix_value,
1090 octave_base_diag::perm_matrix_value): Remove declarations.
1092 * DLD-FUNCTIONS/inv.cc (Finv): Simplify handling diag & perm matrices.
1093 * DLD-FUNCTIONS/pinv.cc (Fpinv): Ditto.
1094 * DLD-FUNCTIONS/det.cc (Fdet): Ditto.
1096 2009-03-05 Jaroslav Hajek <highegg@gmail.com>
1098 * ls-hdf5.cc (add_hdf5_data): Handle diag & perm matrices.
1100 2009-03-05 John W. Eaton <jwe@octave.org>
1102 * pt-cell.cc, pt-cell.h (tree_cell::dup): Now const.
1103 * comment-list.cc, comment-list.h (octave_comment_list::dup): Ditto.
1104 * pt-arg-list.cc, pt-arg-list.h (tree_argument_list::dup): Ditto.
1105 * pt-assign.cc, pt-assign.h (tree_simple_assignment::dup,
1106 tree_multi_assignment::dup): Ditto.
1107 * pt-binop.cc, pt-binop.h (tree_binary_expression::dup,
1108 tree_boolean_expression::dup): Ditto.
1109 * pt-cmd.cc, pt-cmd.h (tree_no_op_command::dup,
1110 tree_function_def::dup): Ditto.
1111 * pt-colon.cc, pt-colon.h (tree_colon_expression::dup): Ditto.
1112 * pt-const.cc, pt-const.h (tree_constant::dup): Ditto.
1113 * pt-decl.cc, pt-decl.h (tree_decl_elt::dup, tree_decl_init_list::dup,
1114 tree_global_command::dup, tree_static_command::dup): Ditto.
1115 * pt-except.cc, pt-except.h (tree_try_catch_command::dup,
1116 tree_unwind_protect_command::dup): Ditto.
1117 * pt-fcn-handle.cc, pt-fcn-handle.h (tree_fcn_handle::dup,
1118 tree_anon_fcn_handle::dup): Ditto.
1119 * pt-id.cc, pt-id.h (tree_identifier::dup): Ditto.
1120 * pt-idx.cc, pt-idx.h (tree_index_expression::dup): Ditto.
1121 * pt-jump.cc, pt-jump.h (tree_break_command::dup,
1122 tree_continue_command::dup, tree_return_command::dup): Ditto.
1123 * pt-loop.cc, pt-loop.h (tree_while_command::dup,
1124 tree_do_until_command::dup, tree_simple_for_command::dup,
1125 tree_complex_for_command::dup): Ditto.
1126 * pt-mat.cc, pt-mat.h (tree_matrix::dup): Ditto.
1127 * pt-misc.cc, pt-misc.h (tree_parameter_list::dup,
1128 tree_return_list::dup): Ditto.
1129 * pt-select.cc, pt-select.h (tree_if_clause::dup,
1130 tree_if_command_list::dup, tree_if_command::dup,
1131 tree_switch_case::dup, tree_switch_case_list::dup,
1132 tree_switch_command::dup): Ditto.
1133 * pt-stmt.cc, pt-stmt.h (tree_statement::dup,
1134 tree_statement_list::dup): Ditto.
1135 * pt-unop.cc, pt-unop.h (tree_prefix_expression::dup,
1136 tree_postfix_expression::dup): Ditto.
1137 * pt-fcn-handle.h (tree_anon_fcn_handle::parameter_list,
1138 tree_anon_fcn_handle::return_list, tree_anon_fcn_handle::body,
1139 tree_anon_fcn_handle::scope): Ditto.
1141 2009-03-05 Jason Riedy <jason@acm.org>
1143 * ov-base-int.cc (convert_to_str_internal): Replace elt_type with
1144 element_type throughout.
1146 2009-03-05 Jaroslav Hajek <highegg@gmail.com>
1148 * DLD-FUNCTIONS/sparse.cc (Fsparse): Handle diagonal and permutation
1151 2009-03-03 John W. Eaton <jwe@octave.org>
1153 * ov-struct.cc (octave_struct::save_ascii,
1154 octave_struct::save_binary, octave_struct::save_hdf5):
1155 Preserve order of structure fields.
1156 * ls-mat5.cc (save_mat5_binary_element): Likewise.
1158 * symtab.h (symbol_table::do_inherit): Only inherit values for
1159 symbols from the donor_scope that already exist in the table.
1160 (symbol_table::symbol_record::symbol_record_rep::dup): Now const.
1161 (symbol_table::symbol_record::operator=): Decrement rep->count and
1163 (symbol_table::fcn_info::operator=): Likewise.
1165 * pt-fcn-handle.cc: (tree_anon_fcn_handle::dup): Transform
1166 tree_anon_fcn_handle objects to tree_constant objects containing
1167 octave_fcn_handle objects. New tests.
1169 * pt-assign.cc (tree_simple_assignment::rvalue1): Assign result of
1170 call to rhs->rvalue1() to an octave_value object, not an
1171 octave_value_list object.
1173 2009-03-03 Jaroslav Hajek <highegg@gmail.com>
1175 * oct-stream.h (octave_stream_list::lookup_cache): New member field.
1176 (octave_stream_list::octave_stream_list): Initialize it.
1177 (octave_stream_list::do_lookup): Use it.
1178 (octave_stream_list::clear): Make flush optional. Do physically erase
1179 entries from the map. Close files.
1180 (octave_stream_list::do_remove): Call clear on "all". Do erase deleted
1183 2009-03-02 John W. Eaton <jwe@octave.org>
1185 * graphics.cc (Fget, F__get__): Return a column vector of property
1186 values, not a row vector.
1188 2009-03-01 John W. Eaton <jwe@octave.org>
1190 * OPERATORS/op-fcm-fcm.cc (DEFNDASSIGNOP_FN (dbl_assign)):
1191 LHS type is float_complex_matrix, not complex_matrix. RHS value
1192 function is float_complex_array, not complex_array.
1194 2009-03-01 Jaroslav Hajek <highegg@gmail.com>
1196 * ov-perm.cc (octave_perm_matrix::print_raw): Call
1197 octave_print_internal.
1198 (octave_perm_matrix::print_raw): Call print_raw.
1199 * pr-output.cc (octave_print_internal (...,const DiagMatrix&,...)):
1200 Indicate diagonal matrix.
1201 (octave_print_internal (...,const ComplexDiagMatrix&,...)): Ditto.
1202 (octave_print_internal (...,const PermMatrix&,...)): New function.
1203 * pr-output.h: Declare it.
1205 2009-02-27 Jaroslav Hajek <highegg@gmail.com>
1207 * OPERATORS/op-dms-template.cc (gripe_if_zero): New template static
1209 (dmsdiv, sdmldiv): Call it.
1211 2009-02-26 John W. Eaton <jwe@octave.org>
1213 * symtab.h (symbol_table::symbol_record::symbol_record_rep::forced):
1214 New static constant.
1215 (symbol_table::symbol_record::symbol_record_rep::force_variable,
1216 symbol_table::symbol_record::force_variable): New functions.
1217 (symbol_table::symbol_record::symbol_record_rep::is_forced,
1218 symbol_table::symbol_record::symbol_record_rep::mark_forced,
1219 symbol_table::symbol_record::symbol_record_rep::unmark_forced,
1220 symbol_table::symbol_record::symbol_record_rep::clear_forced,
1221 symbol_table::symbol_record::is_forced,
1222 symbol_table::symbol_record::mark_forced,
1223 symbol_table::symbol_record::clear_forced,
1224 symbol_table::symbol_record::unmark_forced): New fucntions.
1225 * lex.h, lex.l (force_local_variable): Delete.
1226 (handle_identifier): Call symbol_table::force_variable instead of
1227 force_local_variable.
1228 * parse.y (make_script): Call symbol_table:clear_forced_variables
1229 after defining script.
1230 (finish_function): Call symbol_table::clear_forced_variables
1231 instead of symbol_table::clear_variables.
1233 * DLD-FUNCTIONS/chol.cc: Correct spelling of CHOLMOD in tests.
1235 * version.h (OCTAVE_VERSION): Now 3.1.53+.
1236 (OCTAVE_API_VERSION): Now api-v35+.
1238 2009-02-25 John W. Eaton <jwe@octave.org>
1240 * version.h (OCTAVE_VERSION): Now 3.1.53.
1241 (OCTAVE_API_VERSION): Now api-v35.
1242 (OCTAVE_RELEASE_DATE): Now 2009-02-25.
1243 (OCTAVE_COPYRIGHT): Update year.
1245 * Makefile.in (distclean): Remove tags TAGS y.tab.h y.output
1246 yy.lex.c here, not in maintainer-clean target. Also remove
1249 * DLD-FUNCTIONS/rand.cc: Note that the tests for the old random
1250 number generator will fail if using 64-bit indexing.
1252 2009-02-25 Jaroslav Hajek <highegg@gmail.com>
1254 * DLD-FUNCTIONS/lu.cc (maybe_set_triangular): New function.
1256 * DLD-FUNCTIONS/qr.cc (maybe_set_triangular): New function.
1259 2009-02-25 John W. Eaton <jwe@octave.org>
1261 * DLD-FUNCTIONS/chol.cc: Fix tests for missing cholmod.
1263 * input.cc (get_debug_input): Write debugging location info
1264 directly to std::cerr instead of calling message.
1265 * pt-eval.cc (tree_evaluator::do_breakpoint): Write debugging
1266 location info directly to std::cerr, not octave_stdout.
1268 * defaults.h.in (OCTAVE_DOC_CACHE_FILE): New macro.
1269 * defaults.cc (set_default_doc_cache_file): New function.
1270 (install_defaults): Call it.
1272 * help.cc (__list_functions__): Simplify
1274 * input.cc (get_debug_input): Don't pass arbitrary input to
1275 message as a format string.
1277 2009-02-24 John W. Eaton <jwe@octave.org>
1279 * help.cc, help.h (Vdoc_cache_file): New global variable.
1280 (Fdoc_cache_file): New function.
1281 * octave.cc (DOC_CACHE_FILE_OPTION): New option tag.
1282 (long_opts): Include doc-cache-file in the list.
1283 (octave_main): Handle DOC_CACHE_FILE_OPTION.
1285 2009-02-24 Jaroslav Hajek <highegg@gmail.com>
1288 (octave_scalar::int8_scalar_value): New method.
1289 (octave_scalar::int16_scalar_value): New method.
1290 (octave_scalar::int32_scalar_value): New method.
1291 (octave_scalar::int64_scalar_value): New method.
1292 (octave_scalar::uint8_scalar_value): New method.
1293 (octave_scalar::uint16_scalar_value): New method.
1294 (octave_scalar::uint32_scalar_value): New method.
1295 (octave_scalar::uint64_scalar_value): New method.
1298 (octave_float_scalar::int8_scalar_value): New method.
1299 (octave_float_scalar::int16_scalar_value): New method.
1300 (octave_float_scalar::int32_scalar_value): New method.
1301 (octave_float_scalar::int64_scalar_value): New method.
1302 (octave_float_scalar::uint8_scalar_value): New method.
1303 (octave_float_scalar::uint16_scalar_value): New method.
1304 (octave_float_scalar::uint32_scalar_value): New method.
1305 (octave_float_scalar::uint64_scalar_value): New method.
1307 * OPERATORS/op-s-s.cc (scalar_to_float): Remove duplicate conversion.
1308 * OPERATORS/op-range.cc (range_to_float_matrix): Ditto.
1310 2009-02-24 John W. Eaton <jwe@octave.org>
1312 * OPERATORS/op-float-conv.cc: New file.
1313 * Makefile.in (FLOAT_OP_XSRC): Add it to the list.
1314 (DOUBLE_OP_XSRC): Move op-double-conv.cc here from INTTYPE_OP_XSRC.
1315 * ops.h (DEFFLTCONVFN, DEFSTRFLTCONVFN): New macros.
1317 2009-02-23 John W. Eaton <jwe@octave.org>
1319 * ov-base-sparse.cc (octave_base_sparse<T>::print_raw):
1320 Remove extra ")" from output.
1322 * DLD-FUNCTIONS/eigs.cc (Feigs): If sigma argument is not a
1323 string, try extraction as complex value and check for error
1324 instead of inquiring about type first.
1326 * pt-eval.cc (tree_evaluator::visit_break_command,
1327 tree_evaluator::visit_return_command,
1328 tree_evaluator::visit_global_command,
1329 tree_evaluator::visit_static_command): Handle breakpoint.
1330 (tree_evaluator::visit_simple_for_command,
1331 tree_evaluator::visit_complex_for_command): Handle breakpoint once
1332 at beginning of loop.
1333 (tree_evaluator::visit_if_command_list): Don't call do_breakpoint
1335 (tree_evaluator::visit_no_op_command): Handle breakpoint if no-op
1336 command is end of function or script.
1337 (tree_evaluator::visit_statement): Handle breakpoint for
1338 expressions but not commands.
1339 (tree_evaluator::visit_while_command,
1340 tree_evaluator::visit_do_until_command):
1341 Check for breakpoint set on cmd, not expr.
1342 (tree_evaluator::visit_do_until_command): Handle breakpoint
1343 between check for breaking out of loop and loop control
1346 * pt-cmd.h (tree_no_op_command::eof): New data member
1347 (tree_no_op_command::tree_no_op_command): Initialize it.
1348 (tree_no_op_command::is_end_of_fcn_or_script): New function.
1349 * pt-stmt.cc (tree_statement::is_end_of_fcn_or_script):
1350 Call is_end_of_fcn_or_script instead of looking at original text
1353 * pt-select.h, pt-select.cc (tree_if_command::set_breakpoint,
1354 tree_if_command::delete_breakpoint): New functions.
1355 (tree_switch_command::set_breakpoint,
1356 tree_switch_command::delete_breakpoint): New functions.
1357 * pt-stmt.h, pt-stmt.cc (tree_statement::set_breakpoint,
1358 tree_statement::delete_breakpoint, tree_statement::is_breakpoint):
1359 Delegate real work to cmd or expr.
1360 (tree_statement::bp): Delete data member.
1361 (tree_statement::tree_statement): Don't initialize bp.
1362 (tree_statement::dup): Don't copy bp.
1364 * pt.h (tree::line (int), tree:column (int)): New functions.
1365 (tree:set_breakpoint, tree::delete_breakpoint): Now virtual.
1367 * parse.y (finish_if_command): Also store line and column info for
1368 if statement in first element of list.
1369 (finish_switch_command): Likewise, for switch.
1371 * input.cc (last_debugging_command): New static variable.
1372 (octave_gets): Set it here. Don't insert repeated debugging
1373 commands in the history list.
1375 2009-02-23 Jaroslav Hajek <highegg@gmail.com>
1377 * DLD-FUNCTIONS/pinv.cc: Support diagonal and permutation matrices.
1379 2008-02-21 David Bateman <dbateman@free.fr>
1381 * OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc, OPERATORS/op-s-scm.cc,
1382 OPERATORS/op-s-sm.cc, OPERATORS/op-scm-cs.cc, OPERATORS/op-scm-s.cc,
1383 OPERATORS/op-sm-cs.cc, OPERATORS/op-sm-s.cc: Don't perform any
1384 narrowing to full matrices.
1386 2009-02-20 Jaroslav Hajek <highegg@gmail.com>
1388 * ov-base-diag.h (octave_base_diag::sqrt): Remove.
1389 * ov-re-diag.cc (octave_diag_matrix::sqrt): New method.
1390 * ov-re-diag.h: Declare it.
1391 * ov-flt-re-diag.cc (octave_float_diag_matrix::sqrt): New method.
1392 * ov-flt-re-diag.h: Declare it.
1393 * ov-cx-diag.cc (octave_complex_diag_matrix::sqrt): New method.
1394 * ov-cx-diag.h: Declare it.
1395 * ov-flt-cx-diag.cc (octave_float_complex_diag_matrix::sqrt): New method.
1396 * ov-flt-cx-diag.h: Declare it.
1398 2009-02-20 John W. Eaton <jwe@octave.org>
1400 * dynamic-ld.cc (octave_dynamic_loader::do_load_mex): Clear and
1401 reload mex file if it is out of date. Don't check path for file.
1403 * pt-bp.cc (tree_breakpoint::visit_octave_user_script,
1404 tree_breakpoint::visit_octave_user_function):
1405 Don't panic. Call accept on command list if it exists.
1407 2009-02-20 Jaroslav Hajek <highegg@gmail.com>
1409 * ov-base-mat.cc (octave_base_matrix<MT>::do_index_op):
1410 Correctly compute all-scalar index.
1411 * ov-cell.cc (octave_cell::is_sorted, octave_cell::is_sorted_rows):
1413 (octave_cell::octave_cell (const Array<std::string>&)): New
1415 * ov-cell.h: Declare them.
1416 * ov-cell.cc (octave_cell::sort): Create result already with
1418 * strfns.cc (Fstrcmp): Use special code when dealing with
1421 2009-02-20 John W. Eaton <jwe@octave.org>
1423 * ov-base-mat.cc (octave_base_matrix<MT>::assign):
1424 Correctly compute all-scalar index.
1426 * symbtab.cc (symbol_table::stash_dir_name_for_subfunctions):
1428 * symtab.h: Provide decl.
1429 * parse.y (load_fcn_from_file): Call it after parsing a function.
1431 2009-02-19 Jaroslav Hajek <highegg@gmail.com>
1433 * ov-cell.h (octave_cell::cellstr_cache): New field.
1434 (octave_cell::clear_cellstr_cache, octave_cell::make_cellstr_cache,
1435 octave_cell::assign, octave_cell::delete_elements,
1436 octave_cell::mex_get_data): New methods.
1437 (octave_cell::is_cellstr): Reuse cellstr cache if possible, create if
1439 (octave_cell::cellstr_value): Reuse cellstr cache if possible.
1440 (octave_cell::subsasgn): Clear cellstr cache.
1442 2009-02-19 Jaroslav Hajek <highegg@gmail.com>
1444 * DLD-FUNCTIONS/lookup.cc (Flookup): Use Array<T>::lookup if possible.
1445 Do not compare octave_values directly. Properly check for iscellstr.
1447 2009-02-19 John W. Eaton <jwe@octave.org>
1449 * data.cc, graphics.cc, help.cc, lex.l, load-path.cc, parse.y:
1450 Consistent doc strings for internal functions.
1452 2009-02-18 John W. Eaton <jwe@octave.org>
1454 * ov.cc (convert_to_octave_idx_type_array): New static function.
1455 (octave_value::octave_idx_type_vector_value): New function.
1456 * ov.h (octave_value::octave_idx_type_vector_value): Provide decl.
1457 * DLD-FUNCTIONS/qr.cc (Fqrdelete, Fqrinsert): Use it to convert
1458 octave_value object to array of octave_idx_type values.
1460 * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): Likewise.
1461 * DLD-FUNCTIONS/time.cc (strptime): Likewise.
1462 * DLD-FUNCTIONS/quad.cc (Fquad): Eliminate unnecessary cast.
1463 * toplev.cc (run_command_and_return_output): Likewise.
1465 * strfns.cc (Fstrvcat): Use octave_idx_type and size_t instead of
1467 (Fstrcmp, Fstrncmp): Use octave_idx_type instead of int as needed.
1469 * DLD-FUNCTIONS/hex2num.cc (Fhex2num, Fnum2hex):
1470 Use union to avoid reinterpret_cast and GCC warning.
1472 * mex.cc (call_mex): Declare local nargout variable volatile to
1473 avoid "maybe clobbered by vfork" warning from GCC.
1475 * ov-cx-mat.cc (xabs): Comment out unused static function.
1476 * ov-flt-cx-mat.cc (xabs): Ditto.
1478 * c-file-ptr-stream.cc (c_file_ptr_buf::seekoff,
1479 c_file_ptr_buf::seepos, c_zfile_ptr_buf::seekoff,
1480 c_zfile_ptr_buf::seepos): Avoid unused paramter warnings.
1482 2009-02-18 Jaroslav Hajek <highegg@gmail.com>
1484 * data.cc (Fresize): Allow arbitrary number of parameters. Improve
1487 2009-02-17 Benjamin Lindner <lindnerb@users.sourceforge.net>
1489 * file-io.cc: (Fmkstemp): Use mkstemps if it is available and
1492 2009-02-17 Olaf Till <olaf.till@uni-jena.de>
1494 * DLD-FUNCTIONS/lsode.cc, DLD-FUNCTIONS/daspk.cc,
1495 DLD-FUNCTIONS/dassl.cc, DLD-FUNCTIONS/dasrt.cc: Documentation fixes.
1497 2009-02-17 Kai Habel <kai.habel@gmx.de>
1499 * DLD-FUNCTIONS/convhulln.cc (Fconvhulln): Compute convex hull
1500 volume and return it as second output. New tests.
1502 2009-02-17 John W. Eaton <jwe@octave.org>
1504 * ov-fcn.h (octave_function::octave_function): Initialize data members.
1505 (octave_function::dispatch_class): No longer virtual.
1506 Replace with version from ov-usr-fcn.h.
1507 (octave_function::xdispatch_class,
1508 octave_function::stash_dispatch_class): Move here from ov-usr-fcn.h.
1509 (octave_function::mark_as_private_function,
1510 octave_function::is_private_function,
1511 octave_function::is_private_function_of_class): New functions.
1512 (octave_function::private_function): New data member.
1513 * ov-usr-fcn.h (octave_user_function::xdispatch_class,
1514 octave_user_function::stash_dispatch_class,
1515 octave_user_function::dispatch_class): Delete.
1516 * ov-usr-fcn.cc (octave_user_function::octave_user_function):
1517 Don't initialize xdispatch_type.
1520 (symbol_table::fcn_info::fcn_info_rep::load_private_function):
1521 If private directory is subdirectory of class directory, qmark
1522 function as a private directory of the class.
1524 * ov-class.cc (octave_class::in_class_method): Also return true
1525 for functions that are private to a class.
1526 (octave_class::subsasgn): If not in class method, look for
1527 subsasgn method. If not found, or if not in a class method,
1528 perform default struct-style subscripted indexing.
1530 * ov-class.h (octave_class::empty_clone):
1531 Preserve fields and class name.
1532 * oct-map.h (Octave_map::Octave_map (const string_vector&):
1535 * ov-class.cc (octave_class::subsref): If indexing directly and
1536 result is map, return class object, not simple struct.
1539 (symbol_table::fcn_info::fcn_info_rep::load_private_function):
1540 Pass dir_name to load_fcn_from_file.
1542 2009-02-17 Jaroslav Hajek <highegg@gmail.com>
1544 * DLD-FUNCTIONS/data.cc (NATIVE_REDUCTION): Add BOOL_FCN argument.
1545 (NATIVE_REDUCTION_1): Check integer overflow flags and possibly gripe.
1546 (Fsum): Reflect change.
1547 (Fcumsum): USE NATIVE_REDUCTION.
1548 * gripes.cc (gripe_native_integer_math_truncated): New function.
1550 2009-02-17 Jaroslav Hajek <highegg@gmail.com>
1552 * DLD-FUNCTIONS/max.cc (Fcummin, Fcummax): Improve inline docs.
1554 2009-02-17 Jaroslav Hajek <highegg@gmail.com>
1556 * DLD-FUNCTIONS/max.cc (MINMAX_DOUBLE_SBODY): New macro.
1557 (MINMAX_DOUBLE_BODY): Move part of code to MINMAX_DOUBLE_SBODY.
1558 (MINMAX_SINGLE_SBODY): New macro.
1559 (MINMAX_SINGLE_BODY): Move part of code to MINMAX_DOUBLE_SBODY.
1560 (MINMAX_INT_SBODY): New macro.
1561 (MINMAX_INT_BODY): Move part of code to MINMAX_DOUBLE_SBODY.
1562 (CUMMINMAX_BODY): New macro.
1563 (Fcummin, Fcummax): New DLD functions.
1565 2009-02-17 John W. Eaton <jwe@octave.org>
1567 * octave.gperf: Eliminate whitespace to allow gperf 2.7.2 to work.
1569 * file-io.cc (Ffscanf, Fsscanf): Check error_state after call to
1570 octave_stream::scanf.
1571 (Ffgetl): Check error state after call to octave_stream::getl.
1572 (Ffgets): Check error state after call to octave_stream::gets.
1574 * oct-stream.cc (octave_base_stream::do_gets,
1575 octave_base_stream::do_scanf):
1576 Disallow reading from stdin when running interactively.
1578 * toplev.cc (octave_config_info): Add CARBON_LIBS, X11_INCFLAGS,
1579 and X11_LIBS to the struct.
1580 * oct-conf.h.in (OCTAVE_CONF_CARBON_LIBS,
1581 OCTAVE_CONF_X11_INCFLAGS, OCTAVE_CONF_X11_LIBS): New macros.
1583 2009-02-17 Thomas Treichl <Thomas.Treichl@gmx.net>
1585 * Makefile.in (octave$(EXEEXT)): Link with CARBON_LIBS.
1587 2009-02-16 John W. Eaton <jwe@octave.org>
1589 * lex.l (next_token_can_follow_bin_op):
1590 Push all characters read on to buffer stack.
1592 * genprops.awk (emit_source): Don't use + to concatenate strings.
1594 2009-02-16 Jaroslav Hajek <highegg@gmail.com>
1596 * data.cc (NATIVE_REDUCTION): Use boolNDArray::any for native bool
1597 summation, boolNDArray::sum for double-valued.
1599 2009-02-16 Jaroslav Hajek <highegg@gmail.com>
1601 * ov-base-mat.cc (octave_base_matrix<MT>::assign (const octave_value_list&,
1602 typename MT::element_type): Fix invalid index.
1603 * ov-re-mat.cc (default_numeric_demotion_function): Use
1604 float_array_value instead of float_matrix_value.
1606 2009-02-16 John W. Eaton <jwe@octave.org>
1608 * input.cc (gnu_readline): Use fputs instead of fprintf.
1610 2009-02-15 John W. Eaton <jwe@octave.org>
1612 * defun.cc, defun-int.h, defun-dld.h (DEFUN_INTERNAL,
1613 DEFCONSTFUN_INTERNAL, DEFUNX_INTERNAL, DEFUN_DLD_INTERNAL,
1614 DEFUNX_DLD_INTERNAL, install_builtin_function,
1615 install_dld_function, install_mex_function):
1616 Delete IS_TEXT_FCN arg. Fix all uses.
1617 (DEFMD, DEFUN_TEXT): Delete.
1618 * mkbuiltins, mkgendoc: Adapt to DEFUN macro changes.
1620 * lex.h, lex.l (lexer_flags::at_beginning_of_statement):
1621 New data member. Set it as needed in rules.
1623 Handle lexer_flags::at_beginning_of_statement.
1624 (next_token_can_follow_bin_op, looks_like_command_arg): New functions.
1625 (handle_identifier): Use them to determine
1626 Don't check is_command_name or is_rawcommand_name.
1627 * parse.y (statement): Recognize word_list_cmd here.
1628 (expression): Not here.
1630 * lex.l (handle_string): Delete arg TEXT_STYLE.
1631 (BIN_OP_RETURN, XBIN_OP_RETURN): New arg, BOS. Change all uses.
1633 * lex.h, lex.l (lexer_flags::doing_raw_command): Delete data
1634 member and all uses.
1636 * debug.cc, dirfns.cc, error.cc, input.cc, lex.l, load-path.cc,
1637 load-save.cc, oct-hist.cc, ov-class.cc, pager.cc, parse.y,
1638 pr-output.cc, sysdep.cc, utils.cc, variables.cc:
1639 Replace all uses of DEFCMD with DEFUN.
1641 * variables.cc (command_set, rawcommand_set): Delete static variables.
1642 (mark_as_command, unmark_command, is_command_name,
1643 mark_as_rawcommand, unmark_raw_command, is_rawcommand_name): Delete.
1644 (Fmark_as_command, Funmark_command, Fiscommand,
1645 Fmark_as_rawcommand, Funmark_rawcommand, Fisrawcommand):
1646 Convert to .m files and move to scripts/deprecated.
1647 * variables.h (mark_as_command, is_command_name,
1648 is_marked_as_rawcommand, mark_as_rawcommand, unmark_rawcommand,
1649 is_rawcommand_name): Delete decls.
1651 * lex.h, lex.l (lexer_flags.looking_at_object_index): Now a
1652 std::list<bool> object instead of an int.
1653 Push TRUE to list at start of object index. Push FALSE at
1654 beginning of matrix list. Pop value at end of object index or
1656 (lexer_flags.looking_for_object_index): New data member.
1657 Set it as needed in rules.
1658 (inside_any_object_index): New function.
1659 * parse.y (begin_obj_idx, cancel_obj_idx): Delete non-terminals
1662 2009-02-13 Ben Abbott <bpabott@mac.com>
1664 * graphics.h.in (class axes::properties): Initialize ticklength.
1665 * graphics.cc (default_axes_ticklength): New function.
1667 2009-02-13 John W. Eaton <jwe@octave.org>
1669 * oct-stream.cc (octave_base_stream::do_gets): Handle CRLF and CR.
1671 * toplev.cc (do_octave_atexit): Only save history if
1672 Vsaving_history is true.
1674 2009-02-12 John W. Eaton <jwe@octave.org>
1676 * data.cc, ov-base-diag.h, ov-base-mat.h, ov-base-scalar.h,
1677 ov-base-sparse.h, ov-base.cc, ov-base.h, ov-perm.h, ov-range.h,
1678 ov.h: Rename internal issorted and issorted_rows functions to
1679 is_sorted and is_sorted_rows.
1681 * ov-base-diag.h, ov-base-mat.h, ov-base-scalar.h, ov-base.h,
1682 ov-cell.h, ov-perm.h, ov-range.h, ov.h, data.cc, ov-base.cc,
1683 ov-cell.cc: Rename all uses of sortrows_idx to sort_rows_idx.
1685 * TEMPLATE-INST/Array-tc.cc: Don't instantiate sort functions for
1686 Arrays of octave_value objects.
1687 (octave_sort<octave_value>::ascending_compare,
1688 octave_sort<octave_value>::descending_compare): Delete.
1690 * ov.h (octave_value::cellstr_value): New function.
1691 * ov-base.cc, ov-base.h (octave_base_value::cellstr_value):
1693 * ov-cell.h (octave_cell::cellstr_value, octave_cell::sort,
1694 octave_cell::sortrows_idx): New functions
1695 * Cell.h, Cell.cc (Cell::Cell (Array<std::string>)): New constructor.
1697 * TEMPLATE-INST/Array-tc.cc: Undo previous change.
1698 (octave_sort<octave_value>::ascending_compare,
1699 octave_sort<octave_value>::descending_compare):
1700 Pass args by const reference instead of value.
1702 * version.h (OCTAVE_VERSION): Now 3.1.52+.
1703 (OCTAVE_API_VERSION): Now api-v34+.
1705 * TEMPLATE-INST/Array-tc.cc
1706 (octave_sort<octave_value>::ascending_compare,
1707 octave_sort<octave_value>::descending_compare):
1708 Delete unused template specializations.
1709 Use NO_INSTANTIATE_ARRAY_SORT instead of INSTANTIATE_ARRAY_SORT
1712 2009-02-11 Thomas Treichl <Thomas.Treichl@gmx.net>
1714 * gl-render.h: Use HAVE_FRAMEWORK_OPENGL.
1715 * gl-render.cc (opengl_tesselator, opengl_renderer::draw,
1716 opengl_renderer::init_marker): Use HAVE_FRAMEWORK_OPENGL.
1718 2009-02-11 Jaroslav Hajek <highegg@gmail.com>
1720 * ov.h (octave_value::issorted, octave_value::sortrows_idx,
1721 octave_value::issorted_rows): New methods.
1722 * ov.cc (octave_base_value::issorted, octave_base_value::sortrows_idx,
1723 octave_base_value::issorted_rows): New methods.
1724 * ov.cc: Declare them.
1726 * ov-base-mat.h (octave_base_matrix::issorted, octave_base_matrix::sortrows_idx,
1727 octave_base_matrix::issorted_rows): New methods.
1729 * ov-base-diag.h (octave_base_diag::issorted, octave_base_diag::sortrows_idx,
1730 octave_base_diag::issorted_rows): New methods.
1732 * ov-perm.h (octave_perm_matrix::issorted, octave_perm_matrix::sortrows_idx,
1733 octave_perm_matrix::issorted_rows): New methods.
1735 * ov-range.h (octave_range::issorted, octave_range::sortrows_idx,
1736 octave_range::issorted_rows): New methods.
1738 * data.cc (F__sortrows_idx__, Fissorted): New defuns.
1740 2009-02-11 John W. Eaton <jwe@octave.org>
1742 * toplev.cc (octave_config_info): Add octetcdir to the struct.
1743 * defaults.h.in (OCTAVE_OCTETCDIR): New macro.
1745 2009-02-10 Jaroslav Hajek <highegg@gmail.com>
1747 * DLD-FUNCTIONS/__pchip_deriv__.cc (F__pchip_deriv__):
1748 Add support for computing pchip derivatives along rows of matrix.
1749 Eliminate redundant copying by using const args where appropriate.
1751 2009-02-09 John W. Eaton <jwe@octave.org>
1753 * version.h (OCTAVE_VERSION): Now 3.1.52.
1754 (OCTAVE_RELEASE_DATE): Now 2009-02-09.
1755 (OCTAVE_COPYRIGHT): Update year.
1757 * load-path.cc (dir_info::update, dir_info::initialize):
1758 Likewise, to allow some functionality if getcwd fails.
1760 * toplev.cc (main_loop): Also catch octave_execution_exception.
1762 * DLD-FUNCTIONS/dispatch.cc: Comment out troublesome tests.
1764 * DLD-FUNCTIONS/eigs.cc: Increase tolerance to 1e-11 on all tests.
1766 * lex.l (lexical_feedback::looking_at_decl_list): New data member.
1767 * lex.l (lexical_feedback::init): Initialize it.
1768 (handle_identifier): Also force local variable if looking_at_decl_list.
1769 * parse.y (parsing_decl_list): New non-terminal.
1770 (declaration): Use it. Set lexer_flags.looking_at_decl_list to
1771 false after parsing the declaration.
1773 2009-02-09 Jaroslav Hajek <highegg@gmail.com>
1775 * TEMPLATE-INST/Array-tc.cc: Reflect changes in octave_sort.
1777 2009-02-08 John W. Eaton <jwe@octave.org>
1779 * octave.cc (initialize_pathsearch): Delete.
1780 (octave_main): Don't call initialize_pathsearch.
1782 2009-02-07 John W. Eaton <jwe@octave.org>
1784 * parse.y (eval_string): Use the one true evaluator.
1786 2009-02-06 John W. Eaton <jwe@octave.org>
1788 * Makefile.in (INCLUDES): Include oct-hdf5.h in the list.
1790 * Makefile.in (oct-gperf.h): Don't use pipeline to process gperf
1793 2009-02-05 John W. Eaton <jwe@octave.org>
1795 * symtab.cc (symbol_table::fcn_info::cn_info_rep::xfind):
1797 (symbol_table::fcn_info::cn_info_rep::find):
1798 Use it to avoid recursive call.
1800 * graphics.cc (Fdrawnow): Return after errors. Don't strip
1801 trailing directory separator from name used in call to file_stat.
1803 * DLD-FUNCTIONS/eigs.cc (Feigs): Avoid warnings about ambiguous
1804 else. Style fixes. Return after errors.
1806 2009-02-05 Jaroslav Hajek <highegg@gmail.com>
1808 * oct-map.cc (Octave_map::index): Optimize.
1810 2009-02-05 Jaroslav Hajek <highegg@gmail.com>
1812 * OPERATORS/op-cm-cs.cc: Use scalar_value in scalar-to-matrix
1813 indexed assignments.
1814 * OPERATORS/op-fcm-fcs.cc: Ditto.
1815 * OPERATORS/op-fm-fs.cc: Ditto.
1816 * OPERATORS/op-m-s.cc: Ditto.
1817 * OPERATORS/op-int.h (OCTAVE_MS_INT_ASSIGN_OPS): Use homogeneous
1818 integer scalar-to-matrix assignment.
1819 (OCTAVE_MM_INT_ASSIGN_OPS): Use homogeneous integer matrix-to-matrix
1822 * Cell.h (Cell::index): Remove direct idx_vector overloads.
1823 (Cell::assign): Remove direct idx_vector overloads.
1824 (Cell::delete_elements): Remove direct idx_vector overloads.
1825 * Cell.cc (Cell::index (const octave_value_list&)): Call
1826 ArrayN<octave_value>::index.
1828 * oct-map.h (Octave_map::index): Remove direct idx_vector overloads.
1829 * oct-map.cc (Octave_map::index): Ditto.
1830 * ov-base-mat.cc (octave_base_mat::do_index_op): Optimize scalar
1832 (octave_base_mat::assign (const octave_value_list&, const MT&)):
1833 Specialize variable argument number.
1834 (octave_base_mat::assign (const octave_value_list&, const
1835 typename MT::element_type&)):
1836 New method overload with optimized scalar indexing case.
1838 * ov-cell.cc (octave_base_matrix<Cell>::do_index_op,
1839 octave_base_matrix<Cell>::assign,
1840 octave_base_matrix<Cell>::delete_elements): Specialize.
1841 (octave_cell::assign (const_octave_value_list, const octave_value&):
1843 * ov-cell.h: Reflect change.
1845 * ov-cx-mat.cc (octave_complex_matrix::assign): Delete overloads.
1846 * ov-cx-mat.h: Reflect changes.
1847 * ov-flt-cx-mat.cc (octave_float_complex_matrix::assign): Delete overloads.
1848 * ov-flt-cx-mat.h: Reflect changes.
1849 * ov-list.cc (octave_list::do_index_op): Simplify.
1850 * ov-struct.cc (octave_struct::do_index_op): Simplify.
1851 * pt-eval.cc (tree_evaluator::visit_simple_for_command): Optimize
1852 traversing a row vector.
1854 2009-02-05 John W. Eaton <jwe@octave.org>
1856 * variables.cc (Vignore_function_time_stamp):
1857 Eliminate unused static variable.
1859 * debug.cc (get_file_line): Override default precedence in logical
1862 * ov-null-mat.cc (default_null_str_numeric_conversion_function,
1863 default_null_sq_str_numeric_conversion_function,
1864 default_null_matrix_numeric_conversion_function):
1865 Avoid unused variable warning.
1867 * ov-flt-re-diag.cc (octave_float_diag_matrix::save_binary):
1868 Avoid unused parameter warning.
1869 * pt-eval.cc (tree_evaluator::visit_if_clause): Likewise.
1870 * ov-typeinfo.cc (octave_value_typeinfo::do_register_type): Likewise.
1871 * ov-base.cc (octave_base_value::subsref (const std::string&,
1872 const std::list<octave_value_list>&, bool): Likewise.
1873 * ov-flt-cx-diag.cc (octave_float_complex_diag_matrix::save_binary):
1876 * oct-hdf5.h: New file.
1877 * ls-hdf5.cc, ov-base.h, ov.h: Include oct-hdf5.h instead of hdf5.h.
1878 * ls-hdf5.h: Include oct-hdf5.h.
1879 * load-save.cc: Include ls-hdf5.h instead of hdf5.h.
1880 * ov-base-sparse.cc, load-save.cc:
1881 Don't protect #include "ls-hdf5.h" with #ifdef.
1883 2009-02-04 Kai Habel <kai.habel@gmx.de>
1885 * gl-render.cc (opengl_renderer::draw (surface::properties)):
1886 Normalize surface normals. Correct calculation of diffuse lighting.
1887 * gl-render.cc (opengl_renderer::draw (patch::properties)):
1888 Correct calculation of diffuse lighting.
1890 2009-02-04 John W. Eaton <jwe@octave.org>
1892 * help.cc (do_which): If NAME is not in the symbol table, look for
1893 a function file in the load path.
1894 (raw_help_from_file): Unwind-protect and set reading_script_file.
1896 * pt-loop.h, pt-loop.cc (evaluating_looping_command):
1897 Delete global variable and all uses.
1898 * parse.y, parse.h (evaluating_function_body): Delete global
1899 variable and all uses.
1900 (make_break_command, make_continue_command, make_return_command):
1901 Use tree_evaluator::in_fcn_or_script_body and
1902 tree_evaluator::in_loop_command instead of
1903 evaluating_function_body and evaluating_looping_command.
1905 * pt-eval.h (tree_evaluator::in_function_or_script_body):
1906 Delete member variable and all uses.
1907 (tree_evaluator::reset): Delete function and all uses.
1909 * pt-eval.cc, pt-eval.h (tree_evaluator::in_fcn_or_script_body,
1910 tree_evaluator::in_loop_command): New static variables.
1911 (tree_evaluator::visit_simple_for_command,
1912 tree_evaluator::visit_complex_for_command,
1913 tree_evaluator::visit_while_command,
1914 tree_evaluator::visit_do_until_command): Unwind-protect and set
1915 tree_evaluator::in_loop_command instead of
1916 evaluating_looping_command.
1917 (tree_evaluator::visit_statement): Only call echo_code if
1918 evaluating function or script and (Vecho_executing_commands &
1919 ECHO_FUNCTIONS). Use tree_evaluator::in_fcn_or_script_body
1920 instead of evaluating_function_body.
1922 * ov-usr-fcn.cc (octave_user_script::do_multi_index_op):
1923 octave_user_function::do_multi_index_op): Unwind-protect and set
1924 tree_evaluator::in_fcn_or_script_body.
1926 * pt-stmt.cc, pt-stmt.h (tree_statement::echo_code):
1927 Rename from maybe_echo_code. Simplify.
1929 2009-02-04 Jaroslav Hajek <highegg@gmail.com>
1931 * pt-loop.h (tree_simple_for_command::do_for_loop_once,
1932 tree_complex_for_command::do_for_loop_once): Remove obsolete decls.
1933 * pt-loop.cc (quit_loop_now): Remove obsolete method.
1934 * pt-eval.cc (DO_ND_LOOP): Delete macro.
1935 (tree_evaluator::visit_simple_for_command): Use the generic
1936 do_index_op for iterating matrices.
1938 2009-02-04 John W. Eaton <jwe@octave.org>
1940 New evaluator and debugger derived from tree-walker class.
1942 * pt-eval.h, pt-eval.cc: New files. Parse tree evaluator code
1943 adapted from eval member functions in classes derived from
1945 * Makefile.in (PT_INCLUDES, PT_SRC): Add them to the lists
1947 * pt-cmd.cc (tree_function_def::eval): Delete.
1948 * pt-cmd.h: Delete decl.
1949 (tree_command::eval): Delete pure virtual function.
1950 (tree_no_op_command::eval): Delete.
1951 (tree_function_def::function): Return octave_value, instead of
1952 pointer to octave_function. Change all uses.
1954 * pt-except.cc (do_catch_code, tree_try_catch_command::eval,
1955 do_unwind_protect_cleanup_code,
1956 tree_unwind_protect_command::eval): Delete.
1957 * pt-except.h: Delete decls.
1959 * pt-jump.cc (tree_break_command::eval, tree_return_command::eval,
1960 tree_continue_command::eval): Delete.
1961 * pt-jump.h: Delete decls.
1963 * pt-loop.cc (DO_ND_LOOP): Delete macro.
1964 (tree_while_command::eval, tree_do_until_command::eval,
1965 tree_simple_for_command::do_for_loop_once,
1966 tree_simple_for_command::eval,
1967 tree_complex_for_command::do_for_loop_once,
1968 tree_complex_for_command::eval):
1969 * pt-loop.h: Delete decls.
1971 * pt-select.cc (tree_if_clause::eval, tree_if_command_list::eval,
1972 tree_if_command::eval, tree_switch_case::eval,
1973 tree_switch_case_list::eval, tree_switch_command::eval): Delete.
1974 * pt-select.h: Delete decls.
1975 (class tree_if_clause, class tree_switch_case): Derive from tree.
1976 Handle line and column in constructors.
1978 * pt-stmt.cc (tree_statement::eval): Delete
1979 * pt-stmt.h: Delete decl.
1981 * pt-stmt.cc, pt-stmt.h (tree_statement::is_command,
1982 tree_statement::is_expression, tree_statement::line,
1983 tree_statement::column): Now const.
1985 * pt-stmt.cc (tree_statement::set_print_flag,
1986 tree_statement::is_end_of_fcn_or_script): New functions.
1987 * pt-stmt.h: Provide decl.
1988 (set_breakpoint, delete_breakpoint, is_breakpoint): New function.
1989 (bp): New member variable.
1990 (print_result): Delete member variable.
1991 (tree_statement_list::anon_function_body): New member variable.
1992 (tree_statement_list::mark_as_anon_function_body,
1993 tree_statement_list::is_anon_function_body,
1994 tree_statement_list::is_script_body): New functions.
1996 * pt-decl.cc (tree_decl_init_list::eval,
1997 tree_decl_command::accept, tree_global_command::do_init,
1998 tree_global_command::eval, tree_static_command::do_init,
1999 tree_static_command::eval): Delete.
2000 * pt-decl.h: Delete decls.
2001 (tree_decl_elt::eval_fcn): Delete typedef.
2003 * pt-decl.cc (tree_global_command::accept,
2004 tree_static_command::accept): New functions.
2006 * pt-stmt.cc (tree_statement::print_result): Move here from
2007 pt-stmt.h. Return true if expr is printable.
2009 * ov-base.cc (Vsilent_functions): Delete.
2010 (octave_base_value::print_with_name): Don't check
2011 evaluating_function_body && Vsilent_functions here.
2012 * ov-class.cc (octave_class::print_with_name): Likewise.
2013 * ov-base.h (Vsilent_functions): Delete decl.
2014 * pt-eval.cc (Fsilent_functions): Move here from ov-base.cc.
2015 (Vsilent_functions): New static variable.
2017 * sighandlers.cc (user_abort): Set tree_evaluator::debug_mode here.
2019 * pt.h (tree::bp): Rename from tree::break_point.
2020 (tree::set_breakpoint, tree::delete_breakpoint, tree::is_breakpoint):
2023 * input.cc (get_debug_input): Use current_evaluator and
2024 tree-walker to evaluate command.
2025 * ov-usr-fcn.cc (octave_user_script::do_multi_index_op): Likewise.
2026 * toplev.cc (main_loop): Likewise.
2027 * parse.y (eval_string):
2029 * input.h, input.cc (Vdebugging_current_line): Delete.
2030 (get_debug_input): Use tree_evaluator::debug_line instead of
2031 Vdebugging_current_line.
2033 * ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
2034 Handle inline functions and anonymous functions as single
2036 * parse.y (eval_string): Likewise.
2038 * parse.y (make_do_until_command): Rename first argument from
2039 do_tok to until_tok.
2040 (loop_command): Pass UNTIL token instead of DO token to
2041 make_do_until_command.
2042 (make_elseif_clause): New arg, elseif_tok. Pass line and column
2043 info to tree_if_clause constructor.
2044 (elseif_clause): Pass ELSEIF token to make_elseif_clause.
2045 (make_switch_case): New arg, case_tok. Pass line and column info
2046 to tree_switch_case constructor.
2047 (switch_case): Pass CASE token to make_switch_case.
2048 (make_script): New arg end_script. Append it to cmds.
2049 (script): Create no-op command for end of script and pass it to
2051 (start_function): New arg, end_function. Append it to body.
2052 (function2): Pass end_function to start_function.
2053 (make_end): New function.
2054 (function_end): Declare as tree_statement_type.
2055 Create no-op command for end of script.
2056 (make_anon_fcn_handle): Mark body as anonymous function.
2057 (set_stmt_print_flag): Set print flag for all separator types
2059 * parse.y (fold (tree_binary_expression*),
2060 fold (tree_unary_expression *), finish_colon_expression,
2061 finish_matrix): Call rvalue1 instead of rvalue.
2062 Stash line number in new tree_constant object.
2064 * debug.h (bp_table::have_breakpoints): New static function.
2065 (bp_table::do_have_breakpoints): New member function.
2066 * debug.cc (bp_table::do_add_breakpoint,
2067 bp_table::do_remove_breakpoint,
2068 bp_table::do_remove_all_breakpoints_in_file,
2069 bp_table::do_remove_all_breakpoints): Call
2070 bp_table::have_breakpoints to set tree_evaluator::debug_mode.
2071 (Fdbnext): Delete function. Alias to dbstep.
2072 (Fdbquit, Fdbcont): Set tree_evaluator::dbstep_flag to zero.
2073 (Fdbstep): Rewrite to use tree_evaluator::dbstep_flag instead of
2074 tree::break_next, tree::last_line, tree::break_function, and
2075 tree::last_break_function.
2076 (Fdbwhere): Use tree_evaluator::debug_line and
2077 tree_evaluator::debug_column to get current line and column info.
2078 Don't print column if it is less than zero.
2079 * pt.cc, pt.h (tree::break_next, tree::last_line,
2080 tree::last_break_function, tree::break_function,
2081 tree::break_statement): Delete.
2083 * pt-bp.cc (tree_breakpoint::visit_global_command,
2084 tree_breakpoint::visit_static_command,
2085 tree_breakpoint::take_action (tree_statement&)): New functions.
2086 * pt-bp.h: Provide decls.
2088 * pt-bp.h (tree_walker::visit_global_command,
2089 tree_walker::visit_static_command): New pure virtual functions.
2090 (tree_walker::visit_decl_command): Delete.
2092 * pt-bp.cc (tree_breakpoint::visit_decl_command): Delete.
2093 * pt-bp.h: Delete decl.
2094 (MAYBE_DO_BREAKPOINT): Delete macro and all uses.
2096 * pt-bp.cc (tree_breakpoint::visit_no_op_command): Do nothing.
2097 (tree_breakpoint::visit_argument_list,
2098 tree_breakpoint::visit_binary_expression,
2099 tree_breakpoint::visit_colon_expression,
2100 tree_breakpoint::visit_decl_elt,
2101 tree_breakpoint::visit_decl_init_list,
2102 tree_breakpoint::visit_octave_user_script,
2103 tree_breakpoint::visit_octave_user_function,
2104 tree_breakpoint::visit_octave_user_function_header,
2105 tree_breakpoint::visit_octave_user_function_trailer,
2106 tree_breakpoint::visit_identifier,
2107 tree_breakpoint::visit_index_expression,
2108 tree_breakpoint::visit_matrix, tree_breakpoint::visit_cell,
2109 tree_breakpoint::visit_multi_assignment,
2110 tree_breakpoint::visit_anon_fcn_handle,
2111 tree_breakpoint::visit_constant,
2112 tree_breakpoint::visit_fcn_handle,
2113 tree_breakpoint::visit_parameter_list,
2114 tree_breakpoint::visit_postfix_expression,
2115 tree_breakpoint::visit_prefix_expression,
2116 tree_breakpoint::visit_return_list,
2117 tree_breakpoint::visit_simple_assignment): Call panic_impossible
2118 since breakpoints aren't set on expressions.
2119 (tree_breakpoint::visit_if_clause): Fold into visit_if_command_list.
2120 (tree_breakpoint::visit_switch_case): Fold into visit_switch_case_list.
2121 (tree_breakpoint::visit_try_catch_command,
2122 tree_breakpoint::visit_unwind_protect_command):
2123 Don't set breakpoint on command itself, the the statements it
2125 (tree_breakpoint::visit_global_command,
2126 tree_breakpoint::visit_static_command): Call do_decl_command to do
2128 (tree_breakpoint::visit_while_command,
2129 tree_breakpoint::visit_do_until_command,
2130 tree_breakpoint::visit_simple_for_command,
2131 tree_breakpoint::visit_complex_for_command,
2132 tree_breakpoint::visit_statement,
2133 tree_breakpoint::visit_statement_list,
2134 tree_breakpoint::visit_switch_case_list): Set breakpoints at
2137 * pt-pr-code.h, pt-pr-code.cc (tree_print_code::visit_global_command,
2138 tree_print_code::visit_static_command,
2139 tree_print_code::do_decl_command): New functions.
2140 (tree_print_code::visit_decl_command): Delete.
2142 * pt-check.h, pt-check.cc (tree_checker::visit_global_command,
2143 tree_checker::visit_static_command, tree_checker::do_decl_command):
2145 (tree_checker::visit_decl_command): Delete.
2147 * pt-select.cc (tree_switch_case::label_matches): Call rvalue1
2150 * pt-exp.h, pt-exp.cc (tree_expression::rvalue1): New function.
2151 (tree_expression::rvalue (void)): Delete.
2152 (tree_expression::is_logically_true): Call rvalue1 instead of rvalue.
2154 * pt-fcn-handle.h, pt-fcn-handle.cc (tree_fcn_handle::rvalue1,
2155 tree_anon_fcn_handle::rvalue1): New functions.
2156 (tree_fcn_handle:rvalue (void),
2157 tree_anon_fcn_handle::rvalue1 (void)): Delete.
2158 (tree_fcn_handle::rvalue (int), tree_anon_fcn_handle_rvalue (int)):
2159 Call rvalue1 instead of rvalue.
2161 * pt-idx.h, pt-idx.cc (tree_index_expression::rvalue1): New function.
2162 (tree_index_expression::rvalue (void)): Delete.
2163 (tree_index_expression::get_struct_index,
2164 tree_index_expression::rvalue (int)): Call rvalue1 instead of rvalue.
2166 * pt-mat.h, pt-mat.cc (tree_matrix::rvalue1): New function.
2167 (tree_matrix::rvalue (void)): Delete.
2168 (tm_row_const::tm_row_const_rep::init,
2169 tree_matrix::rvalue (int)): Call rvalue1 instead of rvalue.
2171 * pt-misc.cc (tree_parameter_list::convert_to_const_vector):
2172 Call rvalue1 instead of rvalue.
2173 * pt-arg-list.cc (tree_argument_list::convert_to_const_vector):
2176 * pt-unop.h, pt-unop.cc (tree_prefix_expression::rvalue1,
2177 tree_postfix_expression::rvalue1): New functions.
2178 (tree_prefix_expression::rvalue (void),
2179 tree_postfix_expression::rvalue (void)): Delete.
2180 (tree_prefix_expression::rvalue (int),
2181 tree_postfix_expression::rvalue (int)):
2182 Call rvalue1 instead of rvalue.
2184 * pt-id.h, pt-id.cc (tree_identifier::rvalue1): New function.
2185 (tree_identifier::rvalue (void)): Delete.
2187 * pt-assign.h, pt-assign.cc (tree_simple_assignment::rvalue1,
2188 tree_multi_assignment::rvalue1): New functions.
2189 (tree_simple_assignment::rvalue (void),
2190 tree_multi_assignment::rvalue (void): Delete.
2191 (tree_simple_assignment::rvalue (int)):
2192 Call rvalue1 instead of rvalue.
2194 * pt-binop.h, pt-binop.cc (tree_binary_expression::rvalue1,
2195 tree_boolean_expression::rvalue1): New functions.
2196 (tree_binary_expression::rvalue (void),
2197 tree_boolean_expression::rvalue (void)): Delete.
2198 (tree_binary_expression::rvalue (int),
2199 tree_boolean_expression::rvalue (int)):
2200 Call rvalue1 instead of rvalue.
2202 * pt-cbinop.h, pt-cbinop.cc
2203 (tree_compound_binary_expression::rvalue1): New function.
2204 (tree_compound_binary_expression::rvalue (void)): Delete.
2206 * pt-cell.h, pt-cell.cc (tree_cell::rvalue1): New function.
2207 (tree_cell::rvalue (void)): Delete.
2208 (tree_cell::rvalue (int)): Call rvalue1 instead of rvalue.
2210 * pt-colon.h, pt-colon.cc (tree_colon_expression::rvalue1):
2212 (tree_colon_expression::rvalue (void)): Delete.
2213 (tree_colon_expression::rvalue (int)):
2214 Call rvalue1 instead of rvalue.
2216 * pt-const.h, pt-const.cc (tree_constant::rvalue1): New function.
2217 (tree_constant::rvalue (void)): Delete.
2218 (tree_constant::rvalue (int)): Call rvalue1 instead of rvalue.
2220 * pt-decl.h, pt-decl.cc (tree_decl_elt::ravlue1): New function.
2221 (tree_decl_elt::ravlue (void)): Delete.
2222 (tree_decl_elt::eval): Call rvalue1 instead of rvalue.
2224 2009-02-03 Jaroslav Hajek <highegg@gmail.com>
2226 * TEMPLATE-INST/Array-tc.cc: Replace vec_index by pointers.
2228 2009-02-02 Jaroslav Hajek <highegg@gmail.com>
2230 * ov-re-mat.cc (octave_matrix::abs, octave_matrix::real,
2231 octave_matrix::imag, octave_matrix::conj): Use special code.
2232 * ov-flt-re-mat.cc (octave_float_matrix::abs, octave_float_matrix::real,
2233 octave_float_matrix::imag, octave_float_matrix::conj): Use special code.
2234 * ov-cx-mat.cc (octave_complex_matrix::abs, octave_complex_matrix::real,
2235 octave_complex_matrix::imag, octave_complex_matrix::conj): Use special code.
2236 * ov-flt-cx-mat.cc (octave_float_complex_matrix::abs, octave_float_complex_matrix::real,
2237 octave_float_complex_matrix::imag, octave_float_complex_matrix::conj): Use special code.
2239 2009-01-30 Jaroslav Hajek <highegg@gmail.com>
2241 * DLD-FUNCTIONS/lookup.cc (Flookup): Add missing check.
2243 2009-01-29 John W. Eaton <jwe@octave.org>
2245 * pt-stmt.cc (tree_statement::eval): Check
2246 in_function_or_script_body instead of symbol_table::at_top_level ()
2247 to decide whether to call octave_call_stack::set_statement.
2249 * graphics.cc (properties::set_defaults): Also set
2250 horizontalalignment, verticalalignmnt, and rotation properties for
2251 new label objects here.
2253 * ov-base-scalar.cc (octave_base_scalar<ST>::is_true (void) const):
2254 Error if scalar is NaN.
2255 * ov-base-mat.cc (octave_base_matrix<MT>::is_true (void) const):
2256 Likewise, if any element of matrix is NaN.
2257 * ov-cell.cc (octave_cell::is_true): New function.
2258 * Cell.h (Cell::any_element_is_nan): New function.
2260 2009-01-29 Jaroslav Hajek <highegg@gmail.com>
2263 (void octave_print_internal (..., const DiagMatrix& m,...),
2264 (void octave_print_internal (..., const ComplexDiagMatrix& m,...),
2265 (void octave_print_internal (..., const FloatDiagMatrix& m,...),
2266 (void octave_print_internal (..., const FloatComplexDiagMatrix& m,...)):
2268 * pr-output.h: Declare them.
2269 * ov-base-diag.cc (octave_base_diag::print_raw): Call
2270 octave_print_internal.
2272 2009-01-28 John W. Eaton <jwe@octave.org>
2274 * Makefile.in (install, uninstall): Handle SHLLIBPRE and SHLBINPRE
2275 library prefixes. From Marco Atzeri <marco_atzeri@yahoo.it>.
2277 2008-01-28 David Bateman <dbateman@free.fr>
2279 * DLD-FUNCTIONS/regexp.cc (octregexp_list): Don't break for zero
2280 length match, but rather advance the index by one character and
2283 2009-01-28 Jaroslav Hajek <highegg@gmail.com>
2285 * DLD-FUNCTIONS/lookup.cc (Flookup): Fix doc string.
2287 2009-01-27 John W. Eaton <jwe@octave.org>
2289 * load-path.cc (Fcommand_line_path): Rename from Fcommandlinepath.
2291 2009-01-27 Ben Abbott <bpabbott@mac.com>
2293 * graphics.cc (convert_position): Handle character units.
2294 (default_axes_tick, default_figure_papersize,
2295 default_figure_paperposition): New functions.
2296 * graphics.h.in (class figure::properties): Use them to
2297 initialize papersize, paperposition, xtick, ytick, and ztick
2300 2009-01-27 Jaroslav Hajek <highegg@gmail.com>
2302 * DLD-FUNCTIONS/qr.cc (Fqr): Treat empty matrices correctly.
2304 2009-01-26 Thomas Treichl <Thomas.Treichl@gmx.net>
2306 * display.cc (display_info::init): Use double instead of CGFloat.
2307 Use HAVE_FRAMEWORK_CARBON instead of OCTAVE_USE_OS_X_API.
2309 2009-01-26 John W. Eaton <jwe@octave.org>
2311 * load-path.cc (load_path::do_find_fcn): Handle @foo/bar.
2313 2009-01-24 Jaroslav Hajek <highegg@gmail.com>
2315 * pt-cell.cc (tree_cell::rvalue): Optimize the single row case.
2317 2009-01-24 Jaroslav Hajek <highegg@gmail.com>
2319 * ov-struct.cc (octave_struct::subsasgn): Reshape cs-list on rhs
2320 according to the index expression.
2321 * ov-cell.cc (octave_cell::subsasgn): Ditto.
2323 2008-12-25 Ben Abbott <bpabbott@mac.com>
2325 * load-path.cc (Fcommandlinepath): New function.
2326 * load-path.h (load_path::get_command_line_path,
2327 load_path::do_get_command_line_path): New functions.
2329 2009-01-24 Ben Abbott <bpabbott@mac.com>
2331 * DLD-FUNCTIONS/eigs.cc: eigs.cc: skip tests if ARPACK is missing.
2333 2009-01-25 Søren Hauberg <hauberg@gmail.com>
2335 * help.cc (do_get_help_text, raw_help_from_symbol_table): new output to
2336 flag the a function is found but not documented.
2338 2009-01-25 Søren Hauberg <hauberg@gmail.com>
2340 * help.cc (raw_help_from_file): No longer search for files called
2341 'Contents.m', as this is moved to 'script/help.m'.
2344 2009-01-23 John W. Eaton <jwe@octave.org>
2346 * toplev.cc (octave_call_stack::do_goto_caller_frame):
2347 Also allow caller frame to be base frame, not just user code.
2349 2009-01-23 Jaroslav Hajek <highegg@gmail.com>
2351 * gripes.cc (gripe_indexed_cs_list, gripe_invalid_inquiry_subscript):
2353 * gripes.h: Declare them.
2354 * pt-idx.cc: Remove definitions of the above funcs.
2355 * ov-cell.cc (octave_cell::subsref): Declare constants as const.
2356 (octave_cell::subsasgn): Remove dead branch, declare constants as const.
2357 (octave_cell::list_value): Optimize.
2359 (octave_struct::subsref): Declare constants as const.
2360 (octave_struct::subsasgn): Remove dead branch, declare constants as const.
2361 * ov-cs-list.cc (octave_cs_list::octave_cs_list (const Cell&)):
2363 * oct-obj.cc (octave_value_list::octave_value_list (const
2364 std::list<octave_value_list>&)): New constructor.
2365 * oct-obj.h: Declare it.
2366 * pt-arg-list.cc (convert_to_const_vector): Optimize.
2367 * symtab.cc (symbol_table::fcn_info::fcn_info_rep::find): Use const
2368 reference to avoid redundant copy.
2369 * ov-usr-fcn.cc (octave_user_function::bind_automatic_vars): Optimize.
2370 (octave_user_function::octave_all_va_args): Optimize.
2372 2009-01-22 Jaroslav Hajek <highegg@gmail.com>
2374 * Cell.h (Cell::Cell (octave_value_list)): Only declare.
2375 (Cell::index (*)): Change resize_ok type to bool.
2376 * Cell.cc (Cell::Cell (octave_value_list)): Redefine.
2377 * oct-obj.h, oct-obj.cc: Change octave_value_list::data to
2378 Cell variable, reflect changes.
2380 2009-01-22 John W. Eaton <jwe@octave.org>
2382 * help.cc (do_which (std::ostream&, const std::string&), Fwhich):
2384 (do_which (const std::string&, std::string&), F__which__):
2386 * do_which (const std::string&):
2387 Call do_which (const std::string&, std::string&) to do the work.
2389 2009-01-22 Søren Hauberg <hauberg@gmail.com>
2391 * defun-int.h (print_usage): No longer mark as deprecated.
2392 * defun.cc (print_usage): Simply call feval to execute print_usage.m.
2393 * help.cc (additional_help_message, display_names_from_help_list,
2394 display_symtab_names, simple_help, try_info, help_from_info,
2395 display_help_text, display_usage_text, raw_help_from_list,
2396 help_from_list, help_from_symbol_table, help_from_file,
2397 builtin_help, Fhelp, display_file, do_type, Ftype,
2398 first_help_sentence, print_lookfor, Flookfor): Delete.
2399 (looks_like_html, raw_help_from_map, raw_help, do_get_help_text,
2400 F__operators__, F__keywords__, F__builtins__,
2401 file_is_in_dir, F__list_functions__): New functions.
2402 (pair_type, map_iter): New typedefs.
2403 (operators, keywords): Use pair_type for elements of list.
2404 (names): Use map for (keyword, doc) lists.
2405 (make_name_list): Sprinkle with const.
2406 * help.h (display_help_text, display_usage_text,
2407 additional_help_message): Delete decls.
2409 2009-01-22 John W. Eaton <jwe@octave.org>
2411 * toplev.cc (octave_config_info): Check OCTAVEUSE_OS_X_API instead
2412 of __APPLE__ && __MACH__.
2414 * display.cc (display_info::init): Get info for Windows and OS X
2417 2009-01-22 Jaroslav Hajek <highegg@gmail.com>
2419 * pt-idx.cc (tree_index_expression::lvalue): Correct tmpi when seeing
2420 a plain struct component.
2421 * ov-struct.cc (octave_struct::subsasgn): Use proper type substr in
2424 2009-01-22 Jaroslav Hajek <highegg@gmail.com>
2426 * DLD-FUNCTIONS/qr.cc: Remove HAVE_QRUPDATE check.
2427 * DLD-FUNCTIONS/chol.cc: Ditto.
2429 2009-01-21 John W. Eaton <jwe@octave.org>
2431 * Makefile.in (display.o): Add X11_INCFLAGS to CPPFLAGS.
2432 (octave$(EXEEXT)): Link with X11_LIBS.
2434 * display.h, display.cc: New files.
2435 * graphics.cc (default_screendepth, default_screensize,
2436 default_screenpixelsperinch): New functions.
2437 * graphics.h.in (class root_figure::properties): New property,
2438 screendepth. Use default_screensize to initialize screensize
2439 property. Use default_screenpixelsperinch to initialize
2440 screenpixelsperinch property.
2442 * graphics.cc (properties::init): Set default xlabel, ylabel,
2443 zlabel, and title properties that differ from default text
2446 2009-01-21 Jaroslav Hajek <highegg@gmail.com>
2448 * OPERATORS/op-range.cc: Define & register range-scalar ops.
2450 2009-01-21 Jaroslav Hajek <highegg@gmail.com>
2452 * ov.h (octave_value::subsref (..., bool auto_add)): New method.
2453 (octave_value::next_subsref (bool auto_add, ...)): New method.
2454 * ov.cc (octave_value::next_subsref (bool auto_add, ...)): New method.
2455 * ov-base.h (octave_base_value::subsref (..., bool auto_add)): New
2457 * ov-base.cc (octave_base_value::subsref (..., bool auto_add)): New
2459 * ov-cell.cc (octave_cell::subsref (..., bool auto_add)): New virtual
2461 * ov-cell.h (octave_cell::subsref (..., bool auto_add)): Declare it.
2462 * ov-struct.cc (octave_struct::subsref (..., bool auto_add)): New
2464 (octave_struct::subsref (const std::string& type, const
2465 std::list<octave_value_list>& idx)): Do not allow resizing.
2466 * ov-struct.h (octave_struct::subsref (..., bool auto_add)): Declare
2468 * ov-struct.cc (octave_struct::dotref (..., bool auto_add)): New
2470 * ov-struct.h (octave_struct::dotref (..., bool auto_add)): Declare it.
2471 * pt-idx.cc (tree_index_expression::rvalue): Do not reevaluate already
2472 evaluated part of the index chain.
2473 (tree_index_expression::rvalue): Do not reevaluate already evaluated
2474 part of the index chain. Do not actually perform trailing indexing.
2475 Do not allow indexing cs-lists.
2477 2009-01-20 John W. Eaton <jwe@octave.org>
2479 * file-io.cc (Ffstat): New function.
2481 2009-01-17 Jaroslav Hajek <highegg@gmail.com>
2483 * DLD-FUNCTIONS/qr.cc (Fqrupdate, Fqrinsert, Fqrdelete, Fqrshift):
2484 Reflect changes in liboctave.
2485 * DLD-FUNCTIONS/chol.cc (Fcholupdate, Fcholinsert):
2486 Reflect changes in liboctave.
2488 2009-01-19 Jaroslav Hajek <highegg@gmail.com>
2490 * ov.h (octave_value::make_unique (int)): New method.
2491 * oct-obj.h (octave_value_list::octave_value_list (const Cell&)): New
2493 * ov-cell.cc (octave_cell::subsasgn): Allow composed {} indexing
2494 in multi-assignments. Optimize.
2495 * ov-struct.cc (octave_struct::subsasgn): Correct composed {} indexing
2496 in multi-assignments. Optimize & fix bugs.
2497 * pt-idx.cc (tree_index_expression::lvalue): Rewrite to allow
2498 specifying cs-list anywhere in index chain, be more robust.
2500 2009-01-19 John W. Eaton <jwe@octave.org>
2502 * lex.l (grab_comment_block): If not reading input from a file,
2503 bail out at first newline inside a comment.
2505 * lex.l (lexer_debug_flag): New static variable.
2506 (F__lexer_debug_flag__): New function.
2507 (LEXER_DEBUG): New macro. Use it in all patterns.
2508 (DISPLAY_TOK_AND_RETURN): Also display token if lexer_debug_flag
2510 (process_comment): Display comment if lexer_debug_flag is set.
2511 (display_character, display_state, lexer_debug): New static functions.
2512 (xunput): Display character if lexer_debug_flag is set.
2514 2009-01-17 Jaroslav Hajek <highegg@gmail.com>
2516 * ov.h: Describe usage of storable_value and make_storable_value.
2517 * ov.cc: Remove FIXME comment.
2519 2009-01-15 John W. Eaton <jwe@octave.org>
2521 * data.cc (Freshape): Include mismatched dimensions in error message.
2522 From Robert Millan <rmh@aybabtu.com>.
2524 2009-01-14 Jaroslav Hajek <highegg@gmail.com>
2526 * ov.cc (octave_value::maybe_economize): New method.
2527 (octave_value::non_null_value): rename to storable_value.
2528 (octave_value::make_non_null_value): rename to make_storable_value.
2529 * ov-base.h (octave_base_value::maybe_economize): New method.
2530 * ov-base-mat.h (octave_base_mat::maybe_economize): New override.
2531 * oct-obj.cc (octave_value_list::normalize_null_values):
2532 Rename to make_storable_values, use make_storable_value.
2534 * ov-builtin.cc: non_null_value -> storable_value.
2535 * ov-cell.cc: Ditto.
2536 * ov-struct.cc: Ditto.
2539 2009-01-15 Søren Hauberg <hauberg@gmail.com>
2541 * DLD-FUNCTIONS/__magick_read__.cc (encode_uint_image):
2542 Initialize bitdepth.
2544 2009-01-14 Søren Hauberg <hauberg@gmail.com>
2546 * DLD-FUNCTIONS/betainc.cc, DLD-FUNCTIONS/chol.cc,
2547 DLD-FUNCTIONS/daspk.cc, DLD-FUNCTIONS/dasrt.cc,
2548 DLD-FUNCTIONS/dassl.cc, DLD-FUNCTIONS/filter.cc,
2549 DLD-FUNCTIONS/gammainc.cc, DLD-FUNCTIONS/gcd.cc,
2550 DLD-FUNCTIONS/givens.cc, DLD-FUNCTIONS/hess.cc,
2551 DLD-FUNCTIONS/lsode.cc, DLD-FUNCTIONS/qr.cc, DLD-FUNCTIONS/qz.cc,
2552 DLD-FUNCTIONS/schur.cc, DLD-FUNCTIONS/svd.cc,
2553 DLD-FUNCTIONS/syl.cc, data.cc, mappers.cc:
2554 Use ifnottex instead of ifinfo.
2556 2009-01-14 John W. Eaton <jwe@octave.org>
2558 * load-path.cc (load_path::do_set): Call do_clear after disabling
2561 2009-01-13 Jaroslav Hajek <highegg@gmail.com>
2563 * dirfns.cc (Freadddir): qsort -> sort.
2564 * graphics.cc (maybe_set_children): Ditto.
2565 * help.cc (simple_help): Ditto.
2566 * input.cc (generate_possible_completions): Ditto.
2567 * oct_map.cc (keys_ok): Ditto.
2568 * ov-fcn-inline.cc (Finline): Ditto.
2569 * variables.cc (Fisrawcommand): Ditto.
2571 2009-01-12 John W. Eaton <jwe@octave.org>
2573 * octave.cc (maximum_braindamage): Set confirm_recursive_rmdir to
2576 * strfns.cc (Fstrcmp, Fstrncmp): Simplify by initializing all
2577 elements of output to false with constructor argument.
2579 2009-01-12 Thorsten Meyer <thorsten.meyier@gmx.de>
2581 * strfns.cc (Fstrncmp): New test.
2583 2009-01-12 John W. Eaton <jwe@octave.org>
2585 * pt-stmt.h (tree_statement::is_null_statement): New function.
2586 * parse.y (set_stmt_print_flag): Return list. Remove trailing
2587 null statements from list.
2588 (list, simple_list): Simplify action.
2589 (make_statement, make_statement_list, append_statement_list):
2590 Always create statements and them to the list.
2592 * base-list.h (octave_base_list::push_front,
2593 octave_base_list::push_back, octave_base_list::pop_front,
2594 octave_base_list::pop_back): New functions.
2596 * DLD-FUNCTIONS/qr.cc (Fqrupdate, Fqrinsert, Fqrdelete, Fqrshift):
2597 Require args to be numeric, not necessarily matrix objects.
2599 2009-01-12 Ben Abbott <bpabbott@mac.com>
2601 * graphics.h.in (text::properties::fontunits): Fix typo in list of
2604 2009-01-12 John W. Eaton <jwe@octave.org>
2606 * strfns.cc (Fstrvcat, Fchar): Use queue to avoid duplicate calls
2609 2009-01-12 Thorsten Meyer <thorsten.meyier@gmx.de>
2611 * strfns.cc (Fstrvcap): New function.
2613 2008-11-29 Thorsten Meyer <thorsten.meyier@gmx.de>
2615 * strfns.cc (Fchar, Fischar, Fstrncmp, Flist_in_columns):
2616 Improve documentation strings. Add examples and tests.
2618 2009-01-12 Jaroslav Hajek <highegg@gmail.com>
2620 * ov-perm.cc (octave_perm_matrix::do_index_op): Return shallow copy
2621 when indexed by (:,:).
2622 * ov-base-mat.cc (octave_base_diag::do_index_op): Return shallow copy
2623 when indexed by (:,:). Optimize indexing equivalent to resizing.
2624 * data.cc: Fix tests.
2625 * mappers.cc: Fix tests.
2627 2009-01-12 Jaroslav Hajek <highegg@gmail.com>
2629 * ov-base-diag.h, ov-base-mat.h, ov-base-scalar.h, ov-base-sparse.h,
2630 ov-base.cc, ov-base.h, ov-perm.h, ov-range.h, ov.h: Add full_value
2631 methods to octave_value, octave_base_value and its relevant
2633 * data.cc (Ffull): New DEFUN.
2634 * DLD-FUNCTIONS/sparse.cc (Ffull): move to data.cc.
2635 2009-01-11 Jaroslav Hajek <highegg@gmail.com>
2637 * ov.h (octave_value::is_copy_of): New method.
2638 * ov-struct.cc (numeric_conv): Add output parameter orig.
2639 (octave_struct::subsasgn): Temporarily erase duplicate lhs value prior
2642 2009-01-11 Jaroslav Hajek <highegg@gmail.com>
2644 * oct-obj.cc (octave_value_list::all_scalars): New method.
2645 * oct-obj.h: Declare it.
2646 * ov-cell.cc (octave_cell::subsasgn): Disable assigning
2647 to non-scalar {}-indexed cell, unless in a multi-assignment.
2649 2009-01-10 Jaroslav Hajek <highegg@gmail.com>
2651 * DLD-FUNCTIONS/sparse.cc (Ffull): Convert diagonal & permutation
2652 matrices, leave other classes untouched.
2654 2009-01-09 Jaroslav Hajek <highegg@gmail.com>
2656 * OPERATORS/op-cdm-cdm.cc: Install missing widening op.
2657 * OPERATORS/op-dm-dm.cc: Ditto.
2658 * OPERATORS/op-fcdm-fcdm.cc: Ditto.
2659 * OPERATORS/op-fdm-fdm.cc: Ditto.
2660 * OPERATORS/op-pm-pm.cc: Ditto.
2661 * OPERATORS/op-fpm-fpm.cc: Ditto.
2663 2009-01-09 Jaroslav Hajek <highegg@gmail.com>
2665 * ov-cell.cc (octave_cell::subsasgn): Put erased copy back after
2666 make_unique has been called.
2668 2009-01-09 Kai Habel <kai.habel@gmx.de>
2670 * graphics.cc: Calculate normals for surface boundaries, use
2671 more neighboring points to calculate interior normals
2673 2009-01-09 John W. Eaton <jwe@octave.org>
2675 * input.cc (get_user_input (void)): Don't increment input_line_number.
2676 * lex.l (xunput): New function. Use it in place of yyunput
2677 anywhere a newline character may be put back on the input stream.
2678 Increment input_line_number in all rules that consume newlines
2680 (text_yyinput): Increment input_line_number
2681 (fixup_column_count): Increment input_line_number.
2682 (prep_for_function): Set input_line_number to 1, not 0.
2683 (reset_parser): Set input_line_number to current_command_number,
2684 not current_command_number-1.
2685 (flex_stream_reader::ungetc): Call xunput, not yyunput.
2686 * parse.y (input_line_number): Initialize to 1, not 0.
2687 (text_getc): Increment input_line_number correctly.
2688 (stdio_stream_reader::ungetc): Decrement input_line_number if
2689 putting back a newline character.
2690 (parse_fcn_file): Set input_line_number to 1, not 0.
2691 (eval_string): Unwind-protect input_line_number and
2692 current_input_column.
2694 * parse.y (make_statement): New function.
2695 (statement): Use it.
2696 (make_statement_list, append_statement_list): New functions.
2697 (simple_list1, list1): Use them.
2699 2009-01-08 Jaroslav Hajek <highegg@gmail.com>
2701 * ov-cell.cc (octave_cell::subsasgn): Erase duplicate lhs value
2702 prior to assignment to avoid a redundant copy.
2704 2008-12-26 Thorsten Meyer <thorsten.meyier@gmx.de>
2706 * mappers.cc (Ftoascii), mappers.cc (Ftolower), mappers.cc
2707 (Ftoupper), DLD-FUNCTIONS/regexp.cc (Fregexp),
2708 DLD-FUNCTIONS/regexp.cc (Fregexpi), DLD-FUNCTIONS/regexp.cc
2709 (Fregexprep): Add references.
2711 2008-12-27 Jaroslav Hajek <highegg@gmail.com>
2713 * oct-obj.h, oct-obj.cc (octave_value_list::valid_scalar_indices): Remove.
2714 * ov-base-diag.cc, ov-base-diag.h, ov-base-scalar.cc, ov-base.h,
2715 ov-bool-mat.cc, ov-bool-mat.h, ov-bool-sparse.cc, ov-bool-sparse.h,
2716 ov-bool.cc, ov-bool.h, ov-ch-mat.cc, ov-ch-mat.h, ov-colon.h,
2717 ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h,
2718 ov-cx-sparse.cc, ov-cx-sparse.h, ov-float.cc, ov-float.h,
2719 ov-flt-complex.cc, ov-flt-complex.h, ov-flt-cx-mat.cc,
2720 ov-flt-cx-mat.h, ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-intx.h,
2721 ov-perm.cc, ov-perm.h, ov-range.h, ov-re-mat.cc, ov-re-mat.h,
2722 ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc, ov-scalar.h,
2723 ov-str-mat.cc, ov-str-mat.h, ov.h:
2724 Remove valid_as_scalar_index and valid_as_zero_index methods
2725 from octave_value, octave_base_value and all of its subclasses.
2727 2008-12-26 Francesco Potortì <pot@gnu.org>
2729 * data.cc (resize): Add cross reference to postpad.
2731 2008-12-25 Jaroslav Hajek <highegg@gmail.com>
2733 * load-save.h (load_save_format_type, load_save_format_options): New
2735 (load_save_format): Convert to a class.
2736 * load-save.cc (do_save(..., const octave_value&,...)): Use fmt.type
2737 in switch. Use options of LS_MAT_ASCII.
2738 (do_load, write_header): Use format.type in switch.
2739 * ls-mat-ascii.h (save_mat_ascii_data): Add tabs option.
2740 * ls-mat-ascii.cc (save_mat_ascii_data): Implement it.
2742 2008-12-24 Ben Abbott <bpabbott@mac.com>
2744 * DLD-FUNCTIONS/chol.cc: Compare results to 0 in tests.
2745 Delete spurious function calls in test block.
2747 2008-12-24 John W. Eaton <jwe@octave.org>
2749 * DLD-FUNCTIONS/eigs.cc: Use "testif HAVE_ARPACK" to skip tests if
2750 ARPACK is not available.
2752 * Makefile.in (DLD_XSRC): Add eigs.cc to the list.
2754 * load-save.cc (parse_save_options): Handle -double.
2756 2008-12-23 David Bateman <dbateman@free.fr>
2758 * DLD-FUNCTIONS/eigs.cc: New file.
2759 * Makefile.in (DLD_XSRC): Add it here.
2761 2008-12-22 David Bateman <dbateman@free.fr>
2763 * DLD-FUNCTIONS/__voronoi__.cc (F__voronoi__): Resize AtInf array
2764 before returning it.
2766 2008-12-12 David Bateman <dbateman@free.fr>
2768 * DLD-FUNCTIONS/chol.cc (Fcholinv): Add test.
2770 2008-12-12 Jaroslav Hajek <highegg@gmail.com>
2772 * ls-hdf5.cc (add_hdf5_data): Check for diagonal & permutation
2773 matrices and convert them to full prior to saving.
2775 2008-12-11 Jaroslav Hajek <highegg@gmail.com>
2777 * ov-re-mat.cc (Fdouble): Handle diagonal & perm matrices.
2778 * ov-flt-re-mat.cc (Fsingle): Handle diagonal & perm matrices.
2780 2008-12-11 Jaroslav Hajek <highegg@gmail.com>
2782 * ov-base-diag.cc (octave_base_diag<DMT,MT>::subsasgn): New method.
2783 * ov-base-diag.h (octave_base_diag<DMT,MT>::subsasgn): Declare it.
2784 (octave_base_diag<DMT,MT>::chk_valid_scalar): New method decl.
2786 * ov-re-diag.cc (octave_diag_matrix::chk_valid_scalar): New method
2788 * ov-re-diag.h: Declare it.
2789 * ov-flt-re-diag.cc (octave_float_diag_matrix::chk_valid_scalar): New
2791 * ov-flt-re-diag.h: Declare it.
2792 * ov-cx-diag.cc (octave_complex_diag_matrix::chk_valid_scalar): New
2794 * ov-cx-diag.h: Declare it.
2795 * ov-flt-cx-diag.cc (octave_float_complex_diag_matrix::chk_valid_scalar):
2796 New method override.
2797 * ov-flt-cx-diag.h: Declare it.
2799 2008-12-10 Jaroslav Hajek <highegg@gmail.com>
2801 * DLD-FUNCTIONS/expm.cc: Remove.
2802 * Makefile.in: Update.
2804 2008-12-10 Jaroslav Hajek <highegg@gmail.com>
2806 * ov-intx.h (OCTAVE_VALUE_INT_SCALAR_T::empty_clone): Construct an
2807 empty matrix instead of zero.
2809 2008-12-07 Thorsten Meyer <thorsten.meyier@gmx.de>
2811 * mappers.cc (Ftolower): Make lower alias of tolower, add tests
2812 * mappers.cc (Ftoupper): Make upper alias of toupper, add tests
2814 2008-12-09 Jaroslav Hajek <highegg@gmail.com>
2816 * DLD-FUNCTIONS/balance.cc (Fbalance): Exploit the new AEPBAL functionality.
2818 2008-12-08 Jaroslav Hajek <highegg@gmail.com>
2820 * xpow.cc ( xpow (const DiagMatrix& a, double b),
2821 xpow (const DiagMatrix& a, const Complex& b),
2822 xpow (const ComplexDiagMatrix& a, double b),
2823 xpow (const ComplexDiagMatrix& a, const Complex& b),
2824 xpow (const FloatDiagMatrix& a, float b),
2825 xpow (const FloatDiagMatrix& a, const FloatComplex& b),
2826 xpow (const FloatComplexDiagMatrix& a, float b),
2827 xpow (const FloatComplexDiagMatrix& a, const FloatComplex& b)):
2829 * xpow.h: Declare them.
2830 * OPERATORS/op-dms-template.cc: Support diagonal matrix ^ scalar.
2832 2008-12-08 Jaroslav Hajek <highegg@gmail.com>
2834 * ov-re-diag.cc (octave_diag_matrix::save_binary,
2835 octave_diag_matrix::load_binary): New methods.
2836 * ov-re-diag.h: Declare them.
2837 * ov-flt-re-diag.cc (octave_float_diag_matrix::save_binary,
2838 octave_float_diag_matrix::load_binary): New methods.
2839 * ov-flt-re-diag.h: Declare them.
2840 * ov-cx-diag.cc (octave_complex_diag_matrix::save_binary,
2841 octave_complex_diag_matrix::load_binary): New methods.
2842 * ov-cx-diag.h: Declare them.
2843 * ov-flt-cx-diag.cc (octave_float_complex_diag_matrix::save_binary,
2844 octave_float_complex_diag_matrix::load_binary): New methods.
2845 * ov-flt-cx-diag.h: Declare them.
2846 * ov-perm.cc (octave_perm_matrix::save_binary,
2847 octave_perm_matrix::load_binary): New methods.
2848 * ov-perm.h: Declare them.
2850 2008-12-06 Jaroslav Hajek <highegg@gmail.com>
2852 * ov-fcn-handle.cc (octave_fcn_handle::load_binary): Call istream::get
2853 rather than istream::read to supply null terminating character.
2855 2008-10-29 Jaroslav Hajek <highegg@gmail.com>
2856 * file-io.cc, gl-render.cc, load-save.cc, ls-hdf5.cc, ls-mat4.cc,
2857 ls-mat5.cc, ls-oct-binary.cc, mex.cc, oct.h, ov-base-int.cc,
2858 ov-bool-mat.cc, ov-bool-sparse.cc, ov-cell.cc, ov-class.cc,
2859 ov-cx-mat.cc, ov-cx-sparse.cc, ov-fcn-handle.cc, ov-fcn-inline.cc,
2860 ov-flt-cx-mat.cc, ov-flt-re-mat.cc, ov-re-mat.cc, ov-re-sparse.cc,
2861 ov-str-mat.cc, ov-struct.cc, toplev.cc,
2862 DLD-FUNCTIONS/__lin_interpn__.cc, DLD-FUNCTIONS/amd.cc,
2863 DLD-FUNCTIONS/ccolamd.cc, DLD-FUNCTIONS/cellfun.cc,
2864 DLD-FUNCTIONS/colamd.cc, DLD-FUNCTIONS/gcd.cc,
2865 DLD-FUNCTIONS/matrix_type.cc, DLD-FUNCTIONS/regexp.cc,
2866 DLD-FUNCTIONS/symbfact.cc, DLD-FUNCTIONS/symrcm.cc:
2867 Include oct-locbuf.h.
2869 2008-12-05 Jaroslav Hajek <highegg@gmail.com>
2871 * ov-base-diag.cc (save_ascii, load_ascii): Save natively.
2872 * ov-base-diag.h (load_ascii): Declare.
2873 * ov-perm.cc (save_ascii, load_ascii): Save natively.
2874 * ov-perm.h (load_ascii): Declare.
2877 2008-12-04 Thorsten Meyer <thorsten.meyier@gmx.de>
2879 * strfns.cc (Fchar): Add test from str2mat.m
2881 2008-12-04 Jaroslav Hajek <highegg@gmail.com>
2883 * ov.h (octave_value::is_perm_matrix): New method.
2884 * ov-base.h (octave_base_value::is_perm_matrix): New method.
2885 * ov-perm.h (octave_perm_matrix::is_perm_matrix): New method.
2886 * DLD-FUNCTIONS/inv.cc (Finv): Handle permutation matrices specially,
2887 compute rcond for diagonal matrices.
2888 * DLD-FUNCTIONS/det.cc (Fdet): Handle permutation & diagonal matrices
2891 2008-12-03 Jaroslav Hajek <highegg@gmail.com>
2893 * ov-perm.h: New source.
2894 * ov-perm.cc: New source.
2895 * ov-flt-perm.h: New source.
2896 * ov-flt-perm.cc: New source.
2897 * ov-base-diag.cc (octave_base_diag<DMT, MT>::do_index_op):
2898 If subscripting an identity matrix by permutation(s), return a
2899 permutation matrix object.
2900 * ov.cc (octave_value::octave_value (const PermMatrix&)): New
2902 * ov.cc (octave_value::octave_value (const PermMatrix&)): Declare it.
2903 * op-cm-pm.cc: New source.
2904 * op-fcm-fpm.cc: New source.
2905 * op-fm-fpm.cc: New source.
2906 * op-fpm-fcm.cc: New source.
2907 * op-fpm-fm.cc: New source.
2908 * op-fpm-fpm.cc: New source.
2909 * op-m-pm.cc: New source.
2910 * op-pm-cm.cc: New source.
2911 * op-pm-m.cc: New source.
2912 * op-pm-pm.cc: New source.
2913 * op-pm-template.cc: New source.
2914 * Makefile.in: Include new sources.
2915 * DLD-FUNCTIONS/qr.cc (Fqr): Reflect interface changes of QR classes.
2917 2008-12-03 John W. Eaton <jwe@octave.org>
2919 * debug.cc (bp_table::do_get_breakpoint_list): Style fixes.
2921 2008-12-01 Jaroslav Hajek <highegg@gmail.com>
2923 * ov-base.h (octave_base_value::is_diag_matrix): New virtual method.
2924 * ops.h (CONCAT2, CONCAT3): New macros. Use CONCAT macros instead of
2925 direct token pasting to avoid disabling argument prescan.
2926 * xdiv.cc, xdiv.h: Implement xdiv and xleftdiv overloads for diagonal
2927 and mixed dense-diagonal operands.
2929 * ov-re-diag.h: New source.
2930 * ov-re-diag.cc: New source.
2931 * ov-flt-re-diag.h: New source.
2932 * ov-flt-re-diag.cc: New source.
2933 * ov-base-diag.h: New source.
2934 * ov-base-diag.cc: New source.
2935 * OPERATORS/op-m-dm.cc: New source.
2936 * OPERATORS/op-m-cdm.cc: New source.
2937 * OPERATORS/op-fm-fdm.cc: New source.
2938 * OPERATORS/op-fm-fcdm.cc: New source.
2939 * OPERATORS/op-fdm-fs.cc: New source.
2940 * OPERATORS/op-fdm-fm.cc: New source.
2941 * OPERATORS/op-fdm-fdm.cc: New source.
2942 * OPERATORS/op-fdm-fcs.cc: New source.
2943 * OPERATORS/op-fdm-fcm.cc: New source.
2944 * OPERATORS/op-fdm-fcdm.cc: New source.
2945 * OPERATORS/op-fcm-fdm.cc: New source.
2946 * OPERATORS/op-fcm-fcdm.cc: New source.
2947 * OPERATORS/op-fcdm-fs.cc: New source.
2948 * OPERATORS/op-fcdm-fm.cc: New source.
2949 * OPERATORS/op-fcdm-fdm.cc: New source.
2950 * OPERATORS/op-fcdm-fcs.cc: New source.
2951 * OPERATORS/op-fcdm-fcm.cc: New source.
2952 * OPERATORS/op-fcdm-fcdm.cc: New source.
2953 * OPERATORS/op-dms-template.cc: New source.
2954 * OPERATORS/op-dm-template.cc: New source.
2955 * OPERATORS/op-dm-s.cc: New source.
2956 * OPERATORS/op-dm-m.cc: New source.
2957 * OPERATORS/op-dm-dm.cc: New source.
2958 * OPERATORS/op-dm-cs.cc: New source.
2959 * OPERATORS/op-dm-cm.cc: New source.
2960 * OPERATORS/op-dm-cdm.cc: New source.
2961 * OPERATORS/op-cm-dm.cc: New source.
2962 * OPERATORS/op-cm-cdm.cc: New source.
2963 * OPERATORS/op-cdm-s.cc: New source.
2964 * OPERATORS/op-cdm-m.cc: New source.
2965 * OPERATORS/op-cdm-dm.cc: New source.
2966 * OPERATORS/op-cdm-cs.cc: New source.
2967 * OPERATORS/op-cdm-cm.cc: New source.
2968 * OPERATORS/op-cdm-cdm.cc: New source.
2969 * Makefile.in: Include them.
2971 * ov-re-mat.cc (octave_matrix::diag): New method override.
2972 * ov-re-mat.h: Declare it.
2973 * ov-cx-mat.cc: Likewise with octave_complex_matrix.
2974 * ov-cx-mat.h: Likewise with octave_complex_matrix.
2975 * ov-flt-re-mat.cc: Likewise with octave_float_matrix.
2976 * ov-flt-re-mat.h: Likewise with octave_float_matrix.
2977 * ov-flt-cx-mat.cc: Likewise with octave_float_complex_matrix.
2978 * ov-flt-cx-mat.h: Likewise with octave_float_complex_matrix.
2979 * ov.cc (octave_value::octave_value (const DiagMatrix&))
2980 (octave_value::octave_value (const FloatDiagMatrix&))
2981 (octave_value::octave_value (const ComplexDiagMatrix&))
2982 (octave_value::octave_value (const FloatComplexDiagMatrix&)):
2983 Construct a diagonal matrix object.
2984 * data.cc (Fdiag): Support explicit dimensions. Fix tests.
2985 (Feye): Return diagonal matrix objects if possible. Fix tests.
2986 * mappers.cc (Freal, Fimag): Fix tests.
2987 * DLD-FUNCTIONS/inv.cc (Finv): Handle diagonal matrix objects.
2988 * ov-range.h (octave_range::diag): Declare only.
2989 * ov-range.cc (octave_range::diag): Return DiagMatrix if possible.
2991 2008-11-25 Jaroslav Hajek <highegg@gmail.com>
2992 * ov.cc (octave_value::is_equal): New member function.
2994 * pt-select.cc (tree_switch_case::label_matches): Call
2995 octave_value::is_equal.
2997 2008-12-04 Thomas Treichl <Thomas.Treichl@gmx.net>
2999 * DLD-FUNCTIONS/cellfun.cc: Added more tests for cellfun.
3001 2008-11-25 Jaroslav Hajek <highegg@gmail.com>
3003 * ov-base.h (octave_base_value::type_conv_info): New class.
3004 * ov-base.h, ov-bool-mat.cc, ov-bool-mat.h, ov-bool-sparse.cc,
3005 ov-bool-sparse.h, ov-bool.cc, ov-bool.h, ov-complex.cc, ov-complex.h,
3006 ov-cx-mat.cc, ov-cx-mat.h, ov-null-mat.cc, ov-null-mat.h,
3007 ov-range.cc, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc,
3008 ov-scalar.h, ov-str-mat.cc, ov-str-mat.h, ov.h:
3009 Return type_conv_info instead of type_conv_fcn from
3010 numeric_conversion_function and numeric_demotion_function
3012 * ov-base.cc (octave_base_value::numeric_assign): Try biased conversion
3014 * ov.cc (do_binary_op): Likewise. Also, search recursively.
3015 * ov.cc (do_cat_op): Likewise.
3017 2008-11-24 David Bateman <dbateman@free.fr>
3019 * graphics.cc (F__go_delete__): Check validity of handles before
3020 deleting them to avoid issues with callback function also deleting
3023 2008-11-21 John Swensen <jpswensen@comcast.net>
3025 * debug.cc (bp_table::do_get_breakpoint_list): Avoid modifying
3026 bp_map while iterating over it.
3028 2008-11-21 Jarkko Kaleva <d3roga@gmail.com>
3030 * DLD-FUNCTIONS/eig.cc (Feig): Handle generalized eigenvalues and
3033 2008-11-19 Jaroslav Hajek <highegg@gmail.com>
3035 * DLD_FUNCTIONS/det.cc: Include only DET.h. Retrieve & matrix type &
3036 store it after calculation if possible.
3038 2008-11-17 John W. Eaton <jwe@octave.org>
3040 * load-path.cc (load_path::dir_info::update): Simplify previous
3043 * load-path.h (load_path::dir_info::abs_dir_name): New data member.
3044 (load_path::dir_info::dir_info, load_path::dir_info::operator =):
3046 (load_path::abs_dir_cache_type, load_path::dir_cache_iterator,
3047 load_path::const_dir_cache_iterator): New typedefs.
3048 (load_path::abs_dir_cache): New static data member.
3049 (load_path::dir_info:dir_info): New constructor.
3050 * load-path.cc (load_path::abs_dir_cache): Define new static data
3052 (load_path::dir_info::update): Look in abs_dir_cache for relative
3054 (load_path::dir_info::initialize): Update abs_dir_cache here.
3056 2008-11-13 John W. Eaton <jwe@octave.org>
3058 * ov-int8.h, ov-int16.h, ov-int32.h, ov-int64.h, ov-uint8.h,
3059 ov-uint16.h, ov-uint32.h, ov-uint64.h: Don't define
3060 OCTAVE_INT_NDARRAY_T.
3061 * ov-intx.h (class OCTAVE_VALUE_INT_MATRIX_T,
3062 class OCTAVE_VALUE_INT_SCALAR_T): Use intNDArray<OCTAVE_INT_T>
3063 instead of OCTAVE_INT_NDARRAY_T.
3064 (OCTAVE_VALUE_INT_MATRIX_T::increment,
3065 OCTAVE_VALUE_INT_MATRIX_T::decrement,
3066 OCTAVE_VALUE_INT_SCALAR_T::increment,
3067 OCTAVE_VALUE_INT_SCALAR_T::decrement): Convert 1 to OCTAVE_INT_T.
3069 2008-11-15 Thorsten Meyer <thorsten.meyier@gmx.de>
3071 * strfns.cc (Fchar): adapt to conserve empty strings, add tests
3073 2008-11-12 Michael Goffioul <michael.goffioul@gmail.com>
3075 * dirfcn.cc (Ffilesep): Make it return all file separators when 'all'
3076 is given as argument.
3078 * DLD-FUNCTIONS/getrusage.cc: Undefine min/max.
3079 * TEMPLATE-INST/Array-os.cc: Declare Array<bool> as extern template.
3081 2008-11-12 David Bateman <dbateman@free.fr>
3083 * OPERATORS/op-cell.cc (op_catop_matrix_cell): Cast args in the correct
3085 * OPERATORS/op-struct.cc (op_catop_matrix_struct): Ditto.
3087 2008-11-11 Jaroslav Hajek <highegg@gmail.com>
3089 * pt-assign.cc: Fix handling of empty cs-lists in assignment LHS.
3091 2008-11-11 John W. Eaton <jwe@octave.org>
3093 * lex.l (<MATRIX_START>{S}+): Don't insert separator if next token
3096 * parse.y (F__parser_debug_flag__): New function.
3098 2008-10-31 Jaroslav Hajek <highegg@gmail.com>
3100 * xnorm.cc: New source.
3101 * xnorm.h: New header file.
3102 * Makefile.in: Include xnorm.cc in the build process.
3103 * data.cc (Fnorm): Call xnorm, xcolnorms, xrownorms or xfrobnorm
3104 to do the actual work.
3107 2008-10-31 David Bateman <dbateman@free.fr>
3109 * ov-base-scalar.h (octave_value octave_base_scalar::reshape
3110 (const dim_vector&) const): New method.
3112 2008-10-30 John W. Eaton <jwe@octave.org>
3114 * oct-map.cc (Octave_map::index): Copy key_list.
3116 2008-10-31 David Bateman <dbateman@free.fr>
3118 * graphics.h.in (void image::init (void)): Add a constraint for
3121 * graphics.h.in (base_property::delete_listener): New method.
3122 (property::delete_listener): New method.
3123 (base_graphics_object::delete_listener): New method.
3124 (base_graphics_object::delete_property_listener): New method.
3125 (base_graphics_object::remove_all_listeners): New method.
3126 (graphics_object::delete_property_listener): New method.
3127 (axes::set_defaults): Call remove_all_listeners.
3128 * graphics.cc (void base_properties::delete_listener): New method
3129 (void base_graphics_object::remove_all_listeners (void)): New method
3130 (Fdellistener): New command to remove listener functions associated
3133 2008-10-30 David Bateman <dbateman@free.fr>
3135 * graphics.h.in (axes::properties): Add keyreverse property.
3136 * graphics.cc (axes::properties::set_defaults): Initialize
3137 keyreverse property.
3139 2008-10-28 Jaroslav Hajek <highegg@gmail.com>
3141 * Cell.h (Cell::assign (const Array<idx_vector>&, ...),
3142 Cell::delete_elements (const Array<idx_vector>&, ...)):
3143 New member functions.
3144 * Cell.cc (Cell::assign (const octave_value_list&, ...),
3145 Cell::delete_elements (const octave_value_list&, ...)):
3146 Call Array<T>::assign.
3147 * DLD-FUNCTIONS/dlmread.cc: Call Array<T>::resize_fill.
3148 * ov-base-mat.cc (octave_base_matrix::assign): Call Array<T>::assign.
3149 (octave_base_matrix::delete_elements):: Call Array<T>::delete_elements.
3150 * ov-cell.cc (Fcell): Call Array<T>::chop_trailing_singletons,
3152 * ov-cx-mat.cc (octave_complex_matrix::assign): Call Array<T>::assign.
3153 * ov-flt-cx-mat.cc (octave_float_complex_matrix::assign): Call
3155 * ov-list.cc (octave_list::subsasgn): Call Array<T>::assign.
3156 * pr-output.cc (PRINT_ND_ARRAY): Use zero-based indices.
3159 2008-10-29 Thorsten Meyer <thorsten.meyier@gmx.de>
3161 * data.cc (Fcolumns): Remove "and" from @seealso string.
3162 * mappers.cc (Fgamma, Flgamma): Replace @seealso reference to
3163 deprecated gammai by gammainc.
3164 * DLD-FUNCTIONS/sqrtm.cc (Fsqrtm): Remove reference to Octave
3165 Forge function funm.
3166 * DLD-FUNCTIONS/qz.cc (Fqz): removed @seealso reference to Octave
3167 Forge function dare.
3168 * DLD-FUNCTIONS/rcond.cc (Frcond): removed @seealso reference to
3170 * debug.cc (Fdbstop): Fix @seealso references and function name in
3171 docstring of dbnext.
3172 * DLD-FUNCTIONS/cellfun.cc (Fcellfun): Remove @seealso reference
3174 * syscalls.cc (Fwaitpid): Replace WCONTINUED by WCONTINUE.
3175 * oct-hist.cc (Fhistory_size, Fsaving_history): Fix @seealso
3176 references to history_timestamp_format_string.
3177 * DLD-FUNCTIONS/luinc.cc (Fluinc): Remove reference to missing
3180 2008-10-29 Jaroslav Hajek <highegg@gmail.com>
3182 * DLD-FUNCTIONS/qr.cc (Fcholinsert, Fcholdelete, Fcholshift): Fix
3185 2008-10-28 John W. Eaton <jwe@octave.org>
3187 * parse.y (finish_function): Clear local variables in function scope.
3188 * symtab.h (symbol_table::clear_variables): New argument, scope.
3190 2008-10-28 Brian Gough <bjg@gnu.org>
3192 * DLD-FUNCTIONS/besselj.cc: Added tests.
3194 2008-10-23 John W. Eaton <jwe@octave.org>
3196 * oct-hist.c (initialize_history): New arg, read_history_file)
3197 * oct-hist.h: Fix decl.
3198 * octave.cc (octave_main): Set read_history_file to false if
3199 --no-history option is specified. Pass read_history_file to
3202 * DLD-FUNCTIONS/fltk_backend.cc: Update initialization comment.
3204 2008-10-22 John W. Eaton <jwe@octave.org>
3206 * DLD-FUNCTIONS/fltk_backend.cc (figure_manager::do_close_all):
3207 Rename from close_all. Now private.
3208 (figure_manager::do_new_window): Rename from new_window.
3210 (figure_manager::do_delete_window): Rename from delete_window.
3212 (figure_manager::do_mark_modified): Rename from mark_modified.
3214 (figure_manager::do_get_size): Rename from get_size. Now private.
3215 (figure_manager::close_all, figure_manager::do_new_window,
3216 figure_manager::do_delete_window,
3217 figure_manager::do_mark_modified, figure_manager::do_get_size):
3218 New static functions.
3219 (figure_manager::instance_ok): New function.
3220 (figure_manager::Instance): Delete. Eliminate all uses in favor
3221 of static methods that call instance_ok and forward to private
3223 (figure_manager::instance): New static data member.
3224 (figure_manager::hnd2idx, figure_manager::figprops2idx,
3225 figure_manager::figprops2idx, figure_manager::str2idx): Now static.
3227 * DLD-FUNCTIONS/fltk_backend.cc (figure_manager::default_size):
3228 Increase default window size.
3230 * graphics.cc (figure::properties::remove_child): New function.
3231 * graphics.h.in: Provide decl.
3233 * gl-render.cc (opengl_renderer::draw): Get all children.
3235 * DLD-FUNCTIONS/fltk_backend.cc (__fltk_redraw__):
3236 Check for "root" object, not "root_figure".
3238 * graphics.h.in (base_properties::get_all_children): New function.
3240 2008-10-22 David Bateman <dbateman@free.fr>
3242 * graphics.h.in (line::properties, surface::properties): Add data
3245 2008-10-21 John W. Eaton <jwe@octave.org>
3247 * graphics.h.in (axes::properties::delete_children): Delete decl.
3249 * graphics.h.in (gh_manager::is_handle_visible): New function.
3250 (axes::properites): Move title property after label properties.
3251 (graphics_object::is_handle_visible): New function.
3252 (base_properties::is_handle_visible): New function.
3253 (base_properties): Mark children property with G.
3254 * graphics.cc (axes::properties::set_text_child): New function.
3255 (axes::properties::set_title, axes::properties::set_xlabel,
3256 axes::properties::set_ylabel, axes::properties::set_zlabel): Use it.
3257 (base_property::get_children): New function. Only
3258 return handles that are visible.
3259 (axes::properties::delete_text_child): Set handlevisibility to
3260 "off" for newly created object and add it to the list of children.
3261 Call base_properties::remove_child on previous handle value.
3262 (axes::properties::set_defaults): Don't explicitly delete xlabel,
3263 ylabel, zlabel, and title handles. Reinitialize them after
3265 (axes::properties::remove_child): Don't explicitly delete xlabel,
3266 ylabel, zlabel, and title handles.
3267 (axes::properties::init): Move here from graphics.h.in. Set
3268 handlevisibility to "off" for xlabel, ylabel, zlabel, and title
3269 and add them to the list of children.
3270 (axes::properties::delete_children): Delete.
3272 * genprops.awk: Allow whitespace between BEGIN_PROPERTIES and
3273 opening paren. Accept optional second argument for graphics
3275 * graphics.h.in (root_figure properties): Pass "root" as second
3276 arg to BEGIN_PROPERTIES.
3278 2008-10-16 John W. Eaton <jwe@octave.org>
3280 * graphics.cc (make_handle_fraction): New static function.
3281 (gh_manager::get_handle): Use it.
3282 (gh_manager::do_free): Call make_handle_fraction to replace
3283 fractional part of non-figure handles.
3285 * graphics.cc (base_properties::remove_child): Handle children as
3286 a column vector instead of a row vector.
3288 * utils.cc (Fis_absolute_filename, Fis_rooted_relative_filename,
3289 Fmake_absolute_filename, Ffind_dir_in_path): New functions.
3291 2008-10-16 David Bateman <dbateman@free.fr>
3293 * graphics.cc (void axes::properties::set_defaults
3294 (base_graphics_object&, const std::string&)): Preserve font
3295 and position properties if the axis is "replaced".
3297 2008-10-16 John W. Eaton <jwe@octave.org>
3299 * graphics.h.in (class axes::properties): New property: interpreter.
3301 2008-10-15 David Bateman <dbateman@free.fr>
3303 * ov-class.c (Fsuperiorto, Finferiorto): Allow more than one class
3304 to be defined at a time.
3306 2008-10-12 David Bateman <dbateman@free.fr>
3308 * pt-colon.cc (octave_value tree_colon_expression::make_range
3309 (const octave_value&, const octave_value&, const octave_value&)):
3310 Treating class overloading of colon operator.
3311 (octave_value tree_colon_expression::rvalue (void)): Ditto.
3313 2008-10-10 John W. Eaton <jwe@octave.org>
3315 * graphics.h.in (base_properties::adopt): Place new child at front
3316 of list, not end. Make list of children a column vector instead
3319 * graphics.cc (gh_manager::do_free): Set the beingdeleted
3320 property, then delete the children, then execute the deletefcn.
3321 (axes::properties::set_defaults, axes::properties::remove_child,
3322 axes::properites::delete_children): Call delete_text_child to
3323 manage the title, xlabel, ylabel, and zlabel properties.
3324 (axes::properties::get_title, axes::properties::get_xlabel,
3325 axes::properties::get_ylabel, axes::properties::get_zlabel): Delete.
3327 * graphics.h.in (axes::properites::title,
3328 axes::properites::xlabel, axes::properites::ylabel,
3329 axes::properites::zlabel): No longer mutable. Don't generate
3330 factory default values or custom get functions for these
3333 * graphics.cc (axes::properties::delete_text_child): New function.
3334 * graphics.h.in: Provide decl.
3336 * graphics.h.in (graphics_object::type): New function.
3338 2008-10-10 David Bateman <dbateman@free.fr>
3340 * graphics.h.in (radio_property axes::properties::__colorbar__):
3342 * graphics.cc (void axes::properties::sync_positions (void)):
3343 Disable code synchronizing outerposiiton and position.
3344 (void axes::properties::set_defaults (base_graphics_object&,
3345 const std::string&): Remove __colorbar__.
3346 (F__go_delete__): Don't delete if already being deleting to avoid
3347 recursion in callback functions.
3348 (F__go_axes_init__): Flag error if handle is deleted during
3351 2008-10-09 David Bateman <dbateman@free.fr>
3353 * ov-class.cc (Octave_map octave_class::map_value (void) const):
3355 (bool octave_class::save_ascii (std::ostream&),
3356 bool octave_class::load_ascii (std::istream&),
3357 bool octave_class::save_binary (std::ostream&, bool&),
3358 bool octave_class::save_binary (std::ostream&, bool&),
3359 bool octave_class::save_hdf5 (hid_t, const char *, bool),
3360 bool octave_class::load_hdf5 (hid_t, const char *, bool)):
3361 Allow saving and reloading of classes.
3362 * ov-class. (Octave_map octave_class::map_value (void) const):
3364 * ls-mat.cc (std::string read_mat5_binary_element (std::istream&,
3365 const std::string&, bool, bool&, octave_value&),
3366 int save_mat5_element_length (const octave_value&, const std::string&,
3367 bool, bool)): Allow saving and loading of classes.
3368 * ls-oct-ascii.h (template <class T> bool extract_keyword
3369 (std::istream&, const char *, T&, const bool)): Initialize value with
3370 null constructor rather than 0.
3372 2008-10-07 David Bateman <dbateman@free.fr>
3374 * graphics.cc (F__go_delete__): Allow arrays of graphic handles.
3376 2008-10-01 Jaroslav Hajek <highegg@gmail.com>
3378 * OPERATORS/op-i64-i64.cc: Instantiate all 64-bit operations.
3379 * OPERATORS/op-ui64-ui64.cc: Instantiate all unsigned 64-bit operations.
3381 2008-10-06 John W. Eaton <jwe@octave.org>
3383 * ov-type-conv.h (octave_type_conv_body): Avoid shadow warning
3386 2008-10-06 David Bateman <dbateman@free.fr>
3388 * graphics.cc (static bool is_handle (const octave_value&)): Delete.
3389 (static octave_value is_handle (const octave_value&)): New function.
3391 2008-10-03 Jaroslav Hajek <highegg@gmail.com>
3393 * Cell.cc (Cell::delete_elements): Don't pass second arg to
3394 Array<T>::maybe_delete_elements.
3395 * ov-base-mat.cc (octave_base_matrix<MT>::delete_elements): Ditto.
3397 2008-10-02 Jaroslav Hajek <highegg@gmail.com>
3399 * Cell.h (Cell::delete_elements): Declare new member function.
3400 * Cell.h (Cell::delete_elements): Define it.
3401 * oct-map.cc (Octave_map::maybe_delete_elements): Call delete_elements
3402 instead of assign with empty Cell.
3404 2008-10-02 John W. Eaton <jwe@octave.org>
3406 * pt-arg-list.cc (tree_argument_list::convert_to_const_vector):
3407 Don't insert undefined elements in return list.
3409 2008-09-30 Jaroslav Hajek <highegg@gmail.com>
3411 * ov-str-mat.h (octave-char-matrix-str::assign): Remove declaration.
3412 * ov-str-mat.cc (octave-char-matrix-str::assign): Remove definition.
3414 2008-09-30 John W. Eaton <jwe@octave.org>
3416 * DLD-FUNCTIONS/__magick_read__.cc: Only define
3417 magick_to_octave_value if HAVE_MAGICK is defined.
3419 2008-09-29 John W. Eaton <jwe@octave.org>
3421 * symtab.cc (symbol_table::fcn_info::fcn_info_rep::load_class_method):
3422 Call load_class_constructor if name and dispatch_type are the same.
3424 2008-09-29 David Bateman <dbateman@free.fr>
3426 * symtab.cc (octave_value symbol_table::find_function
3427 (const std::string&, tree_argument_list *, const string_vector&,
3428 octave_value_list&, bool&)): If first character of function name
3429 is "@" then look for class specific method.
3431 2008-09-26 John W. Eaton <jwe@octave.org>
3433 * symtab.cc (out_of_date_check_internal):
3434 Fix order of arguments in call to load_path::find_method.
3436 2008-09-26 David Bateman <dbateman@free.fr>
3438 * ov-class.h (idx_vector index_vector (void) const): Declare new
3440 * ov-class.cc (idx_vector index_vector (void) const): Define new
3442 * (Fismethod): New function.
3444 2008-09-26 John W. Eaton <jwe@octave.org>
3446 * DLD-FUNCTIONS/urlwrite.cc (urlwrite_cleanup_file) New function.
3447 (urlwrite_delete_file, urlwrite_filename): New static variables.
3448 (Furlwrite): Only return filename if urlget succeeds. Use
3449 unwind_protect to delete files we create if download fails.
3451 2008-09-26 Jaroslav Hajek <highegg@gmail.com>
3453 * ov-null-mat.h: New header file.
3454 * ov-null-mat.cc: New source.
3455 * ov.h (octave_value::is_null_value, octave_value::non_null_value,
3456 octave_value::make_non_null_value):
3457 Declare new member functions.
3458 * ov.cc (octave_value:non_null_value, octave_value::make_non_null_value):
3460 (octave_value::assign (assign_op op, const octave_value& rhs)):
3461 (register_types): Register null types.
3462 Call non_null_value ().
3463 * oct-obj.cc (octave_value_list::normalize_null_values): New member
3465 * oct-obj.h (octave_value_list::normalize_null_values): Declare it.
3466 * ov-base.h (is_null_value): New virtual member function.
3467 * ops.h (NULLASSIGNOPDECL, DEFNULLASSIGNOP_FN): New macros.
3468 * ov-base-mat.cc (octave_base_mat<MT>::delete_elements): New member func.
3469 * ov-base-mat.h: Declare it.
3470 * ov-base-sparse.cc (octave_base_sparse<MT>::delete_elements): New member func.
3471 * ov-base-sparse.h: Declare it.
3472 * ov-cell.cc (octave_cell:subsasgn): Handle null values.
3473 * ov-struct.cc (octave_cell:subsasgn): Handle null values.
3474 * ov-builtin.cc (octave_builtin::do_multi_index_op): Normalize return
3476 * pt-misc.cc (tree_parameter_list::define_from_arg_vector): Call
3477 octave_lvalue::define instead of octave_lvalue::assign.
3478 * pt-decl.h (tree_decl_elt::rvalue): Call non_null_value ().
3479 * OPERATORS/op-int.h (OCTAVE_INT_NULL_ASSIGN_OPS,
3480 OCTAVE_INSTALL_INT_NULL_ASSIGN_OPS): New macros.
3481 * OPERATORS/op-m-m.cc: Install & define assignment & conversion operators.
3482 * OPERATORS/op-bm-bm.cc: Ditto.
3483 * OPERATORS/op-cell.cc: Ditto.
3484 * OPERATORS/op-cm-cm.cc: Ditto.
3485 * OPERATORS/op-cs-cs.cc: Ditto.
3486 * OPERATORS/op-fcm-fcm.cc: Ditto.
3487 * OPERATORS/op-fcs-fcs.cc: Ditto.
3488 * OPERATORS/op-fm-fm.cc: Ditto.
3489 * OPERATORS/op-fs-fs.cc: Ditto.
3490 * OPERATORS/op-int.h: Ditto.
3491 * OPERATORS/op-m-m.cc: Ditto.
3492 * OPERATORS/op-range.cc: Ditto.
3493 * OPERATORS/op-s-s.cc: Ditto.
3494 * OPERATORS/op-scm-scm.cc: Ditto.
3495 * OPERATORS/op-sm-sm.cc: Ditto.
3496 * OPERATORS/op-str-str.cc: Ditto.
3497 * OPERATORS/op-i16-i16.cc: Ditto.
3498 * OPERATORS/op-i32-i32.cc: Ditto.
3499 * OPERATORS/op-i64-i64.cc: Ditto.
3500 * OPERATORS/op-i8-i8.cc: Ditto.
3501 * OPERATORS/op-ui16-ui16.cc: Ditto.
3502 * OPERATORS/op-ui32-ui32.cc: Ditto.
3503 * OPERATORS/op-ui64-ui64.cc: Ditto.
3504 * OPERATORS/op-ui8-ui8.cc: Ditto.
3506 2008-09-25 David Bateman <dbateman@free.fr>
3508 * pt-mat.cc (class tm_row_const): Add any_class test
3509 (class tm_const): Ditto.
3510 (octave_value tree_matrix::rvalue (void)): If any object to
3511 concatenate is a class object, dispatch to the appropriate
3512 vertcat/horzcat function.
3514 2008-09-25 John W. Eaton <jwe@octave.org>
3516 * symtab.cc (symbol_table::do_find): Don't set evaluated_args and
3517 args_evaluated here, prior to call to symbol_table::fcn_info::find.
3519 2008-09-24 Søren Hauberg <hauberg@gmail.com>
3521 * DLD-FUNCTIONS/__magick_read__.cc (magick_to_octave_value): New
3522 template function with specializations for various
3523 GraphicsMagick++ types.
3524 (F__magick_finfo__): New function.
3526 2008-09-24 John W. Eaton <jwe@octave.org>
3528 * ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
3529 Add symbol_table::clear_variables cleanup function to the
3530 unwind_protect stack after the parameter list cleanup functions.
3532 * load-path.cc (load_path::do_initialize): Check for OCTAVE_PATH
3533 in the environment, not OCTAVE_LOADPATH.
3535 2008-09-24 Thomas Weber <thomas.weber.mail@gmail.com>
3537 * DLD-FUNCTIONS/regexp.cc (octregexp_list): Retry if match limit
3540 2008-09-24 John W. Eaton <jwe@octave.org>
3542 * genprops.awk (emit_declarations): Emit call to set_mode before
3545 2008-09-23 John W. Eaton <jwe@octave.org>
3547 * pt-arg-list.cc (F__end__): Dispatch to user-defined end
3548 function for classes if one is defined.
3549 * lex.l (is_keyword_token): Allow "end" as a functon name.
3551 2008-09-23 David Bateman <dbateman@free.fr>
3553 * variables.cc (static octave_value do_who (int, const string_vector&,
3554 bool, bool, std::string): Add final message argument and simple
3555 treatment of the "-file" option.
3557 2008-09-22 David Bateman <dbateman@free.fr>
3559 * debug.cc (static octave_user_code * get_user_code
3560 (const std::string&)): Only check user code as break points can't
3561 be set in builtins or oct-files.
3562 (bp_table::intmap bp_table::do_remove_all_breakpoints_in_file
3563 (const std::string&, bool)): Add flag to silence the error message
3564 from this function if a user code with breakpoints is not found.
3565 (bp_table::fname_line_map bp_table::do_get_breakpoint_list (const
3566 octave_value_list&)): Do an ourt of date check on the function
3567 before checking the breakpoints.
3568 * debug.h (do_remove_all_breakpoints_in_file,
3569 remove_all_breakpoints_in_file): Add flag to silence error
3571 * symtab.cc (out_of_date_check_internal): Clear breakpoints in
3572 function if out_of_date. split into two versions taking the
3573 octave_function pointer seperately or not.
3574 * symtab.h (bool out_of_date_check (octave_function*)): New function.
3576 2008-09-18 David Bateman <dbateman@free.fr>
3578 * DLD-FUNCTIONS/fftw.cc (Ffftw): Clarify the documentation.
3580 2008-09-17 Krzesimir Nowak <qdlacz@gmail.com>
3582 * debug.cc (Fisdebugmode): New function.
3584 2008-09-17 David Bateman <dbateman@free.fr>
3586 * data.cc (do_cat): Chopping trailing singleton dimensions.
3588 * data.cc (SINGLE_TYPE_CONCAT, DO_SINGLE_TYPE_CONCAT): New macros
3589 (do_cat): Special case single type concatenations for speed.
3590 * pt.mat.cc (std::string get_concat_class (const std::string&,
3591 const std::string&), void maybe_warn_string_concat (bool, bool)):
3592 Remove static declaration.
3593 * pt-mat.h (std::string get_concat_class (const std::string&,
3594 const std::string&), void maybe_warn_string_concat (bool, bool)):
3597 * DLD-FUNCTIONS/sparse.cc (Fsparse): Clarify the help string.
3599 2008-09-10 John W. Eaton <jwe@octave.org>
3601 * octave.cc (octave_main): Make all command-line arguments
3602 available to startup scripts and PKG_ADD files.
3604 2008-09-09 David Bateman <dbateman@free.fr>
3606 * DLD-FUNCTIONS/regexp.cc (octregexp_list): Distinguish between
3607 matlab named tokens and perl lookbehind expressions. For
3608 lookbehind expression replace "*" and "+" with a limited number of
3609 fixed length expressions to simulate arbitrary length look behind.
3611 2008-09-08 Michael Goffioul <michael.goffioul@gmail.com>
3613 * DLD-FUNCTIONS/__magick_read__.cc (encode_uint_image): Resolve "pow"
3616 * graphics.cc (base_properties::get_dynamic,
3617 base_properties::set_dynamic, base_propertyes::get_property_dynamic):
3618 Add the 3rd template parameter to std::map, corresponding to all_props
3621 2008-09-08 John W. Eaton <jwe@octave.org>
3623 * ls-oct-ascii.cc (std::string extract_keyword (std::istream&,
3624 const char *, const bool)): Also accept \r as line ending character.
3625 * ls-oct-ascii.h (template <class T> bool extract_keyword
3626 (std::istream&, const char *, T&, const bool)): Likewise.
3627 (template <class T> bool extract_keyword (std::istream&, const
3628 string_vector&, std::string&, T&, const bool)): Likewise.
3630 2008-09-03 Ben Abbott <bpabott@mac.com>
3632 * mappers.cc: Use eps(single) as tolerance for single precesion test.
3634 2008-09-03 John W. Eaton <jwe@octave.org>
3636 * variables.cc (mlock): Lock current function on the call stack.
3637 (Fmlock): Lock caller.
3639 * symtab.cc (out_of_date_check_internal): If dispatch type is set,
3640 check for method. If that fails, check for regular function.
3642 2008-09-02 Michael Goffioul <michael.goffioul@gmail.com>
3644 * graphics.cc (hggroup::update_axis_limits): Also reacts on
3645 [xyzac]liminclude changes.
3647 2008-08-31 Michael Goffioul <michael.goffioul@gmail.com>
3649 * DLD-FUNCTIONS/fltk_backend.cc (fltk_backend::redraw_figure,
3650 fltk_backend::print_figure): Change graphics_handle argument to
3653 2008-08-29 David Bateman <dbateman@free.fr>
3655 * src/graphics.cc: Replace int by octave_idx_type in multiple
3657 (array_property::is_equal): In macro CHECK_ARRAY_EQUAL, special
3658 case scalar case and keep copy of array value to avoid early
3659 destruction of converted array values.
3661 2008-08-28 David Bateman <dbateman@free.fr>
3663 * graphics.h.in (root_figure::properties::showhiddenhandles):
3666 2008-08-27 Jaroslav Hajek <highegg@gmail.com>
3668 * DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Initialize output vectors
3671 2008-08-26 Ben Abbott <bpabott@mac.com>
3673 * mappers.cc: Adjust tolerance for single precesion tests.
3675 * DLD-FUNCTIONS/chol.cc: Double tolerance.
3677 2008-08-26 Jaroslav Hajek <highegg@gmail.com>
3679 * parse.y (Fassignin): Use default scope when calling varref.
3681 2008-08-26 Michael Goffioul <michael.goffioul@gmail.com>
3683 * genprops.awk (emit_declarations): Call updaters/listeners only when
3684 'set' method returned true.
3685 * graphics.h.in (base_property::set, base_property::do_set):
3687 (property::set): Likewise.
3688 (string_property::do_set): Check value change and return bool value.
3689 (radio_property::do_set, double_property::do_set,
3690 array_property::do_set): Likewise.
3691 (color_property::do_set, double_radio_property::do_set,
3692 row_vector_property::do_set, bool_property::do_set,
3693 handle_property::do_set): Return bool value.
3694 (any_property::do_set, callback_property::do_set): Return always true.
3695 (color_values::operator==, color_values::operator!=): Add.
3696 (array_property::is_equal): Add.
3697 * graphics.cc (base_property::set): Executes listeners/notifiers only
3698 when do_set returns true. Return bool value.
3699 (color_property::do_set, double_radio_property::do_set): Check value
3700 change and return bool value.
3701 (array_property::is_equal): Add.
3703 * genprops.awk (emit_declarations, emit_source): Change code emission
3704 when emitting base_properties code (base is 1).
3705 (BEGIN): Initialize pcount to 0.
3706 (BEGIN_PROPERTIES): Initialize base to 0.
3707 (BEGIN_BASE_PROPERTIES): New statement.
3708 (main): Add support for 'f' modifier. Add support for non xxx_property
3710 * graphics.h.in (base_properties::base_properties): Remove
3712 (base_properties::get_tag, base_properties::get_parent,
3713 base_properties::get_type, base_properties::get___myhandle__,
3714 base_properties::get_busyaction, base_properties::get_buttondownfcn,
3715 base_properties::is_clipping, base_properties::get_clipping,
3716 base_properties::execute_createfcn, base_properties::get_createfcn,
3717 base_properties::execute_deletefcn, base_properties::get_deletefcn,
3718 base_properties::get_handlevisibility, base_properties::is_hittest,
3719 base_properties::get_hittest, base_properties::is_interruptible,
3720 base_properties::get_interruptible, base_properties::is_selected,
3721 base_properties::get_selected, base_properties::is_selectionhighlight,
3722 base_properties::get_selectionhighlight,
3723 base_properties::get_uicontextmenu, base_properties::get_userdata,
3724 base_properties::is_visible, base_properties::get_visible,
3725 base_properties::is_beingdeleted, base_properties::get_beingdeleted,
3726 base_properties::set_busyaction, base_properties::set_buttondownfcn,
3727 base_properties::set_clipping, base_properties::set_createfcn,
3728 base_properties::set_deletefcn, base_properties::set_handlevisibility,
3729 base_properties::set_hittest, base_properties::set_interruptible,
3730 base_properties::set_selected,
3731 base_properties::set_selectionhighlight,
3732 base_properties::set_uicontextmenu, base_properties::set_userdata,
3733 base_properties::set_visible, base_properties::set_beingdeleted,
3734 base_properties::get_children): Remove (now auto-generated).
3735 (base_properties::enum): Likewise.
3736 (base_properties::is_modified): Call is___modified__.
3737 (base_properties::set_modified): Call set___modified__.
3738 (base_properties::set_children): Add.
3739 (base_properties::set_dynamic, base_properties::get_dynamic,
3740 base_properties::get_property_dynamic): New methods.
3741 (class base_properties): Surround properties declaration with
3742 BEGIN_BASE_PROPERTIES/END_PROPERTIES pair.
3743 * graphics.cc (base_properties::get, base_properties::set,
3744 base_properties::get_property): Remove (now auto-generated).
3745 (base_properties::set_dynamic, base_properties::get_dynamic,
3746 base_properties::get_property_dynamic): New methods.
3747 (base_properties::set_children): Likewise.
3749 * DLD_FUNCTIONS/fltk_backend.cc (F__fltk_redraw__): Make static.
3750 (F__init_fltk__): Protect from mutliple invocations.
3751 (F__remove_fltk__): Likewise.
3752 (F__init_fltk__): Register input event hook.
3753 (F__remove_fltk__): Unregister input event hook.
3755 * DLD_FUNCTIONS/fltk_backend.cc (fltk_backend::close_figure): Remove.
3756 (fltk_backend::object_destroyed, fltk_backend::property_changed): New
3758 * genprops.awk (emit_declarations): Generate "enum" property fields.
3759 (emit_sources): Emit set_id calls.
3760 * graphics.h.in (base_property::id): New field.
3761 (base_property::base_property): Initialize it.
3762 (base_property::get_id, base_property::set_id): Add accessors.
3763 (property::get_id, property::set_id): Likewise.
3764 (base_graphics_backend::close_figure, graphics_backend::close_figure):
3766 (base_graphics_backend::redraw_figure,
3767 base_graphics_backend::print_figure, graphics_backend::redraw_figure,
3768 graphics_backend::print_figure): Change graphics_handle argument into
3770 (base_graphics_backend::property_changed,
3771 base_graphics_backend::object_created,
3772 base_graphics_backend::object_destroyed,
3773 graphics_backend::property_changed, graphics_backend::object_created,
3774 graphics_backend::object_destroyed): New signature with
3775 graphics_object argument.
3776 (base_properties::base_properties): Add set_id calls.
3777 (class base_properties): Add "enum" property fields.
3778 (root_figure::properties::remove_child): Add overloaded method.
3779 (figure::properties::close): Remove.
3780 (figure::properties::set_backend): Call object_destroyed instead of
3782 (figure::~figure): Remove close call.
3783 (figure::properties::get_title): New method.
3784 * graphics.cc (base_property::set): Call property_changed only for
3785 valid id (>=0); Use graphics_object argument.
3786 (gh_manager::do_free): Call object_destroyed with graphics_object
3788 (base_graphics_backend::property_changed,
3789 base_graphics_backend::object_created,
3790 base_graphics_object::object_destroyed): Implement wrappers for
3791 graphics_handle argument case.
3792 (gnuplot_backend::close_figure): Remove.
3793 (gnuplot_backend::object_destroyed,
3794 gnuplot_backend::property_changed): New methods.
3795 (gnuplot_backend::redraw_figure, gnuplot_backend::print_figure):
3796 Change graphics_handle argument to graphics_object.
3797 (root_figure::properties::remove_child): Add.
3798 (figure::properties::close): Remove.
3799 (figure::properties::set_position): Do not call set_figure_position.
3800 (figure::properties::get_title): New method.
3801 (gh_manager::do_make_graphics_handle): Call object_created with
3802 a graphics_object argument.
3803 (gh_manager::do_make_figure_handle): Likewise.
3804 (Fdrawnow): Call redraw_figure and print_figure with a graphics_object
3807 2008-08-26 Maciek Gajewski <maciej.gajewski0@gmail.com>
3809 * graphics.h.in (base_property::set): Remove inline implementation.
3810 (base_graphics_backend::property_changed,
3811 base_graphics_backend::object_created,
3812 base_graphics_backend::object_destroyed): New method.
3813 (graphics_backend::property_changed, graphics_backend::object_created,
3814 graphics_backend::object_destroyed): Likewise.
3815 * graphics.cc (base_property::set): Moved from header file.
3816 (gh_manager::do_free): Add backend notification.
3817 (gh_manager::do_make_graphics_handle): Likewise.
3818 (gh_manager::do_make_figure_handle): Likewise.
3820 2008-08-25 Thomas L. Scofield <scofield@calvin.edu>
3822 * DLD-FUNCTIONS/__magick_read__.cc: Untabify.
3823 (jpg_settings, encode_bool_image, encode_uint_image, encode_map):
3825 (write_image): Use them to handle various image types.
3827 2008-08-25 David Bateman <dbateman@free.fr>
3829 * graphics.cc (void gh_manager::do_execute_callback
3830 (const graphics_handle&, const octave_value&, const
3831 octave_value&)): Don't pass the function handle as first arg of
3832 property listener functions
3834 * graphics.h.in (class base_properties): Add functor for caseless
3835 string comparison. Use it in the property map, so that user added
3836 properties are found in a case insensitive fashion.
3838 2008-08-22 John W. Eaton <jwe@octave.org>
3840 * symtab.h (symbol_table::inherit): Pass reference to symbol table
3841 to do_inherit instead of scope.
3842 (symbol_table::do_inherit): First arg is now reference to
3843 symbol_table, not scope id. Insert all variables from donor scope.
3845 2008-08-21 Thomas Treichl <Thomas.Treichl@gmx.net>
3847 * mappers.cc: Increase test script tolerance.
3849 2008-08-20 John W. Eaton <jwe@octave.org>
3851 * help.cc (builtin_help): Go to next symbol name on error.
3852 (do_type, do_which): Omit separate path search for files.
3853 (help_from_symbol_table): Only insert Texinfo markup if it looks
3854 like the help message is already in Texinfo.
3856 2008-08-19 David Bateman <dbateman@free.fr>
3858 * load-path.cc (load-path::do_find_dir (const std:string&) const)):
3859 Method to find a directory on the load-path corresponding to the
3861 * load-path.h (load-path::do_find_dir (const std:string&) const),
3862 load-path::find_dir (const std::string&) const): New methods.
3863 * utils.cc (std::string contents_file_in_path (const std::string&)):
3865 * utils.h (std::string contents_file_in_path (const std::string&)):
3867 * help.cc (static bool raw_help_from_file (const std::string&,
3868 std::string&, std::string&, bool&)): Also check is requested
3869 argument is a directory and contains the file Contents.m.
3871 * OPERATORS/op-int-conv.cc (DEFINTCONVFN): New macro that warn
3872 for integer conversion issues. Use it to replace DEFCONVFN.
3873 * OPERATORS/op-int.h (DEFINTBINOP_OP, DEFINTNDBINOP_OP,
3874 DEFINTBINOP_FN, DEFINTNDBINOP_FN): New macros that warn for
3875 integer truncation issues. Use them to replace the corresponding
3876 macros in the integer arithmetic macros. Update other integer
3877 arithmetic functions that don't use these macros individually.
3878 * error.cc (initialize_default_warning_state (void)): Initialize
3879 the default warning state for the integer warnings to be off.
3880 * gripes.cc (void gripe_binop_integer_math_truncated (const char *,
3881 const char *, const char *), void gripe_unop_integer_math_truncated
3882 (const char *, const char *), void gripe_non_integer_conversion
3883 (const char *, const char *), void gripe_nan_conversion (const char *,
3884 const char *)): Warning functions for integer conversion and math
3886 * gripes.h (void gripe_binop_integer_math_truncated (const char *,
3887 const char *, const char *), void gripe_unop_integer_math_truncated
3888 (const char *, const char *), void gripe_non_integer_conversion
3889 (const char *, const char *), void gripe_nan_conversion (const char *,
3890 const char *)): Declare them.
3891 * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::convert_gripe,
3892 OCTAVE_VALUE_INT_SCALAR_T::convert_gripe): Adapt for new means of
3893 flagging integer truncation.
3894 (OCTAVE_VALUE_INT_MATRIX_T::decrement,
3895 OCTAVE_VALUE_INT_MATRIX_T::increment,
3896 OCTAVE_VALUE_INT_SCALAR_T::decrement,
3897 OCTAVE_VALUE_INT_SCALAR_T::increment): Check for integer
3899 * ov.cc (convert_to_int_array): Adapt for new means of
3900 flagging integer truncation.
3902 2008-08-19 Jaroslav Hajek <highegg@gmail.com>
3904 * pt-assign.h (tree_simple_assignment::first_execution): New
3906 (tree_simple_assignment::first_execution): Ditto.
3907 * pt-assign.cc (tree_simple_assignment::tree_simple_assignment):
3908 Initialize first_execution.
3909 (tree_multi_assignment::tree_multi_assignment): Ditto.
3910 (tree_simple_assignment::rvalue): Check for obsolete built-in
3911 variables only at first execution.
3912 (tree_multi_assignment::rvalue): Ditto.
3914 * DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Checks whether LB and UB are
3917 * oct-obj.cc, oct-obj.h (octave_value_list::make_argv):
3918 Allow calling without fcn_name.
3919 * load-save.cc (parse_save_options (const string_vector&, ...)):
3920 Return string_vector with parsed arguments removed instead.
3921 (parse_save_options (const std::string&, ...)): Ditto.
3922 (Fsave): Fix calls to parse_save_options.
3924 2008-08-19 John W. Eaton <jwe@octave.org>
3926 * parse.y (Feval): Return value produced by evaluating CATCH string.
3928 2008-08-12 John W. Eaton <jwe@octave.org>
3930 * pt-fcn-handle.cc (tree_anon_fcn_handle::rvalue):
3931 Call stash_parent_function_scope for user function.
3932 * ov-fcn-inline.cc (octave_fcn_inline::octave_fcn_inline):
3935 * ov-struct.cc (octave_struct::subsref): Don't allow resizing for
3938 2008-08-07 John W. Eaton <jwe@octave.org>
3940 * ov.cc (octave_value::idx_type_value): Don't include default
3941 argument values in definition.
3943 * src/glrender.h, src/zfstream.h: Don't include config.h.
3945 * oct-errno.h: Include <cerrno>.
3947 * Cell.cc, DLD-FUNCTIONS/regexp.cc, DLD-FUNCTIONS/dlmread.cc,
3948 debug.cc, error.cc, file-io.cc, graphics.cc, help.cc, input.cc,
3949 lex.l, load-path.cc, load-save.cc, ls-mat-ascii.cc,
3950 ls-oct-ascii.cc, oct-stream.cc, octave.cc, variables.cc,
3951 ov-fcn-handle.cc, parse.y, pr-output.cc, symtab.cc, sysdep.cc,
3952 utils.cc, graphics.h.in: Replace all uses of NPOS with
3955 * ov.cc (octave_value::idx_type_value): Move definition here.
3958 * DLD-FUNCTIONS/fsolve.cc (override_options): Don't fail if
3959 options_map does not contain an expected keyword.
3960 Fix typo in warning identifier.
3961 (make_unimplemented_options): Use CamelCase names here.
3963 2008-08-06 Søren Hauberg <hauberg@gmail.com>
3965 * error.cc (Ferror): Update format of error messages in exmple.
3966 * parse.y: (Feval): Likewise.
3968 2008-08-06 John W. Eaton <jwe@octave.org>
3970 * DLD-FUNCTIONS/fsolve.cc (hybrd_info_to_fsolve_info):
3971 Update INFO values to be compatible with Matlab's current fsolve.
3972 (make_unimplemented_options, override_options): New functions.
3973 (Ffsolve): Handle optimset options. Update doc string.
3975 * ov-usr-fcn.cc (octave_user_function::do_multi_index_op,
3976 octave_user_script::do_multi_index_op):
3977 Call octave_call_stack::backtrace_error_message.
3978 * toplev.h (octave_call_stack::do_pop): Don't call
3979 backtrace_error_message here.
3980 * toplev.cc, toplev.h (octave_call_stack::do_backtrace_error_message):
3981 Rename from octave_call_stack::backtrace_error_message.
3982 * toplev.h (octave_call_stack::backtrace_error_message):
3983 New public static function.
3985 2008-08-05 John W. Eaton <jwe@octave.org>
3987 * gripes.cc (gripe_truncated_conversion,
3988 gripe_logical_conversion): Don't declare as extern here.
3989 * utils.cc (octave_format, octave_vformat): Likewise.
3990 * pr-output.cc (octave_print_internal (std::ostream&, const Cell&,
3991 bool, int, bool)): Likewise.
3993 * toplev.cc (octave_call_stack::backtrace_error_message): New
3995 * toplev.h: Provide decl.
3996 (octave_call_stack::do_pop): Call backtrace_error_message if
3997 error_state is nonzero.
3999 * pt-unop.cc (tree_prefix_expression::eval_error,
4000 tree_postfix_expression::eval_error): Delete. Eliminate all uses.
4001 * pt-unop.h: Delete decls.
4003 * pt-select.cc (tree_switch_case::eval_error,
4004 tree_switch_command::eval_error): Delete. Eliminate all uses.
4005 (tree_if_command::eval): Omit "evaluating if command" message.
4006 * pt-select.h: Delete decls.
4008 * pt-loop.cc (tree_while_command::eval_error,
4009 tree_complex_for_command::eval_error,
4010 tree_simple_for_command::eval_error,
4011 tree_do_until_command::eval_error): Delete. Eliminate all uses.
4012 * pt-loop.h: Delete decls.
4014 * pt-exp.cc (tree_expression::is_logically_true): Omit "evaluating
4015 conditional expression" error message.
4017 * pt-decl.cc (tree_global_command::eval): Omit "evaluating global
4018 command" error message.
4019 (tree_static_command::eval): Omit "evaluating static command"
4022 * pt-colon.cc (tree_colon_expression::eval_error): Omit
4023 "evaluating colon expression" error message.
4024 * pt-colon.h (tree_colon_expression::eval_error): Eliminate
4025 default argument value.
4027 * pt-idx.cc (tree_index_expression::eval_error): Delete.
4029 * pt-idx.h: Delete decl.
4031 * pt-binop.cc (tree_binary_expression::eval_error): Delete.
4032 * pt-binop.cc, pt-cbinop.cc: Eliminate all uses of eval_error.
4033 * pt-binop.h: Delete decl.
4035 * pt-assign.cc (tree_simple_assignment::eval_error,
4036 tree_multi_assignment::eval_error): Delete. Eliminate all uses.
4037 * pt-assign.h: Delete decls.
4039 * ov-usr-fcn.cc (octave_user_script::traceback_error,
4040 octave_user_function::traceback_error): Delete. Eliminate all uses.
4041 * ov-usr-fcn.h: Delete decls.
4043 * ov-builtin.cc (octave_builtin::do_multi_index_op): Call
4044 gripe_library_exectuion_error on octave_execution_exception.
4045 * ov-mex-fcn.cc (octave_mex_function::do_multi_index_op): Likewise.
4046 * ov.cc (do_binary_op, do_cat_op, do_unary_op,
4047 do_non_const_unary_op): Likewise.
4048 * pt-stmt.cc (tree_statement::eval): Likewise.
4050 * gripes.cc (gripe_library_execution_error): New function.
4051 * gripes.h: Provide decl.
4053 * dirfns.cc (Fpathsep): Fix usage of dir_path::path_sep_str.
4054 * defaults.cc (set_exec_path, set_image_path): Likewise.
4055 * load-path.h (load_path::set_command_line_path): Likewise.
4056 * load-path.cc (maybe_add_path_elts, load_path::do_initialize,
4057 load_path::do_path, genpath, Fpath): Likewise.
4058 (split_path): Fix usage of dir_path::path_sep_char.
4060 2008-08-04 John W. Eaton <jwe@octave.org>
4062 * symtab.cc (symbol_table::fcn_info::fcn_info_rep::find_autoload):
4063 Fix usage of file_ops::dir_sep_chars.
4064 * variables.cc (looks_like_struct):
4066 * ov-fcn-handle.cc (octave_fcn_handle::set_fcn): Likewise.
4067 * octave.cc (execute_command_line_file): Likewise.
4068 * ls-mat5.cc (read_mat5_binary_element): Likewise.
4069 * load-save.cc (find_file_to_load): Likewise.
4070 * load-path.cc (load_path::do_find_file): Likewise.
4071 * graphics.cc (drawnow): Likewise.
4072 * parse.y (frob_function): Likewise.
4074 * octave.cc (initialize_pathsearch): Fix usage of
4075 file_ops::dir_sep_str.
4076 * help.cc (Flookfor): Likewise.
4077 * dirfns.cc (Ffilesep): Likewise.
4078 (Fautoload): Likewise.
4080 * defaults.cc (subst_octave_home): Fix usage of
4081 file_ops::dir_sep_char.
4082 (Fmfilename): Likewise.
4084 2008-07-31 John W. Eaton <jwe@octave.org>
4086 * parse.y (assign_lhs): Call force_local_variable on all elements
4087 of lexer_flags.pending_local_variables here, then clear the set.
4088 (matrix): Clear lexer_flags.pending_local_variable here.
4089 * lex.l (lexical_feedback::init): Clear it.
4090 (force_local_variable): No longer static.
4091 (is_variable): Also return true for names in the
4092 lexer_flags.pending_local_variables.
4093 (handle_identifier): If we are parsing a matrix list, mark
4094 identifiers as pending local variables rather than forcing them to
4095 be local variables immediately.
4096 * lex.h (lexical_feedback::pending_local_variables): New data member.
4097 (force_local_variable): Provide decl.
4099 2008-07-30 John W. Eaton <jwe@octave.org>
4101 * ov-intx.h, ov.cc: Style fixes.
4103 * gripes.cc (gripe_truncated_conversion): Use the warning ID
4104 Octave:int-convert-overflow.
4106 2008-07-30 Jaroslav Hajek <highegg@gmail.com>
4108 * gripes.cc (gripe_truncated_conversion): New function.
4109 * gripes.h (gripe_truncated_conversion): Declare it.
4110 * ops.h (DEFCONVFNX2): New macro.
4111 (DEFCONVFN, DEFCONVFN2): Call DEFCONVFNX2 instead of DEFCONVFNX.
4112 * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::convert_gripe): New member
4114 (OCTAVE_VALUE_INT_MATRIX_T::int*_array_value): Call convert_gripe.
4115 (OCTAVE_VALUE_INT_SCALAR_T::convert_gripe): New member function.
4116 (OCTAVE_VALUE_INT_SCALAR_T::int*_scalar_value): Call convert_gripe.
4117 (OCTAVE_VALUE_INT_SCALAR_T::int*_array_value): Call int*_scalar_value.
4118 * ov.cc (convert_to_int_array): New function.
4119 (int_vector_value): Call convert_to_int_array.
4121 2008-07-30 John W. Eaton <jwe@octave.org>
4123 * defun-dld.h (DEFUNX_DLD): Eliminate fsname arg.
4124 * defun-int.h (DEFINE_FUN_INSTALLER_FUN2,
4125 DEFINE_FUN_INSTALLER_FUN3, DEFINE_FUNX_INSTALLER_FUN2): Delete.
4126 (DEFINE_FUNX_INSTALLER_FUN): Rename from DEFINE_FUNX_INSTALLER_FUN3.
4127 Don't emit fsname function. Don't append cxx_abi to gname.
4128 (DEFINE_FUN_INSTALLER_FUN): Define in terms of
4129 DEFINE_FUNX_INSTALLER_FUN, not DEFINE_FUN_INSTALLER_FUN2.
4130 * dynamic-ld.cc (octave_dynamic_loader::name_mangler,
4131 octave_dynamic_loader::name_uscore_mangler): New functions.
4132 (octave_dynamic_loader::mangle_name,
4133 octave_dynamic_loader::xmangle_name): Delete.
4134 (octave_dynamic_loader::do_load_oct): Search for function with
4135 name_mangler then name_uscore_mangler.
4137 * oct-stream.cc (do_read): New arg, do_NA_conv.
4138 Perform NA translation if do_NA_conv is true.
4139 (DO_READ_VAL_TEMPLATE, read_fptr): Include the new arg for do_read
4141 (octave_stream::read): Pass do_NA_conv to do_read.
4143 2008-07-29 David Bateman <dbateman@free.fr>
4145 * data.cc (FNA): Add tests for conversion of single to double NA
4148 * ov-flt-re-mat.cc (Fsingle): Documentation fix.
4150 2008-07-28 David Bateman <dbateman@free.fr>
4152 * error.cc (last_error_id, last_error_message, last_warning_id,
4153 last_warning_message): New functions to return the error/warning
4154 message and id without exposing the internal values.
4155 * error.h (last_error_id, last_error_message, last_warning_id,
4156 last_warning_message): Declare them.
4157 * DLD-FUNCTIONS/cellfun.cc (Fcellfun): Use them to pass the error
4158 to the ErrorHandler function.
4160 2008-07-28 John W. Eaton <jwe@octave.org>
4162 * error.cc (Flasterror, Flasterr): Unwind-protect error_state.
4164 * DLD-FUNCTIONS/__magick_read__.cc (F__magick_write__, write_image):
4167 2008-07-25 John W. Eaton <jwe@octave.org>
4169 * DLD-FUNCTIONS/det.cc (Fdet): Return calculated determinant for
4170 numerically singular matrices, not 0.
4172 * symtab.cc (get_dispatch_type): New function.
4173 (symbol_table::fcn_info::fcn_info_rep::find): Use it.
4175 * ov-class.cc (set_class_relationship): Delete static function.
4176 (Fsuperiorto, Finferiorto): Warn about precedence conflicts.
4177 Call symbol_table::set_class_relationship instead of local static
4179 * symtab.h (symbol_table::class_precedence_table): New data member.
4180 (symbol_table::set_class_relationship, symbol_table::is_superiorto):
4181 New static functions.
4183 2008-07-24 John W. Eaton <jwe@octave.org>
4185 * load-path.h (load_path::dir_info::class_info): New struct.
4186 (load_path::dir_info::method_file_map_type): Now a map from
4187 class name to a to a class_info object. Change all uses.
4188 * load-path.cc (load_path::dir_info::get_method_file_map):
4189 Also look for private functions in the class directory.
4190 (load_path::add_to_method_map): Also add private functions from
4191 class directories to private_fcn_map.
4193 * dirfns.cc (Fmkdir): If directory already exists, return status =
4194 true, but also set error message.
4196 2008-07-23 John W. Eaton <jwe@octave.org>
4198 * ov-usr_fcn.cc (octave_user_function::do_multi_index_op):
4199 Don't unwind_protect and set curr_parent_function here.
4200 * toplev.cc (curr_parent_function): Delete definition.
4201 * toplev.h: (curr_parent_function): Delete declaration.
4203 * ov-usr-fcn.h (octave_user_function::parent_scope): New data member.
4204 (octave_user_function::parent_fcn_scope,
4205 octave_user_function::stash_parent_fcn_scope): New functions.
4206 * ov-usr_fcn.cc (octave_user_function::octave_user_function):
4207 Initialize parent_scope.
4208 * symtab.cc (symbol_table::fcn_info::fcn_info_rep::find):
4209 Check parent of current function by looking at call stack, not
4210 global curr_parent_function variable.
4211 * parse.y (frob_function): If parsing nested function, stash
4212 current parent function scope.
4213 * ov-fcn.h (octave_function::parent_fcn_scope): New virtual function.
4215 2008-07-22 Michael Goffioul <michael.goffioul@gmail.com>
4217 * graphics.cc (F__go_execute_callback__): New function.
4219 * DLD-FUNCTIONS/fltk_backend.cc: Undefine min/max after FLTK headers
4222 * graphics.h.in (class base_graphics_event, class graphics_event): New
4223 classes (replace gh_manager::event_data).
4224 (class gh_manager::event_data): Remove.
4225 (gh_manager::post_function, gh_manager::do_post_function): Use
4226 graphics_event::event_fcn type.
4227 (gh_manager::event_queue, gh_manager::do_post_event): Use
4228 graphics_event type.
4229 * graphics.cc (class callback_event, class function_event, class
4230 set_event): Renamed from xxx_data classes.
4231 (graphics_event::create_callback_event,
4232 graphics_event::create_function_event,
4233 graphics_event::create_set_event): Renamed from gh_manager::xxx
4234 equivalent methods, removed reference count increment.
4235 (gh_manager::do_post_event): Likewise.
4236 (gh_manager::do_post_event): Use graphics_event type.
4237 (gh_manager::do_post_function): Use graphics_event::event_fcn type.
4239 2008-07-22 John W. Eaton <jwe@octave.org>
4241 * version.h (OCTAVE_VERSION): Now 3.1.51+.
4243 2008-07-21 John W. Eaton <jwe@octave.org>
4245 * version.h (OCTAVE_VERSION): Now 3.1.51.
4246 (OCTAVE_RELEASE_DATE): Now 2008-07-21.
4248 * ov-class.cc (octave_class::subsasgn): Only do internal magic if
4249 rhs is not an octave_class object.
4251 * OPERATORS/op-struct.cc: Define concatenation operators for
4252 struct/matrix concatenation (valid if matrix is empty).
4253 * OPERATORS/op-cell.cc (install_cell_ops): Likewise, for cells.
4255 * DLD-FUNCTIONS/fltk_backend.cc: Don't include oct.h.
4256 Make compilation of entire file conditional on HAVE_FLTK.
4258 * gl-render.cc: Make compilation of entire file conditional on
4261 * Makefile.in (GL_RENDER_SRC, FLTK_BACKEND_SRC): Delete variables.
4262 (DLD_XSRC): Always include fltk_backend.cc in the list.
4263 (DIST_SRC): Always include gl-render.cc in the list.
4265 2008-07-19 John W. Eaton <jwe@octave.org>
4267 * version.h (OCTAVE_VERSION): Now 3.1.50+.
4268 (OCTAVE_API_VERSION): Now api-v33+.
4270 2008-07-18 John W. Eaton <jwe@octave.org>
4272 * version.h (OCTAVE_VERSION): Now 3.1.50.
4273 (OCTAVE_API_VERSION): Now api-v33.
4274 (OCTAVE_RELEASE_DATE): Now 2008-07-18.
4275 (OCTAVE_COPYRIGHT): Update date to 2008.
4277 2008-07-18 John W. Eaton <jwe@octave.org>
4279 * Makefile.in (__magick_read__.df): New rule.
4280 Append MAGICK_INCFLAGS to CPPFLAGS.
4282 * Makefile.in (EXTRAS): Add graphics-props.cc to the list.
4283 List graphics-props.cc as a target generated by genprops.awk.
4285 2008-07-18 Carlo de Falco <carlo.defalco@gmail.com>
4287 * gl-render.h: Conditionally include GL/gl.h or OpenGL/gl.h
4288 and GL/glu.h or OpenGL/glu.h
4290 2008-07-17 John W. Eaton <jwe@octave.org>
4292 * symtab.cc (out_of_date_check_internal): New arg, dispatch_type.
4293 Use it to handle class methods.
4295 * toplev.h (octave_call_stack::do_caller): New function.
4296 (octave_call_stack::caller): Use it.
4298 2008-07-17 Jaroslav Hajek <highegg@gmail.com>
4300 * Makefile.in (convhulln.oct, __delaunayn__.oct, __voronoi__.oct,
4301 regexp.oct, urlwrite.oct, __glpk__.oct, fltk_backend.oct):
4302 Use OCT_LINK_DEPS instead of DL_LDFLAGS for target-specific
4305 2008-07-17 David Bateman <dbateman@free.fr>
4307 * DLD-FUNCTION/__magick_read__.cc (F__magick_read__): Allow build
4308 without GraphicsMagick++ installed.
4310 2008-07-16 John W. Eaton <jwe@octave.org>
4312 * graphics.h.in (gh_manager::autolock): Delete copy constructor
4313 and assignment definitions.
4315 2008-07-16 Michael Goffioul <michael.goffioul@gmail.com>
4317 * graphics.h.in (callback_property::execute): Remove static version.
4318 (base_properties::is_hittest, base_properties::is_interruptible,
4319 base_properties::is_selected, base_properties::is_selectionhighlight):
4320 New convenience property accessors.
4321 (base_graphics_object::get_handle, graphics_object::get_handle): Idem.
4322 (gh_manager::graphics_lock): New global mutex
4323 (gh_manager::lock, gh_manager::unlock, gh_manager::do_lock,
4324 gh_manager::do_unlock): Add accessors for it.
4325 (gh_manager::autolock): New class for easy locking of the graphics
4327 (gh_manager::event_data): New class for event management.
4328 (gh_manager::event_queue): New object to hold pending events.
4329 (gh_manager::callback_objects): New stack of callback objects.
4330 (gh_manager::execute_callback, gh_manager:post_callback,
4331 gh_manager::post_function, gh_manager::post_set,
4332 gh_manager::process_events, gh_manager::flush_events,
4333 gh_manager::restore_gcbo): New static methods for event management.
4334 (gh_manager::do_execute_callback, gh_manager::do_post_callback,
4335 gh_manager::do_post_function, gh_manager::do_post_set,
4336 gh_manager::do_process_events, gh_manager::do_post_event,
4337 gh_manager::do_restore_gcbo): New non-static versions.
4338 * graphics.cc (xreset_gcbo): Remove.
4339 (execute_callback): Likewise.
4340 (base_property::run_listeners, callback_property::execute): Use
4341 gh_manager::execute_callback.
4342 (class callback_event_data, class function_event_data, class
4343 set_event_data): New classes to implement various types of events.
4344 (gh_manager::event_data::create_callback_event,
4345 gh_manager::event_data::create_function_event,
4346 gh_manager::event_data::create_set_event): Implement event factory
4348 (gh_manager::do_restore_gcbo, gh_manager::do_execute_callback,
4349 gh_manager::do_post_event, gh_manager::do_post_callback,
4350 gh_manager::do_post_function, gh_manager::do_post_set,
4351 gh_manager::do_process_events): New methods for event management.
4352 (Fishandle, Fset, Fget, F__get__, F__go_figure__, F__go_delete__,
4353 F__go_axes_init__, F__go_handles__, F__go_figure_handles__,
4354 Favailable_backends, Fdrawnow, Faddlistener, Faddproperty,
4355 get_property_from_handle, set_property_in_handle): Lock graphics
4357 (GO_BODY): Likewise.
4358 (Fdrawnow): Support single "expose" argument.
4360 2008-07-15 John W. Eaton <jwe@octave.org>
4362 * DLD-FUNCTIONS/__convn__.cc (convn): Cast second arg to
4363 octave_idx_type in call to std::max.
4365 2008-07-14 John W. Eaton <jwe@octave.org>
4367 * Makefile.in (convhulln.oct, __delaunayn__.oct, __voronoi__.oct,
4368 regexp.oct, urlwrite.oct, __glpk__.oct, fltk_backend.oct):
4369 Simplify with target-specific settings for DL_LDFLAGS.
4371 * DLD-FUNCTIONS/__magick_read__.cc: Delete "using namespace std"
4372 and "using namespace Magick" directives. Style fixes.
4374 * oct-conf.h.in (OCTAVE_CONF_MAGICK_INCFLAGS,
4375 OCTAVE_CONF_MAGICK_LIBS): Substitute here.
4376 * toplev.cc (octave_config_info): Include MAGICK_INCFLAGS and
4377 MAGICK_LIBS in the struct.
4378 * Makefile.in (DLD_XSRC): Add __magick_read__.cc to the list.
4379 (OCTAVE_LIBS): Add $(MAGICK_LIBS) to the list for static linking case.
4380 (__magick_read__.d, __magick_read__.o, pic/__magick_read__.o):
4381 Append MAGICK_INCFLAGS to CPPFLAGS.
4382 (__magick_read__.oct): Append MAGICK_LIBS to LDFLAGS.
4384 2008-07-14 Thomas L. Scofield <scofield@calvin.edu>
4386 * DLD-FUNCTIONS/__magick_read__.cc: New file from Octave Forge.
4388 2008-07-11 John W. Eaton <jwe@octave.org>
4390 * syscalls.cc (const_value): Delete arg NM. Change all uses.
4392 * DLD-FUNCTIONS/fft.cc (do_fft): Avoid GCC warning.
4393 * DLD-FUNCTIONS/fft2.cc (do_fft2): Likewise.
4394 * DLD-FUNCTIONS/fftn.cc (do_fftn): Likewise.
4395 * DLD-FUNCTIONS/qr.cc (Fqrshift): Likewise.
4396 * DLD-FUNCTIONS/lookup.cc (Flookup): Likewise.
4397 * gl-render.cc (opengl_renderer::draw): Likewise.
4398 * graphics.cc (axes::update_axis_limits,
4399 hggroup::update_axis_limits, Favailable_backends):
4401 * pt-cmd.cc (tree_no_op_command::dup, tree_function_def::dup):
4403 * pt-const.cc (tree_constant::dup): Likewise.
4404 * pt-id.cc (tree_identifier::dup): Likewise.
4405 * pt-jump.cc (tree_break_command::dup, tree_continue_command::dup,
4406 tree_return_command::dup): Likewise.
4408 * DLD-FUNCTIONS/colamd.cc: Style fixes.
4409 (tree_postorder): Rename from TreePostorder.
4410 (tree_postorder, coletree): Avoid GCC warnings.
4412 * DLD-FUNCTIONS/chol.cc (Fchol): Avoid GCC warnings.
4413 (Fcholdelete, Fcholshift): Delete unused arg nargout.
4415 * toplev.cc, toplev.h (octave_call_stack::caller_user_function,
4416 octave_call_stack::caller_user_script,
4417 octave_call_stack::do_caller_user_function,
4418 octave_call_stack::do_caller_user_script):
4419 Delete functions and decls.
4421 * defun.cc (print_usage): Call octave_call_stack::caller_user_code,
4422 not octave_call_stack::caller_user_function.
4423 * debug.cc (get_user_code): Likewise.
4425 * toplev.h (octave_call_stack::difference_type): Delete typedef.
4426 * toplev.cc, toplev.h (octave_call_stack::caller_user_code_line,
4427 octave_call_stack::do_caller_user_code_line,
4428 octave_call_stack::caller_user_code_column,
4429 octave_call_stack::do_caller_user_code_column,
4430 octave_call_stack::caller_script,
4431 octave_call_stack::do_caller_script,
4432 octave_call_stack::caller_user_function,
4433 octave_call_stack::do_caller_user_function,
4434 octave_call_stack::caller_user_code,
4435 octave_call_stack::do_caller_user_code):
4436 Delete unused difference_type arg.
4438 * ov-float.h, ov-flt-re-mat.cc, ov-range.h, ov-re-mat.h,
4439 ov-re-sparse.cc, ov-scalar.h: Check for NaN in bool_value and
4440 bool_array_value member functions to bool.
4442 * ops.h (DEFSCALARBOOLOP_OP): New macro.
4443 * OPERATORS/op-s-s.cc, OPERATORS/op-fs-fs.cc: Use it to define
4444 el_and and el_or ops.
4446 2008-07-10 David Bateman <dbateman@free.fr>
4448 * DLD-FUNCTIONS/lookup.cc (assign): Delete.
4449 (Flookup): Use new NDArray constructors rather than assign.
4450 * data.cc (Fsort): Use new NDArray constructors rather than
4452 * besselj.cc (int_array2_to_matrix, int_arrayn_to_array,
4453 int_array2_to_float_matrix, int_arrayn_to_float_array): Delete.
4454 (do-bessel): Use new NDArray constructors.
4455 * max.cc (MINMAX_SPARSE_BODY, MINMAX_INT_BODY, MINMAX_SINGLE_BODY,
4456 MINMAX_DOUBLE_BODY): Use new NDArray constructors.
4457 * ov-bool.h (array_value, float_array_value): Explictly cast
4458 boolean scalar to double before the assignment to avoid ambiguity.
4460 2008-07-10 David Bateman <dbateman@free.fr>
4462 * ls-mat4.cc (read_mat_binary_data, save_mat_binary_data): Add
4463 loading and saving of sparse matrices.
4465 2008-07-10 Michael Goffioul <michael.goffioul@gmail.com>
4467 * Makefile.in: Add OPENGL_LIBS to liboctinterp link command. Add
4468 GRAPHICS_CFLAGS to fltk_backend.cc compilation command.
4469 * data.cc: Define hypotf to _hypotf when not present.
4470 * gl-render.h: Replace OCTGRAPHICS_API with OCTINTERP_API.
4471 * gl-render.cc: Get rid of Array2<vertex_data>.
4472 * OPERATORS/op-int.h: Use powf instead of pow when invoked
4473 with float arguments.
4475 2008-07-09 John W. Eaton <jwe@octave.org>
4477 * input.cc (get_debug_input): Don't delete global_command here.
4478 * toplev.cc (main_loop): Undo previous change.
4480 * toplev.h (octave_call_stack::instance_ok): Push top scope when
4483 * DLD-FUNCTIONS/inv.cc (Finv): Avoid GCC warning.
4485 * DLD-FUNCTIONS/expm.cc (Fexpm): Avoid GCC warning.
4487 * ov-fcn-inline.cc (octave_fcn_inline::load_ascii): Avoid GCC warning.
4489 2008-07-09 Michael Goffioul <michael.goffioul@gmail.com>
4491 * gl-render.cc (opengl_renderer::draw(figure)): Enable line smoothing
4492 according to __enhanced__ property.
4493 (opengl_renderer::draw_marker): Only draw markers with valid call
4495 (opengl_renderer::make_marker_list): Do not produce filled marker call
4496 list for non-fillable markers.
4497 (opengl_renderer::draw(axes)): Do not antialias axes system.
4499 * gl-render.cc (opengl_renderer::set_polygon_offset): Also enable
4500 polygon offseting in GL_LINE mode.
4501 (opengl_renderer::draw_marker): Offset markers foward instead of
4502 backward (to draw them above lines).
4504 * Makefile.in: new substituted variables GL_RENDER_SRC and
4507 * gl-render.cc (vertex_data::vertex_data_rep::vertex_data(void),
4508 vertex_data::vertex_data(void), vertex_data::vertex_data(...)):
4509 initialize reference counting correctly.
4511 2008-07-09 John W. Eaton <jwe@octave.org>
4513 * toplev.cc (main_loop): Unwind-protect global_command.
4514 * input.cc (get_debug_input): Likewise.
4516 2008-07-09 David Bateman <dbateman@free.fr>
4518 * pt-id.cc (octave_value_list tree_identifier::rvalue (int),
4519 octave_lvalue tree_identifier::lvalue (void)): Remove
4520 MAYBE_DO_BREAKPOINT.
4522 2008-07-08 John W. Eaton <jwe@octave.org>
4524 * graphics.h.in (axes::properties::keypos): Declare as
4525 any_property instead of double_property.
4527 2008-06-28 John W. Eaton <jwe@octave.org>
4529 * debug.cc (push_dummy_call_stack_elt): Delete.
4530 (Fdbstack): Don't push dummy stack elt. Use nskip instead of
4531 nframes, and curr_frame instead of idx. Pass curr_frame to
4532 octave_call_stack::backtrace.
4534 * ls-mat5.cc (read_mat5_binary_element): Explicitly pass 0 for
4535 current_context in call to symbol_table::varref.
4536 * ov-fcn-handle.cc (octave_fcn_handle::load_ascii): Likewise.
4539 * mex.cc (mexGetVariable, mexPutVariable): Use octave_call_stack
4540 methods to manipulate scope and context.
4541 * parse.y (source_file, Fassignin, Fevalin): Likewise.
4543 * ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
4544 Call octave_call_stack::push after call to symbol_table::push_scope.
4545 Call unwind_protect::add with octave_call_stack::unwind_pop
4546 immediately after call to octave_call_stack::push.
4548 * symtab.cc (symbol_table::xcurrent_caller_scope): Delete definition.
4549 * symtab.h (symbol_table::xcurrent_caller_scope): Delete decl.
4551 (xcurrent_context_this_table): Delete. Delete all uses.
4552 (symbol_table::current_caller_scope): Delete.
4554 * toplev.cc (octave_call_stack::do_num_user_code_frames):
4556 (octave_call_stack::do_backtrace): New arg, curr_user_frame.
4557 Rename nframes arg to nskip. Correctly handle curr_frame not at
4559 (octave_call_stack::do_goto_frame_relative): Rename n arg to nskip.
4560 Correctly handle curr_frame not at end of stack.
4561 (octave_call_stack::do_goto_caller_frame): New function.
4562 (octave_call_stack::do_goto_base_frame): New function.
4563 * toplev.h: Provide decls for new functions.
4564 (octave_call_stack::call_stack_elt::prev): New data member.
4565 Initialize it in constructor.
4566 (octave_call_stack::const_reverse_iterator,
4567 octave_call_stack::reverse_iterator): New typedefs.
4568 (octave_call_stack::symbol_table::scope_id current_scope,
4569 octave_call_stack::symbol_table::context_id current_context,
4570 octave_call_stack::num_user_code_frames,
4571 octave_call_stack::goto_caller_frame,
4572 octave_call_stack::goto_base_frame,
4573 octave_call_stack::do_num_user_code_frames,
4574 octave_call_stack::do_current_scope,
4575 octave_call_stack::do_current_context): New functions.
4577 (octave_call_stack::push): Default value for context arg is
4578 symbol_table::current_context, not 0.
4579 (octave_call_stack::do_push): Save previous frame. Always push
4580 new frame on back of stack. Call symbol_table::set_scope_and_context.
4581 (octave_call_stack::do_pop): Restore previous frame. Always pop
4582 frame from back of stack. Call symbol_table::set_scope_and_context.
4584 2008-06-26 John W. Eaton <jwe@octave.org>
4586 * token.h: Omit "class symbol_table::symbol_record" decl;
4588 * lex.l (grab_block_comment): Use parens around || expression
4589 within && expression.
4591 2008-06-23 John W. Eaton <jwe@octave.org>
4593 * debug.cc (Fdbstack): Avoid shadowed variable warning.
4595 2008-06-23 Jaroslav Hajek <highegg@gmail.com>
4597 * genprops.awk (emit_source): Avoid gensub for portability.
4600 2008-06-20 Jaroslav Hajek <highegg@gmail.com>
4602 * DLD-FUNCTIONS/regexp.cc (octregexp_list): Make "once" an output
4604 (octregexp): Do not use cell arrays when "once" is requested.
4606 * ov.cc (make_vector_dims): New function.
4607 (vector_value, complex_vector_value, float_vector_value,
4608 float_complex_vector_value): Query N-d array values and simplify,
4610 (column_vector_value, complex_column_vector_value,
4611 float_column_vector_value, float_complex_column_vector_value,
4612 row_vector_value, complex_row_vector_value,
4613 float_row_vector_value, float_complex_row_vector_value):
4614 Simplify to trivial wrappers.
4615 (int_vector_value): Avoid conversions if integer type, query N-d array
4618 2008-06-17 John W. Eaton <jwe@octave.org>
4620 * toplev.h, toplev.cc (class octave_call_stack):
4621 Push elements on and pop from back of queue.
4622 (octave_call_stack::do_push, octave_call_stack::do_pop):
4623 Always adjust curr_frame.
4624 (octave_call_stack::size, octave_call_stack::do_size): New functions.
4625 * pt-stmt.cc (tree_statement::eval):
4626 Also call octave_call_stack::set_statement when debugging.
4627 * debug.cc (push_dummy_call_stack_elt): New function.
4628 (Fdbstack): Omit dbstack from call stack by popping element rather
4629 than adjusting frame number. Correctly handle arg.
4631 2008-06-12 David Bateman <dbateman@free.fr>
4633 * DLD-FUNCTIONS/qr.cc (Fqrupdate, Fqrinsert, Fqrshift, Fqrdelete):
4634 Allow single precision arguments, add tests for single precision.
4636 2008-06-11 John W. Eaton <jwe@octave.org>
4638 * ov-base.cc (octave_base_value::streamoff_value,
4639 octave_base_value::streamoff_array_value): Delete.
4640 * ov-base.h: Delete decls.
4641 (octave_base_value::is_streamoff): Delete.
4642 * ov-float.cc (octave_float_scalar::streamoff_value,
4643 octave_float_scalar::streamoff_array_value): Delete.
4644 * ov-float.h: Delete decls.
4645 * ov-flt-re-mat.cc (octave_float_matrix::streamoff_array_value): Delete.
4646 * ov-flt-re-mat.h: Delete decl.
4647 * ov-re-mat.cc (octave_matrix::streamoff_array_value): Delete.
4648 * ov-re-mat.h: Delete decl.
4649 * ov-re-sparse.cc (octave_sparse_matrix::streamoff_array_value): Delete.
4650 * ov-re-sparse.h: Delete decl.
4651 * ov-scalar.cc (octave_scalar::streamoff_value,
4652 octave_scalar::streamoff_array_value): Delete.
4653 * ov-scalar.h: Delete decls.
4654 * ov.cc (octave_value::octave_value (const streamoff_array&),
4655 octave_value::octave_value (const ArrayN<std::streamoff>&),
4656 octave_value::streamoff_value (void) const,
4657 octave_value::streamoff_array_value (void) const): Delete.
4658 * ov.h: Delete decls.
4659 (octave_value::is_streamoff): Delete.
4660 * ov.cc (install_types): Don't register streamoff type.
4661 * ov-streamoff.h, ov-streamoff.cc, OPERATORS/op-streamoff.cc: Delete.
4662 * Makefile.in: Delete them from the lists.
4664 * error.cc (verror): Restore newline in msg_string. Stripping
4665 "error: " prefix when buffering error messages is no longer neeed.
4667 2008-06-25 David Bateman <dbateman@free.fr>
4669 * pr-output.cc (Frats): Print usage if nargin == 0.
4671 2008-06-10 John W. Eaton <jwe@octave.org>
4673 * mexproto.h (mxCreateLogicalScalar): Declar arg as mxLogical, not int.
4675 2008-06-09 John W. Eaton <jwe@octave.org>
4677 * graphics.cc (execute_callback): Pass CB by const reference and
4678 explicitly make a copy.
4679 (xget_ancestor): Pass GO by const reference and explicitly make a copy.
4681 * error.cc (verror): Omit "name: " and "\a" from Vlast_error_msg.
4682 Save line and column information from user code.
4683 * toplev.cc (octave_call_stack::do_caller_user_code_line,
4684 octave_call_stack::do_caller_user_code_column): New functions.
4685 * toplev.h: Provide decls.
4686 (octave_call_stack::caller_user_code_line,
4687 octave_call_stack::caller_user_code_column): New functions.
4688 (octave_call_stack::current_line, octave_call_stack::current_column):
4689 Default return value is -1, not 0.
4691 2008-06-06 John W. Eaton <jwe@octave.org>
4693 * ov.h (octave_value::erase_subfunctions):
4695 * ov-base.h (octave_base_value::erase_subfunctions):
4696 New virtual function.
4697 * ov-usr-fcn.h (octave_user_function::erase_subfunctions):
4699 * symtab.h (symbol_table::fcn_info::::erase_subfunction,
4700 symbol_table::fcn_info::fcn_info_rep::erase_subfunction,
4701 symbol_table::erase_subfunctions_in_scope):
4703 (symbol_table::fcn_info::fcn_info_rep::clear_user_function):
4704 Erase subfunctions here.
4706 * variables.cc (Fmlock): Doc fix.
4708 2008-06-05 John W. Eaton <jwe@octave.org>
4710 * gl-render.cc (opengl_renderer::draw): Correctly avoid shadow
4711 warnings from gcc for xmin, xmax, ymin, ymax, zmin, and zmax.
4713 * graphics/ChangeLog, graphics/Makefile.in, graphics/Makerules.in,
4714 graphics/fltk_backend/Makefile.in, graphics/opengl/Makefile.in:
4717 * gl-render.cc, gl-render.h: Move here from src/graphics/opengl.
4718 * Makefile.in: Add them to the appropriate lists.
4719 (octave$(EXEEXT)): Also link with $(OPENGL_LIBS)
4721 * fltk_backend.cc: Move here from src/graphics/fltk_backend.
4722 * Makefile.in (DLD_XSRC): Add it to the list
4723 (fltk_backend.oct): Include special rules for linking with
4724 $(GRAPHICS_LIBS) and $(FT2_LIBS).
4726 * dynamic-ld.cc (octave_dynamic_loader::mex_mangler,
4727 octave_dynamic_loader::mex_uscore_mangler,
4728 octave_dynamic_loader::mex_f77_mangler): New functions.
4729 (octave_dynamic_loader::do_load_mex): Use them.
4730 (octave_dynamic_loader::do_remove_oct): Rename from
4731 octave_dynamic_loader::do_remove.
4732 (octave_dynamic_loader::do_remove_mex): New function.
4733 * dynamic-ld.h: Provide/fix decls.
4735 * graphics.cc (properties::update_normals): Style fixes.
4736 * graphics.h.in: Style fixes.
4738 ChangeLog entries for gl-render.h, gl-render.cc, and
4739 fltk_backend.cc before the move:
4741 2008-06-05 John W. Eaton <jwe@octave.org>
4743 * opengl/gl-render.cc (xmin): New static function.
4745 * opengl/gl-render.h (opengl_renderer): Style fixes.
4746 * fltk_backend/fltk_backend.cc: Style fixes.
4748 2008-04-26 Michael Goffioul <michael.goffioul@gmail.com>
4750 * opengl/gl-render.h (opengl_renderer::draw(hggroup)): New method.
4751 * opengl/gl-render.cc (opengl_renderer::draw(hggroup)): Likewise.
4752 (opengl_renderer::draw(graphics_object)): Call it.
4754 2008-03-17 Shai Ayal <shaiay@users.sourceforge.net>
4756 * fltk_backend/fltk_backend.cc (plot_window::resize,
4757 plot_window::draw): make canvas the size of figure.position
4759 2008-03-09 Shai Ayal <shaiay@users.sourceforge.net>
4761 * fltk_backend/fltk_backend.cc (plot_window::handle): add zoom
4764 2008-03-06 Shai Ayal <shaiay@users.sourceforge.net>
4766 * fltk_backend/fltk_backend.cc (plot_window::handle): Add handling
4767 of the 'a' and 'g' keys
4768 (plot_window: toggle_grid): New helper function
4769 (plot_window): Add new togglegrid button
4771 2008-03-01 Shai Ayal <shaiay@users.sourceforge.net>
4773 * fltk_backend/fltk_backend.cc (OpenGL_fltk::draw_overlay,
4774 OpenGL_fltk::zoom, OpenGL_fltk::set_zoom_box): Added to support
4776 (plot_window::handle): Added zoom box code, B-3 now does autoscale
4777 (plot_window::axis_auto): New utility function to call axis("auto")
4778 (plot_window::button_press): "A" button now does autoscale
4780 * opengl/gl-render.cc (make_marker_list): Add the "+x*.^v><"
4783 2008-02-27 Michael Goffioul <michael.goffioul@gmail.com>
4785 * opengl/gl-render.cc (opengl_renderer::draw(patch),
4786 opengl_renderer::draw(surface)): Adapt to type change of facealpha and
4787 edgealpha, using double_radio_property class.
4789 2008-02-26 Michael Goffioul <michael.goffioul@gmail.com>
4791 * opengl/gl-render.h: Make sure windows.h is included before OpenGL
4793 * fltk_backend/Makefile.in (FLTK_EXTRA_CXXFLAGS): Use $(srcdir) for
4794 includesion of OpenGL renderer headers.
4795 (Makeconf): Move inclusion of Makeconf later on, to avoid freezing
4798 * fltk_backend/Makefile.in (GRAPHICS_CFLAGS): New substituted
4801 2008-02-25 Shai Ayal <shaiay@users.sourceforge.net>
4803 * fltk_backend/fltk_backend.cc (class plot_window): Many changes
4804 to use figure::properties instead of figure handle to reference
4806 (class figure_manager): ditto
4807 (__fltk_redraw__): moved most of functionality into the
4808 figure_manager class
4809 (plot_window::pixel2pos): Modified to use axes::pixel2coord
4810 (plot_window::pixel2staus): Modified to use pixel2pos
4811 (plot_window::handle): Added zoom with mouse
4813 2008-02-24 Shai Ayal <shaiay@users.sourceforge.net>
4815 * fltk_backend/fltk_backend.cc (OpenGL_fltk::Draw): removed double
4817 (OpenGL_fltk::setup_viewport): removed call to glOrtho --
4818 gl-render takes care of all the transformations
4820 2008-02-23 Shai Ayal <shaiay@users.sourceforge.net>
4822 * fltk_backend/fltk_backend.cc (plot_window::mark_modifed): mark
4823 the whole window as damaged (otherwise changing figure.postion
4824 does not have immediate effect)
4825 (plot_window::draw): New function, checks for window size
4826 (__fltk_maxtime__): New DEFUN to allow tweaking of fltk timeout
4827 (__fltk_redraw__): Use fltk_maxtime as timeout
4829 2008-02-21 Michael Goffioul <michael.goffioul@gmail.com>
4831 * opengl/gl-render.cc (opengl_renderer::patch_tesselator::combine):
4832 Protect against NULL vertex data.
4834 * opengl/gl-render.cc (opengl_renderer::draw(patch)): Add marker
4835 rendering of patch objects.
4837 2008-02-21 Shai Ayal <shaiay@users.sourceforge.net>
4839 * opengl/gl-render.cc: remove OpenGL includes
4840 * opengl/gl-render.h: add OpenGL includes
4841 * fltk_backend/fltk_backend.cc: remove OpenGL includes
4842 (__fltk_redraw__): put figure handle into the figure's
4843 __plot_stream__ property for later
4844 (fltk_backend::close_figure): use argument as figure handle to
4847 2008-02-20 Shai Ayal <shaiay@users.sourceforge.net>
4849 * fltk_backend/Makefile.in: initial import
4851 * fltk_backend/fltk_backend.cc: initial import
4854 2008-02-20 Michael Goffioul <michael.goffioul@gmail.com>
4856 * opengl/gl-render.h (opengl_renderer::draw(patch)): New method to
4857 render patch objects.
4858 (class opengl_renderer::patch_tesselator): Forward declaration.
4859 * opengl/gl-render.cc (opengl_texture::create): Use RGB data format
4861 (class opengl_tesselator): New classes to abstract GLU tessellation
4863 (class opengl_renderer::patch_tesselator): New class to render opaque
4865 (class vertex_data): New class to hold vertex data during tessellation
4867 (opengl_renderer::draw(patch)): New method to render patch objects (no
4868 transparency, no border, no marker yet).
4869 (opengl_renderer::draw(graphics_object)): Dispatch to it.
4871 * opengl/gl-render.cc (opengl_renderer::draw(patch)): Use patch color
4872 data and support face/vertex single color specification.
4874 * opengl/gl-render.cc (opengl_tesselator::begin_polygon): Set
4875 tessellation property also for non-filled polygons.
4876 (opengl_renderer::patch_tesselator::vertex): Protect against empty
4878 (opengl_renderer::draw(patch)): Render patch border (no transparency
4881 2008-02-19 Michael Goffioul <michael.goffioul@gmail.com>
4883 * opengl/gl-render.cc (opengl_texture::texture_rep::tex_coord,
4884 opengl_texture::tex_coord): New wrapper around glTexCoord2d.
4885 (opengl_renderer::draw(surface)): Use it for texturemap
4887 (opengl_renderer::draw(surface)): Fix indexing bug when creating clip
4889 (opengl_texture::operator=): Add assignment operator.
4890 (opengl_texture::create): New static opengl_texture creator.
4891 (opengl_texture::is_valid): New accessor.
4893 2008-02-18 Michael Goffioul <michael.goffioul@gmail.com>
4895 * opengl/gl-render.cc (class opengl_texture): New class to wrap
4896 texture operations in OpenGL.
4898 2008-02-17 Michael Goffioul <michael.goffioul@gmail.com>
4900 * opengl/gl-render.cc (opengl_renderer::draw(surface)): Set material
4901 color when rendering surface facets.
4903 * opengl/gl-render.cc (opengl_renderer::draw(surface)): Add rendering
4904 of mesh and markers.
4906 2008-02-16 Michael Goffioul <michael.goffioul@gmail.com>
4908 * opengl/gl-render.cc (opengl_renderer::draw(figure)): Initialize the
4909 OpenGL context correctly.
4910 (opengl_renderer::draw(surface)): Add missing glEnd call.
4912 2008-02-14 Michael Goffioul <michael.goffioul@gmail.com>
4914 * opengl/gl-render.h opengl/gl-render.cc: Add rendering
4915 interface for surface objects (actual implement still
4918 2008-02-14 Michael Goffioul <michael.goffioul@gmail.com>
4920 * Makefile.in Makerules.in: Initial import
4921 * opengl/Makefile.in: Likewise.
4922 * opengl/gl-render.h opengl/gl-render.cc: Likewise.
4924 2008-06-04 Shai Ayal <shaiay@users.sourceforge.net>
4926 * graphics.cc (axes::properties::set_defaults): Preserve position
4928 (axes::properties::sync_positions): Use default_axes_postion for
4931 * graphics.h.in (axes::properties::sync_positions,
4932 axes::properties::update_position,
4933 axes::properties::update_outerposition): New functions to sync
4934 outerposition and position.
4936 * graphics.h.in (axes::properties::update_xlim,
4937 axes::properties::update_ylim, axes::properties::update_zlim):
4938 pass is_logscale flag to axes::properties::calc_ticks_and_lims
4939 * graphics.cc (axes::properties::calc_ticks_and_lims): Added
4940 support for log scale
4942 * graphics.h.in (axes::properities::fix_limits) : New method.
4943 (axes::properties::update_xlim, axes::properties::update_ylim,
4944 axes::properties::update_zlim): Use fix_limits.
4946 * graphics.cc (axes::properties::calc_ticks_and_lims): Make sure
4949 * graphics.h.in (axes::pixel2coord, axes::coord2pixel): New functions.
4951 * graphics.cc (convert_position): No longer static.
4952 * graphics.h.in: Provide decl.
4954 * graphics.cc (Favailable_backends): New function.
4955 * graphics.h.in (base_graphics_backend::available_backends_list):
4958 * graphics.cc (axes::properties::calc_ticks_and_lims): Refactor.
4959 Adjust axes limits & tics together so that the result is consistent.
4960 (axes::properties::calc_tick_sep): Ditto.
4961 (axes::properties::get_axis_limits): Ditto. Now a member of
4963 (magform): Now file-scope static function instead of
4964 axes::properties member function.
4966 * graphics.h.in (axes::properties::update_xlim): call the new
4967 axes::properties::calc_ticks_and_lims method
4968 (axes::properties::update_ylim): ditto
4969 (axes::properties::update_zlim): ditto
4971 2008-06-04 Michael Goffioul <michael.goffioul@gmail.com>
4973 * ov-fcn-inline.h (class octave_fcn_inline): Mark with OCTINTERP_API.
4974 * ov-fcn-handle.h (class Octave_fcn_handle): Likewise.
4975 * ls-oct-binary.h (save_binary_data, read_binary_data): Likewise.
4977 * genprops.awk (emit_source): Fix if-then-else statement generation
4978 when the first property is hidden.
4979 * graphics.h.in (base_properties::adopt): Call mark_modified.
4980 (class hggroup): New graphics object class.
4981 * graphics.cc (lookup_object_name, make_graphics_object_from_type,
4982 property_list::lookup, property_list::set,
4983 root_figure::init_factory_properties): Support hggroup as possible
4985 (hggroup::update_axis_limits): New graphics object class.
4986 (make_graphics_object): Look for "parent" property in the arguments
4987 and use it as actual parent for the created object.
4988 (F__go_hggroup__): New function.
4989 (F__go_delete__): Set Vdrawnow_requested to true.
4991 * graphics.h.in (base_property::clone, string_property::clone,
4992 radio_property::clone, color_property::clone, double_property::clone,
4993 double_radio_property::clone, array_property::clone,
4994 row_vector_property::clone, bool_property::clone,
4995 handle_property::clone, callback_property::clone, any_property::clone,
4996 property::clone): New virtual method.
4997 (property::create): New static method to create dynamic properties.
4998 (base_properties::has_property): New method to check the existence of
5000 (any_property::any_property, row_vector_property::row_vector_property,
5001 double_radio_property::double_radio_property): New copy constructors.
5002 * graphics.cc (lookup_object_name): New static utility function.
5003 (make_graphics_object_from_type): Likewise.
5004 (gh_manager::do_make_graphics_handle): Use it.
5005 (dprop_obj_map): New static map used for chaching purpose in dynamic
5007 (property::create): New static method to create dynamic properties.
5008 (base_properties::has_property): New method to check the existence of
5010 (base_properties::override_defaults): Check parent validity.
5011 (Faddlistener): Documentation fix.
5012 (Faddproperty): New function to create dynamic properties.
5014 * genprops.awk (emit_get_array): Don't produce get_xxx_property
5016 * graphics.h.in (array_property::get_limits): New method to return the
5018 (base_properties::get_xdata_property,
5019 base_properties::get_ydata_property,
5020 base_properties::get_zdata_property,
5021 base_properties::get_ldata_property,
5022 base_properties::get_udata_property,
5023 base_properties::get_xldata_property,
5024 base_properties::get_xudata_property,
5025 base_properties::get_cdata_property): Remove methods, replaced with
5026 limit-based equivalent.
5027 (base_graphics_object::get_xdata_property,
5028 base_graphics_object::get_ydata_property,
5029 base_graphics_object::get_zdata_property,
5030 base_graphics_object::get_ldata_property,
5031 base_graphics_object::get_udata_property,
5032 base_graphics_object::get_xldata_property,
5033 base_graphics_object::get_xudata_property,
5034 base_graphics_object::get_cdata_property): Likewise.
5035 (graphics_object::get_xdata_property,
5036 graphics_object::get_ydata_property,
5037 graphics_object::get_zdata_property,
5038 graphics_object::get_ldata_property,
5039 graphics_object::get_udata_property,
5040 graphics_object::get_xldata_property,
5041 graphics_object::get_xudata_property,
5042 graphics_object::get_cdata_property): Likewise.
5043 (base_properties::get_xlim, base_properties::get_ylim,
5044 base_properties::get_zlim, base_properties::get_clim,
5045 base_properties::get_alim, base_properties::is_xliminclude,
5046 base_properties::is_yliminclude, base_properties::is_zliminclude,
5047 base_properties::is_climinclude, base_properties::is_aliminclude):
5049 (base_graphics_object::get_xlim, base_graphics_object::get_ylim,
5050 base_graphics_object::get_zlim, base_graphics_object::get_clim,
5051 base_graphics_object::get_alim, base_graphics_object::is_xliminclude,
5052 base_graphics_object::is_yliminclude,
5053 base_graphics_object::is_zliminclude,
5054 base_graphics_object::is_climinclude,
5055 base_graphics_object::is_aliminclude): Likewise.
5056 (graphics_object::get_xlim, graphics_object::get_ylim,
5057 graphics_object::get_zlim, graphics_object::get_clim,
5058 graphics_object::get_alim, graphics_object::is_xliminclude,
5059 graphics_object::is_yliminclude, graphics_object::is_zliminclude,
5060 graphics_object::is_climinclude, graphics_object::is_aliminclude):
5062 (base_graphics_object::update_axis_limits): Provide default behavior
5063 by passing the call to the parent object.
5064 (line::properties::xdata, line::properties::ydata,
5065 line::properties::zdata, line::properties::ldata,
5066 line::properties::udata, line::properties::xldata,
5067 line::properties::xudata): Replace 'l' modifier with 'u'.
5068 (line::properties::xlim, line::properties::ylim,
5069 line::properties::zlim, line::properties::xliminclude,
5070 line::properties::yliminclude, line::properties::zliminclude): New
5072 (line::properties::update_xdata, line::properties::update_ydata,
5073 line::properties::update_zdata, line::properties::update_xldata,
5074 line::properties::update_xudata, line::properties::update_ldata,
5075 line::properties::update_udata): New updaters that update limit
5077 (line::properties::compute_xlim, line::properties::compute_ylim): New
5078 method to compute actual limits taking into account x/y data and
5080 (text::properties::position): Add 'u' modifier.
5081 (text::properties::xlim, text::properties::ylim,
5082 text::properties::zlim, text::properties::xliminclude,
5083 text::properties::yliminclude, text::properties::zliminclude): New
5085 (text::properties::update_position): New updater that updates limit
5087 (image::properties::xdata, image::properties::ydata,
5088 image::properties::cdata): Replace 'l' modifier with 'u'.
5089 (image::properties::cdatamapping): Add 'l' modifier.
5090 (image::properties::xlim, image::properties::ylim,
5091 image::properties::clim, image::properties::xliminclude,
5092 image::properties::yliminclude, image::properties::climinclude): New
5094 (image::properties::get_climinclude,
5095 image::properties::is_climinclude): Provide specialized inline
5097 (image::properties::update_xdata, image::properties::update_ydata,
5098 image::properties::update_cdata): New updaters that update limit
5100 (patch::properties::xdata, patch::properties::ydata,
5101 patch::properties::zdata, patch::properties::cdata): Replace 'l'
5103 (patch::properties::cdatamapping): Add 'l' modifier.
5104 (patch::properties::alphadatamapping): New property.
5105 (patch::properties::xlim, patch::properties::ylim,
5106 patch::properties::zlim, patch::properties::clim,
5107 patch::properties::alim, patch::properties::xliminclude,
5108 patch::properties::yliminclude, patch::properties::zliminclude,
5109 patch::properties::climinclude, patch::properties::aliminclude: New
5111 (patch::properties::get_climinclude,
5112 patch::properties::is_climinclude, patch::properties::get_aliminclude,
5113 patch::properties::is_aliminclude): Provide specialized inline
5115 (patch::properties::update_xdata, patch::properties::update_ydata,
5116 patch::properties::update_zdata, patch::properties::update_cdata): New
5117 updaters that update limit properties.
5118 (surface::properties::xdata, surface::properties::ydata,
5119 surface::properties::zdata, surface::properties::cdata,
5120 surface::properties::alphadata): Replace 'l' modifier with 'u'.
5121 (surface::properties::cdatamapping,
5122 surface::properties::alphadatamapping): Add 'l' modifier.
5123 (surface::properties::xlim, surface::properties::ylim,
5124 surface::properties::zlim, surface::properties::clim,
5125 surface::properties::alim, surface::properties::xliminclude,
5126 surface::properties::yliminclude, surface::properties::zliminclude,
5127 surface::properties::climinclude, surface::properties::aliminclude: New
5129 (surface::properties::get_climinclude,
5130 surface::properties::is_climinclude,
5131 surface::properties::get_aliminclude,
5132 surface::properties::is_aliminclude): Provide specialized inline
5134 (surface::properties::update_xdata, surface::properties::update_ydata,
5135 surface::properties::update_zdata): Update limit properties.
5136 (surface::properties::update_cdata,
5137 surface::properties::update_alphadata): New updaters that update limit
5139 * graphics.cc (base_properties::update_axis_limits): Simply call
5140 update_axis_limits in owning graphics_object.
5141 (base_graphics_object::update_axis_limits): Provide default behavior
5142 by passing the call to the parent object.
5143 (check_limits_vals(double&,double&,double&,const octave_value&)): New
5144 static method to work with new limit properties in graphics objects.
5145 (get_children_limits): New static method to compute the raw limits of
5146 a set of children, based on the new limit properties.
5147 (axes::update_axis_limits): Simplify and call get_children_limits. Add
5148 handling of alpha limits.
5149 (line::properties::compute_xlim, line::properties::compute_ylim): New
5150 methods to compute line limits taking into account upper/lower bounds.
5152 * graphics.cc (axes::properties::sync_positions): Update
5153 transformation data.
5155 * graphics.cc (Faddlistener): Rename from Fadd_listener.
5157 * graphics.h.in (axes::properties::pixel2coord): Center Z coordinate
5158 on x_zlim instead of 0.
5159 (axes::properties::zoom, axes::properties::unzoom,
5160 axes::properties::clear_zoom_stack): New methods to handle zoom stack.
5161 (axes::properties::zoom_stack): New field to hold zoom stack.
5162 (axes::properties::update_xlim, axes::properites::update_ylim):
5163 Additional do_clr_zoom argument to control whether the zoom stack will
5165 (axes::properties::update_zlim): Clear zoom stack.
5166 * graphics.cc (axes::properties::zoom, axes::properties::unzoom,
5167 axes::properties::clear_zoom_stack): New methods to handle zoom stack.
5169 * genprops.awk (emit_source): Use all properties in factory defaults.
5171 * graphics.h.in (base_property::base_property): Set internal counter
5173 (property::property): Adapt constructors to default counter value in
5176 * graphics.h.in (base_properties::get_property): Make virtual and
5177 remove const modifier.
5178 * graphics.cc (base_properties::get_property): Can return built-in
5179 properties. Generate an error if the property does not exist.
5180 (base_properties::add_listener): Use get_property.
5181 (Fadd_listener): Add documentation.
5182 * genprops.awk (emit_common_declarations, emit_source): Emit code for
5183 overloaded get_property method.
5185 * genprops.awk (emit_declarations): Run listeners in the property
5187 * graphics.h.in (enum listener_mode): New enum type for listeners.
5188 (base_property::set): Make non-virtual and handle listeners execution.
5189 (base_property::listeners): New field holding a map of listeners.
5190 (base_property::add_listener, base_property::run_listeners,
5191 base_property::do_set): New methods to handle listeners.
5192 (property::add_listener, property::run_listeners): Likewise.
5193 (base_properties::add_listener): Likewise.
5194 (base_graphics_object::add_property_listener,
5195 graphics_object::add_property_listener): Likewise.
5196 (all property classes): Rename set to do_set and make it protected.
5197 * graphics.cc (base_property::run_listeners): New method to execute
5199 (color_property::set, double_radio_property::set,
5200 handle_property::set): Rename to do_set.
5201 (base_properties::add_listener): New method to handle listener
5202 additio. Only handle dynamic properties.
5203 (Fadd_listener): New octave interface to add property listeners to
5206 * genprops.awk (emit_get_data): Remove.
5207 (emit_declarations): Treat row_vector_property as array_property and
5208 remove data_property references.
5209 * graphics.h.in (array_property::array_property(array_property)): Add
5211 (class data_property): Remove (replaced by array_property).
5212 (class base_graphics_backend, class graphics_backend): Replace
5213 data_property references with array_property.
5214 (line::properties::xdata, line::properties::ydata,
5215 line::properties::zdata, line::properties::ldata,
5216 line::properties::udata, line::properties::xldata,
5217 line::properties::xudata): Turn into row_vector_property.
5218 (image::properties::xdata, image::properties::ydata): Likewise.
5219 (image::properties::init): Add length constraints for xdata and ydata.
5220 (patch::properties::xdata, patch::properties::ydata,
5221 patch::properties::zdata, patch::properties::facevertexalphadata):
5222 Turn into array_property.
5223 (surface::properties::xdata, surface::properties::ydata,
5224 surface::properties::zdata): Likewise.
5225 (patch::properties::init): Add size constraints for xdata, ydata,
5226 zdata and facevertexalphadata.
5227 (surface::properties::init): Add size constraints for xdata, ydata and
5229 * graphics.cc (check_limit_vals): Remove override with data_property.
5230 (axes::update_axis_limits): Replace data_property references with
5233 * graphics.h.in (root_figure::get_default): Use factory defaults when
5234 no explicit default value exists.
5235 (figure::properties::set___backend__): Reset __plot_stream__ to empty
5237 * graphics.cc (gh_manager::gh_manager): Call
5238 graphics_backend::default_backend to make sure the default backend is
5241 * graphics.h.in (patch::properties::edgealpha,
5242 surface::properties::facealpha, surface::properties::edgealpha): Fix
5243 typos in property names.
5245 * graphics.h.in (class double_radio_property): New property class for
5246 holding face/edge alpha values.
5247 (patch::properties::facealpha, patch::properties::edgealpha,
5248 surface::properties::facealpha, surface::properties::edgealpha): Use
5249 double_radio_property class.
5250 * graphics.cc (double_radio_property::set): Implement new property
5252 * genprops.awk (emit_get_double_radio): New function to emit code for
5253 double_radio_property.
5254 (emit_declarations): Use it.
5256 * graphics.h.in (array_property::array_property(void)): New default
5258 (array_property::xmin, array_property:xmax, array_property::xminp,
5259 array_property::min_val, array_property::max_val,
5260 array_property::min_pos): New fields and accessors to hold min/max
5261 values of the array data.
5262 (array_property::get_data_limits): New method to compute min/max
5263 values of the array data.
5264 (base_properties::get_cdata_property,
5265 graphics_object::get_cdata_property): Return array_property.
5266 (image::properties::cdata, surface::properties::cdata,
5267 patch::properties::cdata, patch::properties::facevertexcdata): Turn
5268 into array_property type.
5269 (image::properties::init, surface::properties::init,
5270 patch::properties::init): Add constraint initialization for cdata and
5271 facevertexcdata (patch only).
5272 * genprops.awk (emit_get_array): New function to emit accessor for
5274 (emit_declarations): Use it.
5275 * graphics.cc (get_array_limits): New template function to compute
5276 min/max values of an Array<T> object.
5277 (array_property::get_data_limits): New method to compute min/max
5278 values of the array data, using get_array_limits.
5279 (check_limit_vals): Overridden function with array_property.
5280 (axes::update_axis_limits): Turn cdata property into array_property.
5282 * graphics.h.in (patch::properties::get_color_data): New utility
5283 function to retrieve actual color data.
5284 * graphics.cc (patch::properties::get_color_data): Likewise.
5286 * graphics.h.in (base_scaler::is_linear, lin_scaler::is_linear,
5287 scaler::is_linear): New method to detect linear scales.
5288 (graphics_xform::scale(Matrix)): New method to scale 2D/3D coordinates
5290 (patch::properties::facelighting): Set default value to "none".
5292 * graphics.h.in (axes::axes): Be sure to initialize transformation
5295 * graphics.cc (xget_ancestor): Pass graphics_object argument by value
5296 instead of by reference.
5298 * graphics.h.in (surface::properties::xdata,
5299 surface::properties::ydata, surface::properties::zdata,
5300 surface::properties::normalmode, surface::properties::vertexnormals):
5302 (surface::properties::update_normals): New method to compute normals
5304 (surface::properties::update_xdata, surface::properties::update_ydata,
5305 surface::properties::update_zdata,
5306 surface::properties::update_normalmode,
5307 surface::properties::update_vertexnormals): New updaters to update
5308 normals automatically.
5309 * graphics.cc (surface::properties::update_normals): Likewise.
5310 (cross_product): New inlined utility function for cross product
5311 computation adn accumulation.
5313 * graphics.h.in (class base_scaler, class lin_scaler, class
5314 log_scaler, class scaler): Add scale method for NDArray.
5315 (log_scaler::do_scale): Factorize scaling code.
5317 * graphics.h.in (figure::properties::update_position): Re-remove.
5318 (figure::properties::facecolor): Re-add 'texturemap' value.
5319 (surface::properties::get_color_data): New method to compute actual
5320 surface color data from cdata.
5321 * graphics.cc (surface::properties::get_color_data): Likewise.
5322 (xget_ancestor): New utility function to retrieve an ancestor of a
5324 (convert_cdata): New utility function to convert cdata property into
5327 * graphics.h.in (surface::properties::facecolor): Add "texturemap"
5329 (class surface::properties): New properties alphadata,
5330 alphadatmapping, ambientstrength, backfacelighting, diffusestrength,
5331 edgealpha, edgelighting, erasemode, facelighting, meshstyle,
5332 normalmode, specularcolorreflectance, specularexponent,
5333 specularstrength, vertexnormals.
5334 (surface::properties::init): Add constraints for alphadata,
5335 vertexnormals and cdata (the latter are commented until cdata
5338 * graphics.h.in (base_properties::update_boundingbox): New method
5339 to handle object resize.
5340 (figure::properties::set_boundingbox): New method to set figure
5341 position from backend.
5342 (figure::properties::update_position): Remove method.
5343 (figure::properties::position): Remove 'u' modifier and add 'S'
5345 (axes::properties::update_boundingbox): Overload to recompute
5346 transformation when axes size changed.
5347 * graphics.cc (base_properties::update_boundingbox): New method.
5348 (figure::properties::set_boundingbox,
5349 figure::properties::set_position): Likewise.
5351 * genprops.awk: Add 'U' modifier to support extern updaters.
5352 * graphics.h.in (base_graphics_backend::gripe_invalid): New method
5353 to simplify error reporting.
5354 (class base_graphics_backend): Use it.
5355 (base_graphics_backend::set_figure_position): New backend method.
5356 (graphics_backend::set_figure_position): Likewise.
5357 (figure::properties::position): Mark property with updater.
5358 (figure::properties::update_position): New updater.
5360 * graphics.h.in (root_figure::properties::callbackobject):
5362 (root_figure::properties::cbo_stack): New field.
5363 * graphics.cc (xset_gcbo, xreset_gcbo): New utility functions.
5364 (execute_callback): Set callbackobject property in root object
5365 before executing a callback.
5366 (root_figure::properties::set_callbackobject): Implement accessor.
5368 * graphics.h.in (root_figure::properties::callbackobject):
5370 (root_figure::properties::cbo_stack): New field.
5371 * graphics.cc (xset_gcbo, xreset_gcbo): New utility functions.
5372 (execute_callback): Set callbackobject property in root object
5373 before executing a callback.
5374 (root_figure::properties::set_callbackobject): Implement accessor.
5376 * graphics.h.in (class root_figure::properties,
5377 class line::properties, class text::properties,
5378 class image::properties, class patch::properties,
5379 class surface::properties): Export classes with
5382 * graphics.cc (axes::properties::set_defaults): Use correct
5383 default values for gridlinestyle and minorgridlinestyle.
5385 2008-06-03 Jaroslav Hajek <highegg@gmail.com>
5387 * load-save.cc (Fload): Fix "-7" option.
5389 2008-06-02 David Bateman <dbateman@free.fr>
5391 * pt.cc (tree:last_break_function): Next pointer to last function
5393 * pt.h (tree:last_break_function): ditto.
5394 * debug.cc (Fdbstep): Use tree::break_function value of zero to
5395 signal to step into the next function. Set tree::last_break_function
5396 to indicate position of last breakpoint.
5397 (Fdbnext): Set tree::last_break_function to indicate position of
5399 * pt-bp.h (MAYBE_DO_BREAKPOINT): Check tree::break_function value
5400 of zero as well. Only check tree::last_line if we are in teh same
5401 function as the last breakpoint.
5402 * input.cc (char Vfilemarker): New global variable.
5403 (Ffilemarker): New function to query and set Vfilemarker.
5404 * input.h (extern char Vfilemarker): Make Vfilemarker available.
5405 * util.cc (fcn_file_in_path): If the input argument contains
5406 Vfilemarker, strip the trailing part of string from this point
5407 when looking for function file.
5408 * toplev.cc (octave_call_stack::fo_backtrace): Mark subfunctions
5409 with the name of the parent function and Vfilemarker.
5410 * symtab.cc (symbol_table::find_function (const std::string&,
5411 tree_argument_list *, const string_vector&, octave_value_list*,
5412 bool&): If function name contains Vfilemarker, check in scope of
5413 specified parent function.
5415 * DLD-FUNCTIONS/betainc.cc: Move test code here. Add test code for
5416 single precision type.
5417 * DLD-FUNCTIONS/gammainc.cc: Ditto.
5418 * DLD-FUNCTIONS/gcd.cc (Fgcd): Support single precision. Move test
5419 code here. Add test code for single precision type.
5420 * data.cc: Move test code here and add tests for single precision
5421 type. Add tests for Fislogical.
5422 (NATIVE_REDUCTION): Support the 'double' argument.
5423 * mapper.cc: Move test code here and add tests for single precision
5425 * ov-float.cc (CD_SCALAR_MAPPER): Replace Complex with
5427 (erf, erfc, abs, acos, asin, asinh, atan, atanh, ceil, cos, cosh,
5428 exp, expm1, floor, log10, log1p, sin, sinh, sqrt, tan, tanh): Use
5429 float version of base functions (ie. ::sinf and not ::sin)
5430 (lgamma, acosh, log, log2, log10, log1p): Use single precision
5432 * ov-flt-complex.cc (erf, erfc, expm1, log1p): Use the float
5433 version of base functions.
5434 * ov-flt-cx-mat.cc (DARRY_MAPPER): Replace NDArray with FloatNDArray.
5435 (erf, erdc, gamma): Use FloatNDArray::dmapper and not
5437 * ov-flt-cx-mat.h (is_double_type): Delete.
5438 (is_single_type): New method.
5439 * ov-flt-re-mat.cc (lgamma, acosh, log, log2, log10, log1p,
5440 sqrt): Use single precision infinity value.
5442 * chol.cc (Fcholinv, Fchol2inv, Fcholupdate, Fcholinsert,
5443 Fcholdelete, Fcholshift): Allow single precision arguments.
5444 (Fchol): Move test code here. Add test code for single precision.
5445 (Fcholupdate, Fcholinsert, Fcholdelete, Fcholshift): Add test code
5446 for single precision.
5447 * conv2.cc (Fconv2): Add single precision test code.
5448 * det.cc (Fdet): For single values or empty matrices, return
5449 single precision arg for single precion input. Move test code
5450 here. Add single precision test code.
5451 * fft.cc (do_fft): For empty single precision arguments return a
5452 single precision value. Add single precision test code. Remove
5454 * fft2.cc (do_fft2): For empty single precision arguments return a
5455 single precision value. Add single precision test code. Move fft2
5457 * fftn.cc (do_fftn): For empty single precision arguments return a
5458 single precision value.
5459 * eig.cc (Feig): Move test code here. Add single precision test
5461 * expm.cc (Fexpm): Ditto.
5462 * find.cc (Ffind): Ditto.
5463 * hess.cc (Fhess): Ditto.
5464 * inv.cc (Finc): Ditto.
5465 * lu.cc (Flu): Ditto.
5466 * qr.cc (Fqr): Ditto.
5467 * schur.cc (Fschur): Ditto.
5468 * svd.cc (Fsvd): Ditto.
5469 * syl.cc (Fsyl): Ditto.
5471 * op-fcm-fcm.cc, op-fcm-fcs.cc, op-fcm-fm.cc, op-fcm-fs.cc,
5472 op-fcs-fcm.cc, op-fcs-fcs.cc, op-fcs-fm.cc, op-fcs-fs.cc,
5473 op-fm-fcm.cc, op-fm-fcs.cc, op-fm-fm.cc, op-fm-fs.cc,
5474 op-fs-fcm.cc, op-fs-fcs.cc, op-fs-fm.cc, op-fs-fs.cc: Add mixed
5475 double, single precision concatenation operators.
5477 * data.cc (Fall, Fany, Fdiag, Fcat, Fismatrix, Fones, Fzeros,
5478 Finf, FNaN, FNA, Feye, Flinspace, Freshape, Ftranspose,
5479 Fctranspose, Fsort). Move tests here. Add single precision tests.
5480 * mappers.cc (Ffinite, Fisinf, Fisna, Fisnan): Ditto.
5481 * ov-float.cc (octave_float_scalar:resize): single precision
5483 * ov.cc (octave_value::octave_value (const
5484 FloatComplexDiagMatrix&)): Ditto.
5485 * data.cc (Fnorm): Add single precision.
5486 (do_cat): Disable fast return and skipping empty matrices, as they
5487 play a part in determining the return type.
5488 * ov.cc (octave_value do_cat_op (const octave_value&, const
5489 octave_value&, const Array<octave_idx_type>&)): ditto.
5491 2008-06-02 Jaroslav Hajek <highegg@gmail.com>
5493 * ov-cell.cc (Fcellstr): For compatibility with Matlab, return {''}
5496 2008-05-26 Jaroslav Hajek <highegg@gmail.com>
5498 * DLD-FUNCTIONS/fsolve.cc (fsolve_user_function,
5499 fsolve_user_jacobian): Reshape argument to original dims before
5501 (Ffsolve): Save original dimensions of the starting guess and reshape
5502 on return. Fix tests.
5504 2008-05-21 David Bateman <dbateman@free.fr>
5506 * DLD-FUNCTIONS/quad.cc (quad_float_user_function): New function.
5507 (Fquad): Handle float type.
5510 2008-05-21 Jaroslav Hajek <highegg@gmail.com>
5512 * OPERATORS/op-fcm-fcm.cc (trans_mul, mul_trans, herm_mul, mul_herm):
5514 (install_fcm_fcm_ops): Install them.
5515 * OPERATORS/op-fm-fm.cc (trans_mul, mul_trans): New functions.
5516 (install_fm_fm_ops): Install them.
5518 * OPERATORS/op-sm-m.cc (trans_mul): New function.
5519 (install_sm_m_ops): Register it.
5520 * OPERATORS/op-m-sm.cc (mul_trans): New function.
5521 (install_m_sm_ops): Register it.
5522 * OPERATORS/op-scm-cm.cc (trans_mul, herm_mul): New function.
5523 (install_scm_cm_ops): Register it.
5524 * OPERATORS/op-cm-scm.cc (mul_trans, mul_herm): New function.
5525 (install_cm_scm_ops): Register it.
5527 * dMatrix.cc: Declare DSYRK.
5528 (xgemm): Call DSYRK if symmetric case detected.
5529 * CMatrix.cc: Declare ZSYRK, ZHERK.
5530 (xgemm): Call ZSYRK/ZHERK if symmetric/hermitian case detected.
5532 * ov.h (octave_value::compound_binary_op): New enum.
5533 (do_binary_op (octave_value::compound_binary_op, ...),
5534 octave_value::binary_op_fcn_name (compound_binary_op),
5535 octave_value::do_binary_op (compound_binary_op, ...)):
5537 (OV_COMP_BINOP_FN): New macro (+ several expansions).
5538 * ov.cc (octave_value::binary_op_fcn_name (compound_binary_op),
5539 decompose_binary_op, do_binary_op (compound_binary_op, ...)):
5541 * ov-typeinfo.h (octave_value_typeinfo::register_binary_class_op
5542 (octave_value::compound_binary_op, ...),
5543 octave_value_typeinfo::register_binary_op
5544 (octave_value::compound_binary_op, ...),
5545 octave_value_typeinfo::do_register_binary_class_op
5546 (octave_value::compound_binary_op, ...),
5547 octave_value_typeinfo::do_register_binary_op
5548 (octave_value::compound_binary_op, ...),
5549 octave_value_typeinfo::do_lookup_binary_class_op
5550 (octave_value::compound_binary_op),
5551 octave_value_typeinfo::do_lookup_binary_op
5552 (octave_value::compound_binary_op, ...)):
5554 (octave_value_typeinfo::lookup_binary_class_op
5555 (octave_value::compound_binary_op),
5556 (octave_value_typeinfo::lookup_binary_op
5557 (octave_value::compound_binary_op, ...)):
5559 (octave_value_typeinfo::compound_binary_class_ops,
5560 octave_value_typeinfo::compound_binary_ops):
5562 * ov-typeinfo.cc (octave_value_typeinfo::register_binary_class_op
5563 (octave_value::compound_binary_op, ...),
5564 octave_value_typeinfo::register_binary_op
5565 (octave_value::compound_binary_op, ...),
5566 octave_value_typeinfo::do_register_binary_class_op
5567 (octave_value::compound_binary_op, ...),
5568 octave_value_typeinfo::do_register_binary_op
5569 (octave_value::compound_binary_op, ...),
5570 octave_value_typeinfo::do_lookup_binary_class_op
5571 (octave_value::compound_binary_op),
5572 octave_value_typeinfo::do_lookup_binary_op
5573 (octave_value::compound_binary_op, ...)):
5575 (octave_value::do_register_type): Resize also compound_binary_ops
5577 * pt-exp.h (tree_expression::is_unary_expression): New virtual
5579 * pt-unop.h (tree_unary_expression::is_unary_expression): New virtual
5581 * pt-cbinop.h, pt-cbinop.cc: New files (implement
5582 tree_compound_binary_expression class).
5583 * pt-all.h: Include pt-cbinop.h.
5584 * Makefile.in (PT_INCLUDES, PT_SRC): Include them in the lists.
5585 * parse.y (make_binary_op): Call maybe_compound_binary_expression.
5586 * OPERATORS/op-m-m.cc (trans_mul, mul_trans): New operator handlers.
5587 (install_m_m_ops): Register them.
5588 * OPERATORS/op-cm-cm.cc (trans_mul, mul_trans, herm_mul, mul_herm):
5589 New operator handlers.
5590 (install_cm_cm_ops): Register them.
5592 * DLD-FUNCTIONS/matrix_type.cc: Fix tests relying on the
5593 older more optimistic hermitian check.
5595 2008-05-21 David Bateman <dbateman@free.fr>
5597 * DLD-FUNCTIONS/rcond.cc (Frcond): Add support for single precision.
5599 * DLD-FUNCTIONS/sqrt.m: Replace DBL_* with FLT_* for single
5601 * data.cc (static octave_value fill_matrix (const
5602 octave_value_list&, double, float, const char *)): Add function
5603 with additional argument to allow for different valid for double
5604 and single precision.
5605 (Finf, FNaN, FNA, Frealmax, Frealmin): Use it here.
5606 (Feps): Modify behavior for a single numerical argument to give
5607 difference to next largest value in the class of the type passed.
5609 2008-05-21 John W. Eaton <jwe@octave.org>
5611 * pt-idx.h (tree_index_expression::tree_index_expression (int, int)):
5612 Delete default argument values.
5614 2008-05-20 David Bateman <dbateman@free.fr>
5616 * data.cc (Flog2): Handle single precision.
5617 * ov-float.h, ov.float.cc, ov-flt-complex.h, ov-flt-complex.cc,
5618 ov-flt-re-mat.h, ov-flt-re-mat.cc, ov-flt-cx-mat.h,
5619 ov-flt-cx-mat.cc: Provide single precision version of log2 mapper
5622 * DLD-FUNCTIONS/__convn__.cc, DLD-FUNCTIONS/__pchip_deriv__.cc,
5623 DLD-FUNCTIONS/besselj.cc, DLD-FUNCTIONS/betainc.cc,
5624 DLD-FUNCTIONS/conv2.cc, DLD-FUNCTIONS/gammainc.cc,
5625 DLD-FUNCTIONS/givens.cc, DLD-FUNCTIONS/kron.cc,
5626 DLD-FUNCTIONS/lookup.cc, DLD-FUNCTIONS/syl.cc, data.cc:
5627 Prefer demotion to single precision rather than promotion to double.
5629 * ov-float.cc, ov-float.h, ov-flt-complex.cc, ov-flt-complex.h,
5630 ov-flt-cx-mat.cc, ov-flt-cx-mat.h, ov-flt-re-mat.cc,
5631 ov-flt-re-mat.h (numeric_conversion_function (void) const):
5634 * ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h,
5635 ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc, ov-scalar.h
5636 (numeric_conversion_function (void) const): Add method for
5637 conversion to single precision.
5639 * DLD-FUNCTIONS/conv2.cc (Fconv2): Don't access third arg if we
5642 * DLD-FUNCTIONS/balance.cc, DLD-FUNCTIONS/expm.cc,
5643 DLD-FUNCTIONS/find.cc, DLD-FUNCTIONS/hess.cc,
5644 DLD-FUNCTIONS/qr.cc: COnvert for use with single precision.
5646 * OPERATORS/op-int.h, OPERATORS/op-int-conv.cc,
5647 OPERATORS/op-int-concat.cc: Adapt for single precision.
5649 * OPERATORS/op-i8-i8.cc, OPERATORS/op-i16-i16.cc,
5650 OPERATORS/op-i32-i32.cc, OPERATORS/op-i64-i64.cc,
5651 OPERATORS/op-ui8-ui8.cc, OPERATORS/op-ui16-ui16.cc,
5652 OPERATORS/op-ui32-ui32.cc, OPERATORS/op-ui64-ui64.cc:
5653 Add includes for single precision types.
5655 * OPERATORS/op-b-b.cc, OPERATORS/op-b-bm.cc, OPERATORS/op-bm-b.cc,
5656 OPERATORS/op-fcm-fs.cc, OPERATORS/op-fcs-fs.cc,
5657 OPERATORS/op-fm-fs.cc, OPERATORS/op-fs-fcm.cc,
5658 OPERATORS/op-fs-fcs.cc, OPERATORS/op-fs-fm.cc,
5659 OPERATORS/op-fs-fs.cc, OPERATORS/op-int.h, ov.cc, ov-scalar.cc,
5660 ov-float.h, ov-flt-complex.cc, ov-float.cc, ov-flt-re-mat.cc,
5661 ov-flt-cx-mat.cc: Replace octave_float with octave_scalar_float
5663 * OPERATORS/op-fm-fm.cc, OPERATORS/op-fm-fs.cc,
5664 OPERATORS/op-fm-fcm.cc, OPERATORS/op-fm-fcs.cc,
5665 OPERATORS/op-fs-fm.cc, OPERATORS/op-fs-fs.cc,
5666 OPERATORS/op-fs-fcm.cc, OPERATORS/op-fs-fcs.cc,
5667 OPERATORS/op-fcm-fm.cc, OPERATORS/op-fcm-fs.cc,
5668 OPERATORS/op-fcm-fcm.cc, OPERATORS/op-fcm-fcs.cc,
5669 OPERATORS/op-fcs-fm.cc, OPERATORS/op-fcs-fs.cc,
5670 OPERATORS/op-fcs-fcm.cc, OPERATORS/op-fcs-fcs.cc,
5671 OPERATORS/op-m-m.cc, OPERATORS/op-m-s.cc,
5672 OPERATORS/op-m-cm.cc, OPERATORS/op-m-cs.cc,
5673 OPERATORS/op-s-m.cc, OPERATORS/op-s-s.cc,
5674 OPERATORS/op-s-cm.cc, OPERATORS/op-s-cs.cc,
5675 OPERATORS/op-cm-m.cc, OPERATORS/op-cm-s.cc,
5676 OPERATORS/op-cm-cm.cc, OPERATORS/op-cm-cs.cc,
5677 OPERATORS/op-cs-m.cc, OPERATORS/op-cs-s.cc,
5678 OPERATORS/op-cs-cm.cc, OPERATORS/op-cs-cs.cc:
5679 Add mixed single/double assign operators.
5681 * ov.h (numeric_demotion_function): New method for double to
5683 * ov-base.h (numeric_demotion_function): Declare virtual version.
5685 * ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h,
5686 ov-re-mat.cc, ov-re-mat.h, ov-scalar.cc, ov-scalar.h
5687 (numeric_cdemote_function (void) const): Add method for
5688 conversion to single precision renamed from the method
5689 numeric_conversion_function
5691 * ov.cc (do_binary_op): Use demotion function seperately than the
5692 numeric conversion function so as to avoid isses like
5693 a=zeros(2,2);a(1,:)=1:2.
5695 * OPERATORS/op-fcm-fcm.cc, OPERATORS/op-fcm-fcs.cc,
5696 OPERATORS/op-fcm-fm.cc, OPERATORS/op-fcm-fs.cc,
5697 OPERATORS/op-fcs-fcm.cc, OPERATORS/op-fcs-fcs.cc,
5698 OPERATORS/op-fcs-fm.cc, OPERATORS/op-fcs-fs.cc,
5699 OPERATORS/op-fm-fcm.cc, OPERATORS/op-fm-fcs.cc,
5700 OPERATORS/op-fm-fm.cc, OPERATORS/op-fm-fs.cc,
5701 OPERATORS/op-fs-fcm.cc, OPERATORS/op-fs-fcs.cc,
5702 OPERATORS/op-fs-fm.cc, OPERATORS/op-fs-fs.cc, ov-float.cc,
5703 ov-float.h, ov-flt-complex.cc, ov-flt-complex.h, ov-flt-cx-mat.cc,
5704 ov-flt-cx-mat.h, ov-flt-re-mat.cc, ov-flt-re-mat.h: New files.
5705 * Makefile.in (OV_INCLUDES, OV_SRC, OP_XSRC. FLOAT_OP_XSRC,
5706 DOUBLE_OP_XSRC): Add them here.
5708 * DLD-FUNCTIONS/__convn__.cc, DLD-FUNCTIONS/__lin_interpn__.cc,
5709 DLD-FUNCTIONS/__pchip_deriv__.cc, DLD-FUNCTIONS/besselj.cc,
5710 DLD-FUNCTIONS/betainc.cc, DLD-FUNCTIONS/bsxfun.cc,
5711 DLD-FUNCTIONS/chol.cc, DLD-FUNCTIONS/conv2.cc,
5712 DLD-FUNCTIONS/det.cc, DLD-FUNCTIONS/eig.cc, DLD-FUNCTIONS/fft.cc,
5713 DLD-FUNCTIONS/fft2.cc, DLD-FUNCTIONS/fftn.cc,
5714 DLD-FUNCTIONS/fftw.cc, DLD-FUNCTIONS/filter.cc,
5715 DLD-FUNCTIONS/gammainc.cc, DLD-FUNCTIONS/givens.cc,
5716 DLD-FUNCTIONS/inv.cc, DLD-FUNCTIONS/kron.cc,
5717 DLD-FUNCTIONS/lookup.cc, DLD-FUNCTIONS/lu.cc,
5718 DLD-FUNCTIONS/matrix_type.cc, DLD-FUNCTIONS/max.cc,
5719 DLD-FUNCTIONS/pinv.cc, DLD-FUNCTIONS/schur.cc,
5720 DLD-FUNCTIONS/sqrtm.cc, DLD-FUNCTIONS/svd.cc,
5721 DLD-FUNCTIONS/syl.cc, DLD-FUNCTIONS/symbfact.cc,
5722 DLD-FUNCTIONS/typecast.cc, OPERATORS/op-b-b.cc,
5723 OPERATORS/op-b-bm.cc, OPERATORS/op-bm-b.cc, OPERATORS/op-bm-bm.cc,
5724 OPERATORS/op-cm-cm.cc, OPERATORS/op-cs-cs.cc, OPERATORS/op-m-m.cc,
5725 OPERATORS/op-range.cc, OPERATORS/op-s-s.cc, bitfcns.cc, data.cc,
5726 oct-stream.cc, ov-base.cc, ov-base.h, ov-bool-mat.cc,
5727 ov-bool-mat.h, ov-bool.h, ov-ch-mat.cc, ov-ch-mat.h,
5728 ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-intx.h,
5729 ov-range.cc, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-scalar.h,
5730 ov.cc, ov.h, pr-output.cc, pr-output.h, pt-mat.cc, utils.cc,
5731 utils.h, xdiv.cc, xdiv.h, xpow.cc, xpow.h:
5732 Allow single precision types.
5734 2008-05-20 David Bateman <dbateman@free.fr>
5736 * DLD-FUNCTIONS/rcond.cc: New function.
5737 * Makefile.in (DLD_XSRC): Add it here.
5739 * debug.cc (Fdbstop): If no line specified assume line 1.
5740 (Fdbstep, Fdbcont, Fdbnext): Move debugging functions
5742 (Fdbquit): New command to quit debugging mode and return to the
5744 (Fdbstep): Modify the dbstep command for compatibility.
5745 * input.cc (Vdebugging_current_line): Store current line being
5746 debugged for use in DEFCMD versions of debug commands.
5747 (match_sans_spaces_semi): Delete.
5748 (static void get_debug_input (const std;string&)): New function to
5749 parse input in debug mode using standard Octave parser.
5750 (static octave_value_list get_user_input (const
5751 octave_value_list&, int)): Remove debugging specialization.
5752 * input.h (Vdebugging_current_line): Store current line being
5753 debugged for use in DEFCMD versions of debug commands.
5754 * parse.y (make_return_command): Special handling in debug mode.
5755 * pt-bp.h (MAYBE_DO_BREAKPOINT): Support break in n lines needed
5756 to support "dbstep N".
5757 * pt.cc (tree::break_next): Convert to a down counter to support
5758 break in N lines. Breakpoint occure when tree::break_next is zero.
5759 * toplev.cc (octave_user_script *
5760 octave_call_stack::do_caller_user_script (difference_type) const):
5761 Support skipping the first N functions to support "dbstep out".
5762 (octave_user_function * octave_call_stack::do_caller_user_function
5763 (difference_type) const): Ditto.
5764 (octave_user_code * octave_call_stack::do_caller_user_code
5765 (difference_type) const): Ditto.
5766 * toplev.h (octave_user_script *
5767 octave_call_stack::do_caller_user_script (difference_type) const):
5768 Add difference_type argument.
5769 (octave_user_function * octave_call_stack::do_caller_user_function
5770 (difference_type) const): Ditto.
5771 (octave_user_code * octave_call_stack::do_caller_user_code
5772 (difference_type) const): Ditto.
5773 (static octave_user_script *caller_script (difference_type)):
5775 (static octave_user_function *caller_user_function
5776 (difference_type q)): Ditto.
5777 (static octave_user_code *caller_user_code (difference_type q)):
5780 2008-05-20 Kim Hansen <kimhanse@gmail.com>
5782 * load-path.cc (load_path::do_initialize):
5783 Include separator when appending sys_path.
5785 2008-05-20 Bill Denney <bill@denney.ws>
5787 * file-io.cc (Ffgets, Fgets, Ffputs, Ffscanf): Doc fix (seealso).
5789 2008-05-20 Thomas Weber <thomas.weber.mail@gmail.com>
5791 * DLD-FUNCTIONS/rand.cc (Frandn): Doc fix.
5793 2008-05-20 David Bateman <dbateman@free.fr>
5795 * load-save.cc (do_load): Treat non verbose list_only output in
5796 the same manner as Fwho.
5797 * symtab.h (static void clear_variable_regexp (const
5798 std::string&): New method.
5799 (static std::list<symbol_record> regexp (const std::string&)): Ditto.
5800 (static std::list<symbol_record> regexp_variables (const
5801 std::string&)): Ditto.
5802 (static std::list<symbol_record> regexp_global_variables (const
5803 std::string&)): Ditto,
5804 (static std::list<symbol_record> regexp_variables (const
5805 string_vector&)): Ditto.
5806 (void do_clear_variable_regexp (const std::string&)): Ditto.
5807 (std::list<symbol_record> do_regexp (const std::string&, bool)
5809 (do_who): Accept the "-regexp" option. Use regexp versions of
5810 symbol table functions.
5811 (static inline bool name_match_any_pattern (const string_vector&,
5812 int, int, bool): Add regexp argument, and use regexp matching if
5814 (do_clear_variables): Add regexp option and pass to
5815 name_match_any_pattern.
5816 (Fclear): Accept the -regexp option.
5818 2008-05-07 John W. Eaton <jwe@octave.org>
5820 * pt-arg-list.cc, pt-arg-list.h (tree_argument_list::dup):
5822 * pt-assign.cc, pt-assign.h (tree_simple_assignment::dup,
5823 tree_multi_assignment::dup): Likewise.
5824 * pt-binop.cc, pt-binop.h (tree_binary_expression::dup,
5825 tree_boolean_expression::dup): Likewise.
5826 * pt-cell.cc, pt-cell.h (tree_cell::dup): Likewise.
5827 * pt-cmd.cc, pt-cmd.h (tree_no_op_command::dup,
5828 tree_function_def::dup): Likewise.
5829 * pt-colon.cc, pt-colon.h (tree_colon_expression::dup): Likewise.
5830 * pt-const.cc, pt-const.h (tree_constant::dup): Likewise.
5831 * pt-decl.cc, pt-decl.h (tree_decl_elt::dup, tree_decl_init_list::dup,
5832 tree_global_command::dup, tree_static_command::dup): Likewise.
5833 * pt-except.cc, pt-except.h (tree_try_catch_command::dup,
5834 tree_unwind_protect_command::dup): Likewise.
5835 * pt-exp.h (tree_expression:dup): Likewise.
5836 * pt-fcn-handle.cc, pt-exp.h (tree_expression:dup): Likewise.
5837 * pt-fcn-handle.h (tree_fcn_handle::dup,
5838 tree_anon_fcn_handle::dup): Likewise.
5839 * pt-id.cc, pt-id.h (tree_identifier::dup): Likewise.
5840 * pt-idx.cc, pt-idx.h (tree_index_expression::dup): Likewise.
5841 * pt-jump.cc, pt-jump.h (tree_break_command::dup,
5842 tree_continue_command::dup, tree_return_command::dup): Likewise.
5843 * pt-loop.cc, pt-loop.h (tree_while_command::dup,
5844 tree_do_until_command::dup, tree_simple_for_command::dup,
5845 tree_complex_for_command::dup): Likewise.
5846 * pt-mat.cc, pt-mat.h (tree_matrix::dup): Likewise.
5847 * pt-misc.cc, pt-misc.h (tree_parameter_list::dup,
5848 tree_return_list::dup): Likewise.
5849 * pt-select.cc, pt-select.h (tree_if_clause::dup,
5850 tree_if_command_list::dup, tree_if_command::dup,
5851 tree_switch_case::dup, tree_switch_case_list::dup,
5852 tree_switch_command::dup, tree_statement::dup,
5853 tree_statement_list::dup, tree_prefix_expression::dup,
5854 tree_postfix_expression::dup): Likewise.
5856 * ov-fcn-handle.cc (octave_fcn_handle::save_ascii,
5857 octave_fcn_handle::save_binary, octave_fcn_handle::save_hdf5):
5858 Pass context to symbol_table::all_variables.
5859 * load-save.cc (dump_octave_core): Likewise.
5860 * ov-fcn-handle.cc (Ffunctions): Don't skip anonymous functions
5861 with the name set to the text of the function body.
5862 Pass context to symbol_table::all_variables and
5863 symbol_table::symbol_record::varval.
5865 * symtab.h (symbol_table::varref, symbol_table::do_varref,
5866 symbol_table::varval, symbol_table::do_varval,
5867 symbol_table::all_variables, symbol_table::do_all_variables,
5868 symbol_table::symbol_record::varref,
5869 symbol_table::symbol_record::varval,
5870 symbol_table::symbol_record::is_defined,
5871 symbol_table::symbol_record::is_variable,
5872 symbol_table::symbol_record::symbol_record_rep::varref,
5873 symbol_table::symbol_record::symbol_record_rep::varval,
5874 symbol_table::symbol_record::symbol_record_rep::is_defined,
5875 symbol_table::symbol_record::symbol_record_rep::is_variable,
5877 * symtab.h (symbol_table::do_inherit): New arg, donor_context.
5878 Look for value in donor_contxt. Set value in base context.
5879 * symtab.cc (symbol_table::symbol_record::symbol_record_rep::dump):
5880 Pass xcurrent_context to varval.
5882 2008-05-06 David Bateman <dbateman@free.fr>
5884 * ov-fcn-inline.cc (Finline): Also ignore NaN, Inf, pi, NA and eps.
5886 * bitfcns.cc (BITOP): Treat octave_bool types and octave_scalar.
5888 2008-05-06 John W. Eaton <jwe@octave.org>
5890 * symtab.h (symbol_table::scope_id_cache): New class. Use it to
5891 replace scope_ids_in_use and scope_ids_free_list.
5892 (symbol_table::erase_scope): Call free_scope.
5893 (symbol_table::free_scope): Call scope_id_cache::free.
5895 * ov-fcn.h (octave_function::lock_subfunctions,
5896 octave_function::unlock_subfunctions): New virtual functions.
5897 (octave_function::lock_subfunctions): Call lock_subfunctions here.
5898 (octave_function::unlock_subfunctions): Call unlock_subfunctions here.
5899 * ov-usr-fcn.h (octave_user_function::lock_subfunctions,
5900 octave_user_function::unlock_subfunctions): New functions.
5902 * symtab.h (symbol_table::lock_subfunctions,
5903 symbol_table::lock_subfunctions,
5904 symbol_table::fcn_info::lock_subfunction,
5905 symbol_table::fcn_info::unlock_subfunction,
5906 symbol_table::fcn_info::fcn_info_rep::lock_subfunction,
5907 symbol_table::fcn_info::fcn_info_rep::unlock_subfunction):
5910 * symtab.h (symbol_table::set_scope, symbol_table::get_instance):
5911 Don't set instance unless allocation succeeds.
5912 (symbol_table::print_scope, symbol_table::do_print_scope): Delete.
5913 (symbol_table::free_scope): Avoid using invalid iterator.
5914 (symbol_table::erase_scope): Call free_scope here.
5916 * ov-fcn-handle.cc (octave_fcn_handle::load_ascii,
5917 octave_fcn_handle::load_binary, octave_fcn_handle::load_hdf5):
5918 Cache anonymous name here.
5919 (octave_fcn_handle::octave_fcn_handle): Move here from
5920 ov-fcn-handle.h. Cache name if function is user-defined.
5922 * pt-id.cc (tree_identifier::dup): Avoid shadow warning.
5924 * symtab.h (symbol_table::cache_name, symbol_table::do_cache_name):
5926 (symbol_table::get_instance): Cache top-level name here.
5927 * parse.y (finish_function): Call symbol_table::cache_name here.
5929 * symtab.cc (F__dump_symtab_info__): New function.
5931 * symtab.cc (symbol_table::dump, symbol_table::dump_global,
5932 symbol_table::dump_functions, symbol_table::do_dump,
5933 symbol_table::symbol_record::symbol_record_rep::dump,
5934 symobl_table::fcn_info::fcn_info_rep::dump): New functions.
5935 * symtab.h: Provide decls.
5936 (symtab::scopes, symbol_table::symbol_record::dump,
5937 symbol_table::fcn_info::dump): New functions.
5938 (symtab::get_instance): New arg, create; if false throw error if
5939 instance for given scope is not found.
5941 * ov-base.cc (octave_base_value::dump): New virtual function.
5942 * ov-base.h: Proivde decl.
5943 * ov.h (octave_value::dump): New function.
5945 * ov.h, ov.c (octave_value::function_value): New const version.
5946 * ov-base.h, ov-base.cc (octave_base_value::function_value): Likewise.
5947 * ov-builtin.h (octave_builtin::function_value): Likewise.
5948 * ov-fcn-handle.h (octave_fcn_handle::function_value): Likewise.
5949 * ov-mex-fcn.h (octave_mex_function::function_value): Likewise.
5950 * ov-usr-fcn.h (octave_user_script::function_value,
5951 octave_user_function): Likewise.
5953 * symtab.h, symtab.cc: Use consistent naming scheme for iterator
5954 typedefs. Change all uses.
5956 * variables.cc (F__print_symtab_info__, F__print_symbol_info__):
5959 * ov-cell.cc (Fstruct2cell): Handle structure arrays properly.
5961 2008-05-05 David Bateman <dbateman@free.fr>
5963 * sysdep.cc (Fputenv): Allow single arg. Alias to setenv.
5965 2008-05-05 John W. Eaton <jwe@octave.org>
5967 * input.cc (Fre_read_readline_init_file): New function.
5969 2008-05-04 John W. Eaton <jwe@octave.org>
5971 * ov-fcn-handle.cc (Ffunctions): Pass octave_value object instead
5972 of Cell in structure field assignment.
5974 * parse.y (frob_function): Don't install subfunctions here.
5975 (finish_function): Handle subfunctions here.
5976 Conditionally define tree_function_def object here.
5978 * symtab.h (symbol_table::fcn_info::fcn_info_rep::find_function):
5979 Initialize args_evaluated.
5980 * pt-id.cc (tree_identifier::rvalue): Likewise.
5981 * variables.cc (symbol_exist): Likewise.
5983 * pt-id.h (tree_identifier::tree_identifer): Delete useless statement.
5985 * variables.cc (get_global_value): Use symbol_table::global_varval
5986 instead of passing scope to symbol_table::varval.
5987 (set_global_value): Use symbol_table::global_varref
5988 instead of passing scope to symbol_table::varref.
5989 (do_who): Use symbol_table::glob_global_variables
5990 instead of passing scope to symbol_table::glob_variables.
5992 Use symbol_table::global_variable_names and
5993 symbol_table::clear_global instead of passing scope to
5994 symbol_table::clear_variables.
5995 Use symbol_table::global_variable_names instead of passing scope
5996 to symbol_table::variable_names.
5998 * unwind-prot.cc (unwind_protect::save_size_t): New function.
5999 (saved_variable::restore_value): Handle size_t values.
6000 (saved_variable::saved_variable): New size_t constructor.
6001 (saved_variable::size_type): New var_type enum value.
6002 (saved_variable::ptr_to_size_t, saved_variable::size_t_value):
6004 * unwind-prot.h (unwind_protect::save_size_t): Provide decl
6005 (unwind_protect_size_t): New macro.
6007 * toplev.cc (octave_call_stack::do_goto_frame,
6008 octave_call_stack::do_goto_frame_relative): New functions.
6009 (octave_call_stack::do_backtrace): Also return scope and context ids.
6010 * toplev.h (octave_call_stack::do_goto_frame,
6011 octave_call_stack::do_goto_frame_relative): Provide decls.
6012 (octave_call_stack::curr_frame): New data member.
6013 (octave_call_stack::octave_call_stack): Initialize it.
6014 (octave_call_stack::call_stack_elt::scope,
6015 (octave_call_stack::call_stack_elt::context): New data members.,
6016 (octave_call_stack::current_frame,
6017 (octave_call_stack::do_current_frame
6018 octave_call_stack::do_goto_frame,
6019 octave_call_stack::do_goto_frame_relative): New functions.
6020 (octave_call_stack::push, octave_call_stack::do_push):
6021 New args, scope and context.
6022 (octave_call_stack::do_push, octave_call_stack::do_pop): Update
6023 curr_frame if debugging.
6025 * symtab.cc (symbol_table::global_table): New map for global values.
6026 (symbol_table::xcurrent_context): New variable for context info.
6027 * symtab.h: Provide decls.
6028 (symbol_table::global_varref, symbol_table::global_varval,
6029 symbol_table::current_context,
6030 symbol_table::set_scope_and_context,
6031 symbol_table::glob_global_variables,
6032 symbol_table::global_variable_names,
6033 symbol_table::top_leve_variable_names):
6035 (symbol_table::context_id, const_global_table_iterator,
6036 global_table_iterator): New typedefs.
6037 (symbol_table::xcurrent_context_this_table): New variable.
6038 (symbol_table::symbol_table): Initialize it.
6039 (symbol_table::set_scope): Use it.
6040 (symbol_table::symbol_record::find, symbol_table::do_find):
6041 Use symbol_table::global_varref instead of passing scope to
6042 symbol_table::varref.
6043 (symbol_table::symbol_record::symbol_record_rep::value_stack):
6044 Now a std::deque instead of a std::stack.
6045 (symbol_table::symbol_record::symbol_record_rep::push_context,
6046 symbol_table::symbol_record::symbol_record_rep::pop_context):
6047 Don't push or pop persistent of global variables.
6048 (symbol_table::symbol_record::symbol_record_rep::varval,
6049 Handle context here. Call symbol_table::global_varval instead of
6050 passing scope to symbol_table::varval.
6051 (symbol_table::symbol_record::symbol_record_rep::varref):
6052 Handle context here. Call symbol_table::global_varref instead of
6053 passing scope to symbol_table::varref.
6054 (symbol_table::symbol_record::varref,
6055 symbol_table::symbol_record::varval): No need to handle global
6056 values specially here.
6057 (symbol_table::symbol_record::push_context
6058 symbol_table::symbol_record::pop_context: No need to handle global
6059 or persistent values specially here.
6060 (symbol_table::get_instance): Don't return global scope.
6061 (symbol_table::do_push_context, symbol_table::do_pop_context):
6062 Increment/decrement xcurrent_context.
6063 (symbol_table::do_clear_global, symbol_table::do_clear_global_pattern):
6064 Use global_table instead of separate scope.
6066 * symtab.h, symtab.cc (symbol_table::fcn_info::fcn_info_rep::find,
6067 symbol_table::fcn_info::fcn_info_rep::find_function,
6068 symbol_table::fcn_info::find, symbol_table::fcn_info::find_function,
6069 symbol_table::find, symbol_table::find_function,
6070 symbol_table::do_find, symbol_table::insert, symbol_table::varref,
6071 symbol_table::varval, symbol_table::persistent_varref,
6072 symbol_table::persistent_varval, symbol_table::erase_persistent,
6073 symbol_table::is_variable, symbol_table::clear,
6074 symbol_table::clear_variables, symbol_table::clear_global,
6075 symbol_table::clear_variable, symbol_table::clear_global_pattern,
6076 symbol_table::clear_variable_pattern, symbol_table::push_context,
6077 symbol_table::pop_context, symbol_table::mark_hidden,
6078 symbol_table::mark_global, symbol_table::glob,
6079 symbol_table::glob_variables, symbol_table::variable_names,
6080 symbol_table::is_local_variable, symbol_table::is_global):
6081 Eliminate scope arg. Change all uses.
6082 (symbol_table::erase_scope, symbol_table::dup_scope):
6085 * pt-stmt.cc (tree_statement::eval): Don't update statement info
6086 in octave_call_stack if debugging.
6088 * pt-id.h (tree_identifier::xsym): New function.
6089 (tree_identifier::rvalue, tree_identifier::lvalue,
6090 tree_identifier::dup, tree_identifier::is_defined,
6091 tree_identifier::is_variable, tree_identifier::mark_global,
6092 tree_identifier::mark_as_static, tree_identifier::do_lookup,
6093 tree_identifier::mark_as_formal_parameter):
6094 Use xsym to access symbol.
6095 (tree_identifier::scope): New data member.
6096 (tree_identifier::tree_identifier): Initialize it.
6098 * ov-usr-fcn.cc (octave_user_script::octave_user_script,
6099 octave_user_function::octave_user_function):
6100 Initialize call_depth to -1.
6101 (octave_user_script::do_multi_index_op): Fix comparison of
6102 call_depth with Vmax_recursion_depth.
6103 (octave_user_function::do_multi_index_op):
6104 Compare call depth > 0, instead of > 1.
6105 * ov-usr-fcn.h (octave_user_function::save_args_passed):
6106 Compare call depth > 0, instead of > 1.
6108 * input.cc (Vdebugging): New variable.
6109 (get_user_input): Eliminate DEBUG argument. Use global Vdebugging
6110 variable instead. Change all callers.
6111 (saved_frame): New static variable.
6112 (restore_frame): New function.
6113 (do_keyboard): Unwind-protect Vdebugging here and set it to TRUE.
6114 Save current frame. Use unwind_protect to restore it.
6115 (Fkeyboard): Save current frame. Use unwind_protect to restore it.
6116 Move up the call stack one frame before calling do_keyboard.
6117 * input.h (Vdebugging): Provide decl.
6119 * mex.cc (mexGetVariable): Handle global vars with get_global_value.
6120 (mexPutVariable): Likewise, with set_global_value.
6122 * octave.cc (intern_argv): Assert that we are at the top level.
6123 Don't pass scope to symbol_table::varref or symbol_table::mark_hidden.
6125 * load-save.cc (install_loaded_variable): Use
6126 symbol_table::global_varref instead of passing global scope to
6127 symbol_table::varref.
6129 * help.cc (make_name_list): Call symbol_table::global_variable_names
6130 and symbol_table::top_level_variable_names instead of passing
6131 scope to symbol_table::variable_names.
6133 * debug.cc (do_dbupdown, Fdbup, Fdbdown): New functions.
6134 (current_stack_frame): Delete static variable.
6135 (Fdbstack): Rename from F__dbstack__. Implement all of dbstack
6136 here instead of partially in dbstack.m.
6138 2008-05-03 John W. Eaton <jwe@octave.org>
6140 * pt-arg-list.cc (F__end__): If there are more dimensions than
6141 indices, smash extra dimensions first.
6142 (num_indices): New static variable.
6143 (tree_argument_list::convert_to_const_vector): Save and set it.
6145 * parse.y (parse_fcn_file): Also temporarily set parser_end_of_input
6146 and get_input_from_eval_string to false while reading script files.
6148 2008-05-01 John W. Eaton <jwe@octave.org>
6150 * parse.y (load_fcn_from_file): Expect
6151 * dynamic-ld.cc (octave_dynamic_loader::do_load_oct):
6152 Search currently loaded .oct files by file name. Don't search
6153 currently loaded files for functions.
6154 (octave_shlib_list::find_file, octave_shlib_list::do_find_file):
6156 (octave_shlib_list::search, octave_shlib_list::do_search): Delete.
6158 * dynamic-ld.cc (octave_dynamic_loader::do_load_oct): No need to
6159 do load_path lookups here.
6160 (octave_shlib_list::iterator, octave_shlib_list::const_iterator):
6162 (octave_shlib_list::do_remove, octave_shlib_list::do_search,
6163 octave_shlib_list::do_display): Use them.
6164 (octave_mex_file_list::iterator, octave_mex_file_list::const_iterator):
6166 (octave_mex_file_list::do_remove): Use them.
6168 2008-05-03 Rafael Laboissiere <rafael@debian.org>
6170 * DLD-FUNCTIONS/time.cc, file_io.cc: Use ischar instead of
6173 2008-04-30 John W. Eaton <jwe@octave.org>
6175 * dynamic-ld.cc (octave_dynamic_loader::do_load_oct):
6176 If function already exists, reload it anyway. Clear existing
6177 oct_file only if reloading a function from the same file.
6178 (octave_shlib_list::display): New static function.
6179 (octave_shlib_list::do_display): New function.
6181 * symtab.cc (out_of_date_check_internal): Better handling for
6182 functions found in files by relative file names.
6183 (load_out_of_date_fcn): New function.
6185 * ls-oct-ascii.cc (extract_keyword): Return early if first char is
6186 not a comment character.
6187 (read_ascii_data): Accept .nargin. and .nargout. as valid identifiers.
6189 * ov-fcn-handle.cc: Combine tests. Test saving and loading
6190 handles for built-in, .oct, and .m functions.
6191 (octave_fcn_handle::save_ascii, octave_fcn_handle::save_binary,
6192 octave_fcn_handle::save_hdf5, octave_fcn_handle::print):
6193 Avoid dereferencing invalid pointer.
6195 * data.cc: Fix tests. Use "%!assert", not "%! assert" for
6196 individual assert tests.
6198 2008-04-30 Jaroslav Hajek <highegg@gmail.com>
6200 * ov-base.cc, ov-base.h, ov-bool-mat.h, ov-bool-sparse.h,
6201 ov-bool.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h,
6202 ov-cx-sparse.cc, ov-cx-sparse.h, ov-intx.h, ov-range.h,
6203 ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h,
6204 ov-scalar.cc, ov-scalar.h, ov.h:
6205 Provide log2 mapper function.
6206 * data.cc (Flog2): New function.
6208 2008-04-25 John W. Eaton <jwe@octave.org>
6210 * pt-stmt.h (tree_statement_list::function_body): New data member.
6211 (tree_statement_list::tree_statement_list): Initialize it.
6212 (tree_statement_list::mark_as_script_body): New function.
6213 (tree_statement::maybe_echo_code, tree_statement::eval):
6214 Rename in_function_body argument to in_function_or_script_body.
6215 * pt-stmt.cc (tree_statement::eval): Only set statement in call
6216 stack if in_function_or_script_body is true.
6218 * pt-stmt.cc (tree_statement_list::eval): Call elt->eval with
6219 function_body || script_body.
6220 * ov-usr-fcn.cc (octave_user_script::octave_user_script):
6221 command list as script body here.
6222 (octave_user_function::octave_user_function):
6223 Mark command list as function body here.
6224 * parse.y (start_function, make_anon_fcn_handle): Not here.
6226 * toplev.h, toplev.cc (octave_call_stack::backtrace,
6227 octave_call_stack::do_backtrace): New arg, N. Skip innermost N
6230 * debug.cc (F__dbstack__): New function.
6231 (current_stack_frame): New static variable.
6233 * error.cc (verror, pr_where): Use octave_call_stack instead of
6234 tree_statement stack to get line and column information.
6235 (pr_where): Use octave_call_stack instead of tree_statement stack
6236 to get current statement.
6237 * input.cc (get_user_input): Extract current line number from
6238 octave_call_stack instead of tree_statement_stack.
6239 * pt-stmt.cc (tree_statement::eval): Put current statement on
6240 octave_call_stack instead of tree_statement_stack.
6241 * pt-stmt.h, pt-stmt.cc (class tree_statement_stack): Delete.
6243 * toplev.h, toplev.cc (octave_call_stack::call_stack_elt):
6245 (octave_call_stack::cs): Now a deque of call_stack_elts.
6247 (octave_call_stack::current_statement,
6248 octave_call_stack::current_line,
6249 octave_call_stack::current_column,
6250 octave_call_stack::top_statement,
6251 octave_call_stack::set_statement, octave_call_stack::backtrace):
6252 New static functions.
6253 (octave_call_stack::do_current_line,
6254 octave_call_stack::do_current_column,
6255 octave_call_stack::do_top_statement,
6256 octave_call_stack::do_set_statement,
6257 octave_call_stack::do_backtrace): New member functions.
6259 2008-04-24 John W. Eaton <jwe@octave.org>
6261 * toplev.h, toplev.cc (octave_call_stack::unwind_pop_script):
6262 Delete unused function.
6264 * ov-usr-fcn.cc: Move constructor definitions here, from ov-usr-fcn.h.
6265 * ov-usr-fcn.h (octave_user_script::octave_user_script):
6266 Also Initialize t_parsed and t_checked.
6268 2008-04-24 Jaroslav Hajek <highegg@gmail.com>
6270 * ov-usr-fcn.h (octave_user_script::octave_user_script):
6271 Initialize call_depth.
6273 2008-04-24 John W. Eaton <jwe@octave.org>
6275 * file-io.cc (do_stream_open): Return -1 for directories.
6277 2008-04-23 John W. Eaton <jwe@octave.org>
6279 * DLD-FUNCTIONS/__qp__.cc (qp): Avoid bounds error when removing
6280 constraint from active set.
6282 * lex.l (text_yyinput): New function. Use it in place of yyinput.
6283 (next_token_is_sep_op, scan_for_comments, eat_whitespace,
6284 have_continuation): No need to check for CR or CRLF.
6285 * parse.y (text_getc): Also return NL for single CR.
6287 2008-04-32 Michael Goffioul <michael.goffioul@gmail.com>
6289 * input.cc (get_input_from_file): Open file in binary mode.
6291 2008-04-20 John W. Eaton <jwe@octave.org>
6293 * oct-stream.cc (octave_stream::read): Allow single data type
6294 specification but return double.
6296 2008-04-18 John W. Eaton <jwe@octave.org>
6298 * lex.l, lex.h (process_comment): New arg, start_in_block. Call
6299 grab_block_comment if start_in_block is true. Change all uses.
6300 * lex.l (grab_block_comment): New function.
6301 (grab_comment_block): New arg, at_bol. Change all uses.
6302 Call grab_block_comment if we find the start of a block comment.
6303 (block_comment_nesting_level): New static variable.
6304 (^{S}*{CCHAR}\{{S}*{NL}): New rule.
6305 (<<EOF>>): Warn about open block comments.
6306 (reset_parser): Set block_comment_nesting_level to zero.
6307 * parse.y (parse_fcn_file): Stash help text from
6308 gobble_leading_white_space after calling reset_parser.
6309 (text_getc): Keep track of input_line_number here.
6310 (skip_white_sapce): Don't increment input_line_number here.
6311 * lex.l (grab_comment_block): Or here.
6313 * lex.l (Vdisplay_tokens): New static variable.
6314 (F__display_tokens__): New function.
6315 (display_token): New function.
6316 (DISPLAY_TOK_AND_RETURN): New macro.
6317 (COUNT_TOK_AND_RETURN): Use DISPLAY_TOK_AND_RETURN.
6318 (<COMMAND_START>[\"\'], "'", \"): Move handle_string outside of
6319 COUNT_TOK_AND_RETURN macro parameter list.
6320 (handle_identifier): Don't use macros to return token values here.
6321 (<MATRIX_START>{S}*{COMMENT}{SNLCMT}*|<MATRIX_START>{S}*{NL}{SNLCMT}*):
6322 Recognize block comments here.
6324 * pr-output.cc (Fdisp): If nargout > 0, produce an sq-string
6325 unless arg is a dq-string.
6327 2008-04-17 John W. Eaton <jwe@octave.org>
6329 * parse.y (looks_like_copyright): Handle leading whitespace.
6330 (class stdio_stream_reader): New class.
6331 (skip_white_space): New function.
6332 (gobble_leading_white_space): New arg, EOF. Change all uses.
6333 Use skip_white_space and grab_comment_block to process comments.
6334 (process_leading_comments): Delete.
6335 (parse_fcn_file): Call gobble_leading_white_space instead of
6336 process_leading_comments.
6337 Skip parsing if gobble_leading_white_space detects EOF.
6338 * lex.l (process_comment): Delete CCHAR arg. Change all uses.
6339 ({CCHAR}): Unput comment character before calling process_comment.
6340 (grab_comment_block): Rename from grab_help_text. Don't discard
6341 spaces from comment text. Update input_line_number and
6342 current_input_column as characters are read. Warn only once about
6343 incompatible comment characters in a given block of comments.
6344 Use stream_reader class instead of accessing yyinput and yyunput
6346 (class flex_stream_reader): New class.
6347 (process_comment): Use grab_comment_block to handle all comments.
6348 Don't call maybe_gripe_matlab_incompatible_comment.
6349 Always store comment text returned by grab_comment_block.
6350 * lex.h (grab_comment_block): Provide decl.
6351 (class stream_reader): New class.
6353 2008-04-16 John W. Eaton <jwe@octave.org>
6355 * parse.y (Fautoload, Fmfilename): Call
6356 octave_call_stack::caller_user_code, not
6357 octave_call_stack::caller_user_script_or_function.
6358 * toplev.cc, toplev.h (octave_call_stack::caller_user_code):
6359 Rename from octave_call_stack::caller_user_script_or_function.
6360 (octave_call_stack::do_caller_user_code): Rename from
6361 octave_call_stack::do_caller_user_script_or_function.
6362 * ov-usr-fcn.h (class octave_user_code): New class, derived from
6364 (class octave_user_function, class octave_user_script): Derive
6365 from octave_user_code, not octave_function.
6366 (octave_user_script::user_code_value,
6367 octave_user_function::user_code_value): New functions.
6368 * ov.cc (octave_value::user_script_value,
6369 octave_value::user_code_value): New functions.
6370 * ov.h: Provide decls.
6371 (octave_value::is_user_code, octave_value::is_user_script):
6373 * ov-base.cc (octave_base_value::user_script_value,
6374 octave_base_value::user_code_value): New virutal functions.
6375 * ov-base.h: Provide decls.
6376 (octave_base_value::is_user_script, octave_base_value::is_user_code):
6377 New virtual functions.
6378 * error.cc (verror, pr_where, error_2, warning_1):
6379 Call octave_call_stack::caller_user_code instead of
6380 octave_call_stack::caller_user_script_or_function
6381 * input.cc (get_user_input): Likewise.
6382 * debug.h (bp_table::breakpoint_map): Use pointer to
6383 octave_user_code instead of octave_user_function.
6384 * debug.cc (get_user_code): Rename from get_user_function.
6385 Return pointer to octave_user_code instead of octave_user_function.
6387 (bp_table::do_add_breakpoint, bp_table::do_remove_breakpoint,
6388 bp_table::do_remove_all_breakpoints_in_file,
6389 bp_table::do_get_breakpoint_list):
6390 Avoid dereferencing invalid pointers.
6391 (parse_dbfunction_params): Call
6392 octave_call_stack::caller_user_code, not
6393 octave_call_stack::caller_user_script_or_function.
6395 * load-save.cc (Fsave): Fix continuation character in doc string.
6397 * pt-walk.h (tree_walker::visit_function_def): New function.
6398 * pt-pr-code.cc (tree_print_code::visit_function_def): New function.
6399 * pt-pr-code.h: Provide decl.
6400 * pt-bp.cc (tree_breakpoint::visit_function_def): New function.
6401 * pt-bp.h: Provide decl.
6402 * pt-check.cc (tree_checker::visit_function_def): New function.
6403 * pt-check.h: Provide decl.
6405 * parse.y (finish_function): Return ptr to tree_function_def object
6406 if curr_fcn_ptr is not defined. Avoid dereferencing invalid pointers.
6407 (frob_function): Set curr_fcn_ptr only when reading a function file.
6408 (function): Call finish function in both cases to generate value
6411 * pt-cmd.h, pt-cmd.cc (tree_function_def): New class.
6413 * parse.y (parse_and_execute): Delete.
6414 * parse.h: Delete decl.
6416 * pt-pb.cc (tree_breakpoint::visit_octave_user_script): New function.
6417 * pt-pb.h: Provide decl.
6418 * pt-check.cc (tree_checker::visit_octave_user_script): New function.
6419 * pt-check.h: Provide decl.
6420 * pt-pr-code.cc (tree_print_code::visit_octave_user_script):
6422 * pt-pr-code.h: Provide decl.
6423 * pt-walk.h (visit_octave_user_script): New pure virtual function.
6425 * parse.y (make_script, process_leading_comments,
6426 looking_at_function_keyword): New static functions.
6427 (SCRIPT): New token.
6428 (script): New non-terminal.
6429 (command): Handle script here.
6430 (parse_fcn_file): Eliminate EXEC_SCRIPT argument. Change all
6431 callers. Parse scripts and return an octave_user_script rather
6432 than executing them here.
6433 (load_fcn_from_file): Handle script and function files the same.
6434 (source_file): Call d_multi_index_op on object returned by
6436 (is_function_file): Delete.
6437 (gobble_leading_white_space): Don't recurse. Simplify. Eliminate
6438 SKIP_CODE, IN_PARTS, and SAVE_COPYRIGHT arguments. Change all
6440 (octave_function_ptr): Delete unused typedef.
6441 (get_help_from_file): If help text isn't found by
6442 gobble_leading_whitespace, parse file to find it.
6444 * lex.l (SCRIPT_FILE_BEGIN): New exclusive start state.
6445 (prep_lexer_for_script): New function.
6446 (grab_help_text): New arg, EOF.
6447 (process_comment): New function.
6449 * lex.h (prep_lexer_for_script): Provide decl.
6451 * lex.h, lex.cc, parse.y (lexical_feedback::beginning_of_function):
6452 Delete data member and all uses.
6454 * ov-usr-fcn.cc (octave_user_script::~octave_user_script):
6455 Move destructor here from ov-usr-fcn.h. Delete cmd_list.
6456 (octave_user_script::subsref, octave_user_script::accept,
6457 octave_user_script::traceback_error): New functions.
6458 (octave_user_script::do_multi_index_op):
6459 Execute cmd_list instead of calling source_file.
6460 * ov-usr-fcn.h (octave_usr_script::cmd_list,
6461 octave_usr_script::t_parsed, octave_usr_script::t_checked,
6462 octave_usr_script::call_depth): New data members.
6463 (octave_usr_script::octave_usr_script): Initialize all data members.
6464 (octave_usr_script::octave_usr_script (const std::string&, const
6465 std::string&, tree_statement_list *, const std::string&)):
6467 (octave_usr_script::function_value,
6468 octave_usr_script::user_script_value, mark_fcn_file_up_to_date,
6469 octave_usr_script::stash_fcn_file_time,
6470 octave_usr_script::time_parsed, octave_usr_script::time_checked,
6471 octave_usr_script::subsref, octave_usr_script::body): New functions.
6472 (octave_user_script::subsref, octave_user_script::accept,
6473 octave_user_script::traceback_error): Provide decls.
6475 2008-04-14 Jaroslav Hajek <highegg@gmail.com>
6477 * oct-stream.cc (octave_scan_1): Ensure digit following X is hex
6478 digit before reading number as hex.
6480 2008-04-14 John W. Eaton <jwe@octave.org>
6482 * file-io.cc (Ffread): Allow SKIP arg to be omitted.
6483 (Ffwrite): Likewise. Handle args in a way consistent with Ffread.
6485 2008-04-09 Michael Goffioul <michael.goffioul@gmail.com>
6487 * DLD-FUNCTIONS/dispatch.cc: Replace system("echo '...'>...") calls
6488 with real file writing.
6490 2008-04-07 Jaroslav Hajek <highegg@gmail.com>
6492 * DLD-FUNCTIONS/qr.cc (Fqrshift): New function.
6493 * DLD-FUNCTIONS/chol.cc (Fcholinsert, Fcholdelete, Fcholshift):
6496 2008-04-04 John W. Eaton <jwe@octave.org>
6498 * parse.y (make_constant): Handle escape sequences in dq-strings.
6500 2008-04-03 John W. Eaton <jwe@octave.org>
6502 * parse.y (make_constant): Also stash original text for strings.
6504 * ov-fcn-handle.cc (octave_fcn_handle::subsref):
6505 Don't call next_subsref here.
6507 2008-04-01 John W. Eaton <jwe@octave.org>
6509 * pt-id.h (do_lookup (bool&, bool)): Delete.
6510 (do_lookup (tree_argument_list *, const string_vector&,
6511 octave_value_list&, bool&)): Call MAYBE_DO_BREAKPOINT here.
6513 2008-04-02 David Bateman <dbateman@free.fr>
6515 * graphics.cc (void gnuplot_backend::close_figure (const
6516 octave_value&) const): Allow for an input and output stream.
6518 2008-03-28 Jaroslav Hajek <highegg@gmail.com>
6520 * DLD-FUNCTIONS/lookup.cc: New file.
6521 * Makefile.in (DLD_XSRC): Add it to the list.
6523 2008-03-28 David Bateman <dbateman@free.fr>
6525 * ov-complex.cc (SCALAR_MAPPER, CD_SCALAR_MAPPER): New macro for
6526 complex values with zero imaginary part.
6527 (erf, erfc, gamma, lgamma): Use the new mappers to define these
6529 * ov-complex.h (erf, erfc, gamma, lgamma): Declare them.
6530 * ov-cx-mat.cc (any_element_less_than, any_element_greater_than):
6531 New static functions
6532 (DARRAY_MAPPER, CD_ARRAY_MAPPER): New macro for complex values
6533 with zero imaginary part.
6534 (erf, erfc, gamma, lgamma): Use the new mappers to define these
6536 * ov-cx-mat.h (erf, erfc, gamma, lgamma): Declare them.
6537 * ov-cx-sparse.cc (any_element_less_than, any_element_greater_than):
6538 New static functions
6539 (DSPARSE_MAPPER, CD_SPARSE_MAPPER): New macro for complex values
6540 with zero imaginary part.
6541 (erf, erfc, gamma, lgamma): Use the new mappers to define these
6543 * ov-cx-sparse.h (erf, erfc, gamma, lgamma): Declare them.
6544 * ov-re-sparse.cc (CD_SPARSE_MAPPER): Use correct mapper functors.
6545 * mapper.cc: Add tests for the above cases.
6547 2008-03-27 John W. Eaton <jwe@octave.org>
6549 * DLD-FUNCTIONS/max.cc: Rename from minmax.cc.
6550 * Makefile.in (DLD_XSRC): Rename minmax.cc to max.cc.
6552 * DLD-FUNCTIONS/__convn__.cc (convn): Use traits class and
6553 typedefs to allow all types to be deduced from argument types.
6555 2008-03-27 Søren Hauberg <hauberg@gmail.com>
6557 * DLD-FUNCTIONS/__convn__.cc (Fconvn): Allow convolving real data with
6560 2008-03-26 John W. Eaton <jwe@octave.org>
6562 * ov-range.h (octave_range::subsref (const std::string&,
6563 const std::list<octave_value_list>&, int)):
6564 Forward to simple subsref.
6565 * ov-base-sparse.h (octave_base_sparse<T>::subsref (const std::string&,
6566 const std::list<octave_value_list>&, int)): Likewise.
6567 * ov-base-scalar.h (octave_base_sparse<T>::subsref (const std::string&,
6568 const std::list<octave_value_list>&, int)): Likewise.
6569 * ov-base-matrix.h (octave_base_matrix<T>::subsref (const std::string&,
6570 const std::list<octave_value_list>&, int)): Likewise.
6572 * ov-struct.cc, ov-cell.h (octave_cell::subsref (const
6573 std::string&, const std::list<octave_value_list>&, int)):
6574 Define nargout version of subsref instead of simple version.
6575 * ov-struct.cc, ov-struct.h (octave_struct::subsref (const
6576 std::string&, const std::list<octave_value_list>&, int)):
6577 Define nargout version of subsref instead of simple version.
6579 * ov-builtin.h (octave_builtin::subsref (const std::string&,
6580 const std::list<octave_value_list>&): Forward to nargout subsref.
6581 * ov-cell.h (octave_cell::subsref (const std::string&,
6582 const std::list<octave_value_list>&)):
6583 * ov-class.h (octave_class::subsref (const std::string&,
6584 const std::list<octave_value_list>&): Likewise.
6585 * ov-fcn-handle.h (octave_fcn_handle::subsref (const std::string&,
6586 const std::list<octave_value_list>&): Likewise.
6587 * ov-list.h (octave_list::subsref (const std::string&,
6588 const std::list<octave_value_list>&): Likewise.
6589 * ov-mex-fcn.h (octave_mex_function::subsref (const std::string&,
6590 const std::list<octave_value_list>&): Likewise.
6591 * ov-struct.h (octave_struct::subsref (const std::string&,
6592 const std::list<octave_value_list>&)):
6593 * ov-usr-fcn.h (octave_user_function::subsref (const std::string&,
6594 const std::list<octave_value_list>&): Likewise.
6596 * ov.cc (octave_value::subsref): Use value of nargout instead of
6597 is_constant method to decide which type of subsref method to call.
6598 (octave_value::assign): Always call simple subref method here.
6600 * DLD-FUNCTIONS/chol.cc, DLD-FUNCTIONS/det.cc,
6601 DLD-FUNCTIONS/getpwent.cc, DLD-FUNCTIONS/inv.cc,
6602 DLD-FUNCTIONS/qr.cc, DLD-FUNCTIONS/symrcm.cc, file-io.cc):
6605 2008-03-26 Søren Hauberg <hauberg@gmail.com>
6607 * DLD-FUNCTIONS/__convn__.cc (Fconvn):
6608 Call complex_array_value to extract N-d array.
6610 2008-03-26 John W. Eaton <jwe@octave.org>
6612 * ov-base-sparse.cc (octave_base_sparse<T>::print_raw):
6613 Also display percentage of elements that are nonzero.
6615 2008-03-25 Søren Hauberg <hauberg@gmail.com>
6617 * DLD-FUNCTIONS/__convn__.cc: New file.
6618 * Makefile.in: Add __convn__.cc
6620 2008-03-25 David Bateman <dbateman@free.fr>
6622 * DLD-FUNCTIONS/hex2num.cc: New function
6623 * Makefile.in (DLD_XSRC): Add hex2num.cc.
6625 2008-03-25 Jaroslav Hajek <highegg@gmail.com>
6627 * mappers.cc (Fexpm1, Flog1p): New functions.
6628 * ov-base.cc, ov-base.h, ov-bool-mat.h, ov-bool-sparse.h,
6629 ov-bool.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h,
6630 ov-cx-sparse.cc, ov-cx-sparse.h, ov-range.h, ov-re-mat.cc,
6631 ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc,
6633 Provide expm1 and log1p functions.
6635 * mappers.cc (Froundb): New functions
6636 * ov-base.cc, ov-base.h, ov-bool-mat.h, ov-bool-sparse.h,
6637 ov-bool.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h,
6638 ov-cx-sparse.cc, ov-cx-sparse.h, ov-intx.h, ov-range.h,
6639 ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h,
6640 ov-scalar.cc, ov-scalar.h, ov.h:
6641 Provide roundb mapper function.
6643 2008-03-25 Jaroslav Hajek <highegg@gmail.com>
6645 * load-save.cc (save_vars): Handle -struct modifier.
6646 (save_fields): New function.
6647 (Fsave): Document new feature.
6649 2008-03-25 John W. Eaton <jwe@octave.org>
6651 * lex.h (lexical_feedback::looking_at_initializer_expression):
6653 * lex.l (lexical_feedback::init): Initialize it.
6654 (handle_identifier): Don't unconditionally force identifiers to be
6655 variables in the current scope. Don't call force_local_variable
6656 for symbols that appear in parameter initializer expressions.
6657 * parse.y (decl_param_init): New parser "subroutine".
6658 (decl2): Use it. Set lexer_flags.looking_at_initializer_expression
6659 to false after parsing initializer.
6661 2008-03-24 David Bateman <dbateman@free.fr>
6663 * data.cc (map_s_s): Fix for sparse/sparse mappers that resulted
6664 in an empty sparse matrix being returned.
6665 (Fhypot): New function based on the libm hypot function.
6667 2008-03-24 Primozz Peterlin <primozz.peterlin@gmail.com>
6669 * variables.cc (Fexist): Doc fix.
6671 2008-03-23 David Bateman <dbateman@free.fr>
6673 * OPERATORS/op-int.h: Add el_div and el_ldiv operators to the
6674 binops that were missing them. Added elem_pow functions for mixed
6675 integer floating point cases. Initialize the mixed integer
6676 floating point cases.
6678 2008-03-21 John W. Eaton <jwe@octave.org>
6680 * ov-cell.h (octave_cell::is_constant): Return true.
6681 * ov-cell.h, ov-cell.cc (octave_cell::subsref (const std::string&,
6682 const std::list<octave_value_list>&)): Define.
6683 (octave_cell::subsref (const std::string&,
6684 const std::list<octave_value_list>&, int)): Call panic_impossible.
6686 * ov-struct.h (octave_struct::is_constant): New function.
6687 * ov-struct.h, ov-struct.cc (octave_struct::subsref (const std::string&,
6688 const std::list<octave_value_list>&)): Define.
6689 (octave_struct::subsref (const std::string&,
6690 const std::list<octave_value_list>&, int)): Call panic_impossible.
6692 2008-03-21 David Bateman <dbateman@free.fr>
6694 * DLD-FUNCTIONS/amd.cc: New file.
6695 * Makefile.in (DLD_XSRC): Add amd.cc.
6697 2008-03-20 David Bateman <dbateman@free.fr>
6699 * Cell.cc (Cell Cell::diag (void) const): delete.
6700 (Cell Cell::diag (octave__idx_type) const):Rewrite in terms of
6701 template classes function.
6702 * Cell.h (Cell diag (void) const): delete.
6704 * ov.h (octave_value diag (octave_idx_type) const): New method.
6705 * ov-base.h (virtual octave_value diag (octave_idx_type) const):
6707 * ov-base.cc (octave_value octave_base_value::diag
6708 (octave_idx_type) const): New default method.
6710 * ov-base-mat.h (octave_value diag (octave_idx_type) const): New
6712 * ov-base-sparse.h (octave_value diag (octave_idx_type) const): New
6714 * ov-base-scalar.h (octave_value diag (octave_idx_type) const): New
6716 * ov-range.h (octave_value diag (octave_idx_type) const): New
6719 * data.cc (make_diag, make_spdiag): Delete.
6720 (Fdiag): Rewrite in terms of octave_value diag function.
6722 * data.cc (static octave_value make_diag (const Cell&,
6723 octave_idx_type)): New instantiation of template function.
6724 (static octave_value make_diag (const octave_value&,
6725 octave_idx_type)): Allow cell arrays.
6727 * Cell.cc (Cell Cell::diag (void) const, Cell Cell::diag
6728 (octave__idx_type)): New methods for diagonal matrices.
6729 * Cell.h (Cell Cell::diag (void) const, Cell Cell::diag
6730 (octave__idx_type)): Declare them.
6732 2008-03-18 David Bateman <dbateman@free.fr>
6734 * ov-re-mat.cc (lgamma): Convert to a allow negative arguments.
6735 * ov-re-sparse.cc (lgamma): ditto.
6736 * ov-scalar.cc (lgamma): ditto.
6738 * DLD-FUNCTIONS/minmax.cc: 64-bit indexing fix.
6740 2008-03-13 John W. Eaton <jwe@octave.org>
6742 * ov-usr-fcn.cc (octave_user_function::octave_user_function):
6743 Handle num_named_args in initialization list instead of functinon body.
6745 * octave.gperf: Eliminate varargin and varargout keywords.
6746 * lex.l (is_keyword_token): Eliminate varargin_kw and varargout_kw
6747 from switch statement.
6748 * parse.y (return_list): Eliminate special cases for VARARGOUT.
6749 Call validate on tree_parameter_list object.
6750 (param_list1): Likewise, for VARARGIN.
6751 * pt-misc.cc (tree_parameter_list::validate): New function.
6752 (tree_parameter_list::mark_varargs_only): Now private.
6753 (tree_parameter_list::mark_varargs): Now private.
6754 * pt-misc.h (tree_parameter_list::validate): Provide decl.
6756 2008-03-12 John W. Eaton <jwe@octave.org>
6758 * variables.cc (Vwhos_line_format): Omit print_dims parameter.
6759 Fix doc string in Vwhos_line_format DEVAR.
6760 (symbol_record_name_compare): Delete unused function.
6761 (whos_parameter::dimensions): Delete struct field.
6762 (symbol_info_list): New class.
6763 (dimensions_string_req_first_space, make_dimensions_string,
6764 dimensions_string_req_total_space): Delete.
6765 (parse_whos_line_format): Move functionality to new
6766 symbol_info_list class.
6767 (print_symbol_info_line): Move functionality to new
6768 symbol_info_list::struct symbol_info::displaly_line method.
6769 (do_who): Simplify with new symbol_info_list class.
6770 Handle index expressions in addition to symbol names.
6772 * DLD-FUNCTIONS/dlmread.cc (Fdlmread): Fix separator detection.
6774 2008-03-11 John W. Eaton <jwe@octave.org>
6776 * DLD-FUNCTIONS/eig.cc (Feig): Handle possible error from EIG.
6777 * DLD-FUNCTIONS/qp.cc (qp, Fqp): Likewise.
6778 * xpow.cc (xpow): Likewise.
6780 2008-03-11 John W. Eaton <jwe@octave.org>
6782 * DLD-FUNCTIONS/dlmread.cc: Style fixes.
6784 2008-03-11 David Bateman <dbateman@free.fr>
6786 * DLD-FUNCTIONS/dlmread.cc: Function ported from octave forge. Add
6787 spreadsheet style ranges.
6788 * Makefile.in (DLD_XSRC): Add dlmread.cc.
6790 2008-03-10 John W. Eaton <jwe@octave.org>
6792 * mex.cc (mxCreateLogicalScalar): Argument is now mxLogical.
6794 * data.cc (Fisfloat): New function.
6795 * ov.h (octave_value::is_float_type): Ditto.
6796 * ov-base.h (octave_base_value::is_float_type): Ditto.
6797 * ov-complex.h (octave_complex): Ditto.
6798 * ov-cx-mat.h (octave_complex_matrix): Ditto.
6799 * ov-cx-sparse.h (octave_sparse_complex_matrix): Ditto.
6800 * ov-range.h (octave_range): Ditto.
6801 * ov-re-mat.h (octave_matrix): Ditto.
6802 * ov-re-sparse.h (octave_sparse_matrix): Ditto.
6803 * ov-scalar.h (octave_scalar): Ditto.
6805 * mxarray.h.in (mxLogical): Use unsigned char instead of int.
6806 From Antwerpen, G. (Gert) van <gert.vanantwerpen@tno.nl>.
6808 2008-03-07 John W. Eaton <jwe@octave.org>
6810 * ov-struct.cc (octave_struct::print_raw): Don't print contents fo
6811 struct arrays that have more than one element.
6813 2008-03-06 David Bateman <dbateman@free.fr>
6815 * DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): Document that
6816 the initial interpretation of a positive definite return from
6817 matrix_type is that the matrix is "probably" positive definite and
6820 2008-03-06 John W. Eaton <jwe@octave.org>
6822 * parse.y: Move tests here from test/test_eval.m.
6823 * DLD-FUNCTIONS/fft.cc: Move tests here from test/test_signal.m.
6824 * DLD-FUNCTIONS/dassl.cc: Move tests here from test/test_diffeq.m.
6825 * DLD-FUNCTIONS/lsode.cc: Move tests here from test/test_diffeq.m.
6826 * DLD-FUNCTIONS/quad.cc: Move tests here from test/test_quad.m.
6827 * DLD-FUNCTIONS/time.cc: Move tests here from test/test_system.m.
6829 2008-03-06 Alexander Barth <barth.alexander@gmail.com>
6831 * DLD-FUNCTIONS/__lin_interpn__.cc (lookup):
6832 Handle decreasing coordinate values.
6834 2008-03-05 Jaroslav Hajek <highegg@gmail.com>
6836 * DLD-FUNCTIONS/chol.cc (Fcholupdate): Adjust code to meet
6837 Octave's coding guidelines.
6839 * DLD-FUNCTIONS/qr.cc (Fqrupdate, Fqrinsert, Fqrdelete): Adjust
6840 code to meet Octave's coding guidelines.
6841 * DLD-FUNCTIONS/qr.cc (Fqrdelete): Fix incorrect test.
6843 * DLD-FUNCTIONS/qr.cc (Fqrinsert, Fqrdelete): Modify to use
6844 0-based indexing in liboctave's QR classes.
6846 2008-03-04 Jaroslav Hajek <highegg@gmail.com>
6848 * DLD-FUNCTIONS/chol.cc (Fcholupdate): New function.
6850 * DLD-FUNCTIONS/qr.cc (Fqrupdate, Fqrinsert, Fqrdelete):
6853 2008-03-04 Ryan Rusaw <rrusaw@gmail.com>
6855 * toplev.h (octave_call_stack::element): New static function.
6856 (octave_call_stack::cs): Now std::deque instead of std::list.
6858 * pt-stmt.cc (curr_statement, curr_caller_statement): Delete.
6859 * pt-stmt.h: Delete decls.
6861 * pt-stmt.h, pt-stmt.cc (tree_statement_stack): New class.
6863 * pt-stmt.cc (tree_statement::eval): Use tree_statement_stack
6864 instead of curr_statement variable.
6866 * ov-usr-func.cc (octave_user_function::do_multi_index_op):
6867 Don't set curr_caller_statement.
6869 * error.cc (verror, pr_where): Call tree_statement_stack::current_line
6870 and tree_statement_stack::current_column instead of
6871 instead of curr_statement->line and curr_statement->column.
6872 * input.cc (get_user_input): Likewise.
6874 2008-02-27 John P. Swensen <jpswensen@gmail.com>
6876 * debug.cc (get_user_function): Call symtab::find_function instead
6877 of symtab::find_user_function.
6879 2008-02-27 John W. Eaton <jwe@octave.org>
6881 * oct-stream.cc (do_read): Stop reading if seek fails.
6883 2008-02-26 John W. Eaton <jwe@octave.org>
6885 * ov-base-int.cc (octave_base_int_helper,
6886 octave_base_int_helper_traits): New templates and specializations.
6887 (octave_base_int_matrix<T>::convert_to_str_internal,
6888 octave_base_int_matrix<T>::convert_to_str_internal): Use them.
6890 * DLD-FUNCTIONS/rand.cc (do_rand): Pass name of calling function
6891 to octave_rand::state.
6893 * variables.cc (bind_ans): Handle cs-lists recursively.
6895 * ov-cs-list.h, ov-cs-list.cc (octave_cs_list::print,
6896 octave_cs_list::print_raw): Delete.
6898 2008-02-25 John W. Eaton <jwe@octave.org>
6900 * Cell.cc (Cell::map): New function.
6901 * Cell.h (Cell::map): Declare.
6902 (xisalnum, xisalpha, xisascii, xiscntrl, xisdigit,
6903 xisgraph, xislower, xisprint, xispunct, xisspace, xisupper,
6904 xisxdigit, xtoascii, xtolower, xtoupper): New mapper functions.
6905 (ctype_mapper): New private typedef.
6907 * ov-cell.h (xisalnum, xisalpha, xisascii, xiscntrl, xisdigit,
6908 xisgraph, xislower, xisprint, xispunct, xisspace, xisupper,
6909 xisxdigit, xtoascii, xtolower, xtoupper): New mapper functions.
6911 2008-02-25 Michael Goffioul <michael.goffioul@gmail.com>
6913 * ov-scalar.cc (octave_scalar::round): Use xround instead of ::round
6914 in mapper implementation.
6916 2008-02-25 John W. Eaton <jwe@octave.org>
6918 * ov-base.cc (UNDEFINED_MAPPER, STRING_MAPPER): New macros. Use
6919 them to define mapper functions.
6921 * mappers.cc (Fisalnum, Fisalpha, Fisascii, Fiscntrl, Fisdigit,
6922 Fisgraph, Fislower, Fisprint, Fispunct, Fisspace, Fisupper,
6923 Fisxdigit, Ftoascii, Ftolower, Ftoupper):
6924 Use DEFUNX to define ctype mapper functions.
6925 Use new function names.
6927 * ov-base.h, ov-base.cc, ov-str-mat.h, ov-str-mat.cc:
6928 Prepend x to ctype mapper function names.
6930 * graphics.h.in (row_vector_property::row_vector_property):
6931 Set default constraints here.
6932 (row_vector_property::add_constraint): New function.
6933 (row_vector_property::validate): Delete decl.
6934 (axes::properties::init): Use single-arg add_constraint function
6935 for xlim, ylim, zlim, clim, and alim properties.
6937 * graphics.cc (row_vector_property::validate): Delete.
6939 * graphics.cc (axes::properties::update_camera,
6940 axes::properties::update_aspectratios):
6941 Avoid shadow warnings from GCC.
6943 * graphics.h.in (base_properties::get_bounding_box):
6944 Avoid unused argument warning from GCC.
6946 * graphics.h.in (array_property::add_constraint): Arg is now const
6947 reference, not value.
6949 * graphics.h.in, graphics.cc (class row_vector_property): New class.
6950 (axes::properties): xlim, ylim, zlim, clim, alim, xtick, ytick,
6951 ztick properties are now row_vector_property objects instead of
6952 array_property objects.
6954 * genprops.awk: Special case row_vector_property in the same way
6957 2008-02-22 John W. Eaton <jwe@octave.org>
6959 * DLD-FUNCTIONS/ccolamd.cc, DLD-FUNCTIONS/colamd.cc,
6960 DLD-FUNCTIONS/convhulln.cc, DLD-FUNCTIONS/dmperm.cc,
6961 DLD-FUNCTIONS/qz.cc, DLD-FUNCTIONS/regexp.cc,
6962 DLD-FUNCTIONS/symbfact.cc, zfstream.h, zfstream.cc:
6963 Use 0 instead of NULL.
6965 2008-02-22 David Bateman <dbateman@free.fr>
6967 * DLD-FUNCTIONS/chol.c (Fchol, Fcholinv, Fchol2iinv): Treat
6968 sparse matrices. Add the "lower" and "vector" flags.
6969 * DLD-FUNCTIONS/inv.c (Finv): Treat sparse matrices.
6970 * DLD-FUNCTION/sparse.cc (static bool is_sparse (const
6971 octave_value&)): Remove and use arg.is_sparse_type () instead.
6972 (Fspcumprod, Fspcumsum, Fspprod, spsum, spsumsq, spdiag): Remove.
6973 * DLD-FUNCTIONS/splu.cc: Remove.
6974 * DLD-FUNCTIONS/lu.cc: Treat sparse matrices, Add "vector" flag.
6975 * DLD-FUNCTIONS/spchol.cc: Move to symbfact.cc
6976 * DLD-FUNCTIONS/symbfact.cc: Remove cholesky functions Fspchol,
6977 Fspcholinv, Fspchol2inv.
6978 * DLD-FUNCTIONS/luinc.cc: Modify for new sparse LU
6979 constructors. Ass the 'vector' flag.
6980 * DLD-FUNCTIONS/spparms.cc: Add the sum_tol flag.
6982 * Makifile.in (DLD_XSRC): Remove spchol.cc, splu.cc and add
6984 * data.cc (NATIVE_REDUCTION): Treat sparse matrices
6985 (DATA_REDUCTION): Ditto.
6986 (template <class T> static octave_value make_spdiag (const T&,
6987 octave_idx_type)): New template function for sparse diag
6988 function. Instantiate it.
6989 (static octave_value make_diag (const octave_value&,
6990 octave_idx_type): Use make_spdiag for sparse matrice.
6991 (Fatan2): Compatibility fixes for mixed full/sparse matrices.
6993 2008-02-21 John W. Eaton <jwe@octave.org>
6995 * DLD-FUNCTIONS/fsolve.cc (fsolve_user_jacobian):
6996 Check dimensions of user-supplied Jacobian matrix.
6997 (fsolve_user_function): Check for non-square systems.
6999 2008-02-20 John W. Eaton <jwe@octave.org>
7001 * data.cc (map_d_m, map_m_d, map_m_m, Fatan2, Ffmod):
7004 * ov-bool-mat.h (octave_bool_matrix (const Array2<bool>&)): Delete.
7006 2008-02-20 David Bateman <dbateman@free.fr>
7008 * DLD-FUNCTIONS/det.cc, DLD-FUNCTIONS/find.cc,
7009 * DLD-FUNCTIONS/minmax.cc, DLD-FUNCTIONS/qr.cc:
7010 Treat sparse matrices.
7012 * DLD-FUNCTIONS/sparse.cc (Fspmin, Fspmax, Fatan2): Remove functions.
7014 * DLD-FUNCTIONS/dmperm.cc: Rename from spqr.cc.
7015 (Fspqr): Delete function.
7017 * DLD-FUNCTIONS/spqr.cc, DLD-FUNCTIONS/spdet.cc,
7018 DLD-FUNCTIONS/spfind.cc: Remove.
7020 * Makefile.in (DLD_XSRC): Add dmperm.cc to the list.
7021 Delete det.cc, find.cc, minmax.cc, and qr.cc from the list.
7023 * Makefile.in (OV_SRC): Remove ov-mapper.cc.
7024 (OV_INCLUDES): Remove ov-mapper.h.
7025 (DEFUN_PATTERN): No longer accept DEFUN_MAPPER as valid.
7026 * ov-mapper.cc, ov-mapepr.h: Delete, remove all includes of
7027 ov-mapper.h from all files.
7029 * op-b-sbm.cc, op-bm-sbm.cc, op-smb-b.cc, op-sbm-bm.cc: Include
7032 * defun-int.h (DEFUN_MAPPER_INTERNAL, install_builtin_mapper):
7034 * defun.cc (install_builtin_mapper): Ditto.
7035 * defun.h (DEFUN_MAPPER): Remove.
7037 * mappers.cc: Rewrite all mapper function using DEFUN and newly
7038 introduced octave_value mapper functions.
7039 (dummyp, xabs, xisalnum, xisascii, xiscntrl, xisdigit,
7040 xisgraph, xislower, xisprint, xispunct, xisspace, xisupper,
7041 xtoascii, xtolower, xtoupper, xconj, ximag, xreal): Remove
7042 static wrapper functions.
7044 * mkbuiltins (XDEFUN_MAPPER_INTERNAL, install_builtin_functions):
7046 * mkgendoc (XDEFUN_MAPPER_INTERNAL): Remove.
7048 * ov.cc (octave_mapper::register_type): Remove.
7050 * ov.h (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh,
7051 ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor, gamma,
7052 imag, isinf, isna, isnan, lgamma, log, log10, real, round, signum,
7053 sin, sinh, sqrt, tan, tanh, isalnum, isalpha, isascii, iscntrl,
7054 isdigit, isgraph, islower, isprint, ispunct, isspace, isupper,
7055 isxdigit, toascii, tolower, toupper):
7056 New octave_value mapper functions.
7058 * ov-base.h (abs, acos, acosh, angle, arg, asin, asinh, atan,
7059 atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor,
7060 gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round,
7061 signum, sin, sinh, sqrt, tan, tanh, isalnum, isalpha, isascii,
7062 iscntrl, isdigit, isgraph, slower, isprint, ispunct, isspace,
7063 isupper, isxdigit, toascii, tolower, toupper):
7064 New virtual mapper functions.
7065 * ov-base.cc (abs, acos, acosh, angle, arg, asin, asinh, atan,
7066 atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor,
7067 gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round,
7068 signum, sin, sinh, sqrt, tan, tanh, isalnum, isalpha, isascii,
7069 iscntrl, isdigit, isgraph, slower, isprint, ispunct, isspace,
7070 isupper, isxdigit, toascii, tolower, toupper):
7071 Base versions of mapper functions.
7073 * ov-bool-mat.h (abs, acos, acosh, angle, arg, asin, asinh, atan,
7074 atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor,
7075 gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round,
7076 signum, sin, sinh, sqrt, tan, tanh):
7077 Mapper function recast boolen matrix as double.
7078 * ov-bool.h (abs, acos, acosh, angle, arg, asin, asinh, atan,
7079 atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor,
7080 gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round,
7081 signum, sin, sinh, sqrt, tan, tanh): Ditto.
7082 * ov-bool-sparse.h (abs, acos, acosh, angle, arg, asin, asinh,
7083 atan, atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix,
7084 floor, gamma, imag, isinf, isna, isnan, lgamma, log, log10, real,
7085 round, signum, sin, sinh, sqrt, tan, tanh): Ditto.
7086 (char_array_value): New method to convert to charNDArray.
7087 * ov-bool-sparse.cc (char_array_value): New method to convert to
7089 * ov-complex.cc (char_array_value): ditto.
7090 (xabs, ximag, xreal): Static wrapper functions.
7091 (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil,
7092 conj, cos, cosh, exp, finite, fix, floor, imag, isinf, isna,
7093 isnan, log, log10, real, round, signum, sin, sinh, sqrt, tan,
7094 tanh): New mapper methods.
7095 * ov-complex.h: Provide decls.
7097 * ov-cx-mat.cc (char_array_value): New method to convert to
7099 (xabs, ximag, xreal): Static wrapper functions.
7100 (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil,
7101 conj, cos, cosh, exp, finite, fix, floor, imag, isinf, isna,
7102 isnan, log, log10, real, round, signum, sin, sinh, sqrt, tan,
7103 tanh): New mapper methods.
7104 * ov-cx-mat.h: Provide decls.
7106 * ov-cx-sparse.cc (char_array_value): New method to convert to
7108 (xabs, ximag, xreal): Static wrapper functions.
7109 (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil,
7110 conj, cos, cosh, exp, finite, fix, floor, imag, isinf, isna,
7111 isnan, log, log10, real, round, signum, sin, sinh, sqrt, tan,
7112 tanh): New mapper methods.
7113 * ov-cx-sparse.h: Provide decls.
7115 * ov-intx.h (abs, signum, imag, ceil, conj, fix, floor, real,
7116 round, finite, isinf, isna, isnan): Define for both matrix and
7119 * ov-range.h (abs, acos, acosh, angle, arg, asin, asinh, atan,
7120 atanh, ceil, conj, cos, cosh, erf, erfc, exp, finite, fix, floor,
7121 gamma, imag, isinf, isna, isnan, lgamma, log, log10, real, round,
7122 signum, sin, sinh, sqrt, tan, tanh): New mapper functions.
7124 * ov-re-mat.cc (any_element_less_than): Static function to check if
7125 any elemet was less than a value,
7126 (any_element_greater_than): Ditto with greater than.
7127 (abs, acos, acosh, angle, arg, asin, asinh, atan, atanh, ceil,
7128 conj, cos, cosh, erf, erfc, exp, finite, fix, floor, gamma, imag,
7129 isinf, isna, isnan, lgamma, log, log10, real, round, signum, sin,
7130 sinh, sqrt, tan, tanh): New mapper functions.
7131 * ov-re-mat.h: Provide decls.
7133 * ov-scalar.cc (any_element_less_than): Static function to check if
7134 any elemet was less than a value,
7135 (any_element_greater_than): ditto with greater than.
7136 (abs acos acosh angle arg asin asinh atan atanh
7137 ceil conj cos cosh erf erfc exp finite fix floor gamma imag
7138 isinf isna isnan lgamma log log10 real round signum sin sinh
7139 sqrt tan tanh): New mapper functions.
7140 * ov-scalar.h: Provide decls.
7142 * ov-str-mat.cc (xisalnum, xisascii, xiscntrl, xisdigit,
7143 xisgraph, xislower, xisprint, xispunct, xisspace, xisupper,
7144 xtoascii, xtolower, xtoupper): New static wrapper functions.
7145 (isalnum, isalpha, isascii, iscntrl, isdigit, isgraph, islower,
7146 isprint, ispunct, isspace, isupper, isxdigit, toascii, tolower,
7147 toupper): New mapper methods.
7148 * ov-str-mat.h: Provide decls.
7150 2008-02-18 David Bateman <dbateman@free.fr>
7152 * data.cc (Fatan2): Reject arguments that are integer types.
7154 2008-02-19 Jaroslav Hajek <highegg@gmail.com>
7156 * DLD-FUNCTIONS/qr.cc: Doc fix.
7158 2008-02-18 John W. Eaton <jwe@octave.org>
7161 (symbol_table::fcn_info::fcn_info_rep::clear_unlocked_functions):
7162 symbol_table::fcn_info::fcn_info_rep::clear_cmdline_function,
7163 symbol_table::fcn_info::fcn_info_rep::clear_autoload_function):
7165 (symbol_table::fcn_info::fcn_info_rep::clear_user_function):
7166 Don't clear locked functions.
7167 (symbol_table::fcn_info::fcn_info_rep::clear_mex_function):
7168 Call clear_user_function instead of setting function_on_path directly.
7169 (symbol_table::fcn_info::fcn_info_rep::clear):
7170 Use new functions to do the real work.
7172 * ov.h (octave_value::lock, octave_value::unlock,
7173 octave_value::islocked): New functions.
7174 * ov-base.cc (octave_base_value::lock, octave_base_value::unlock):
7176 * ov-base.h Provide decls.
7177 (octave_base_value::islocked): New function.
7178 * ov-fcn.h (octave_function::islocked): Now const.
7180 2008-02-15 John W. Eaton <jwe@octave.org>
7182 * ov-builtin.cc (octave_builtin::do_multi_index_op):
7183 Catch possible octave_execution_exception.
7184 * ov-mex-fcn.cc (octave_mex_function::do_multi_index_op): Likewise.
7185 * ov.cc (do_binary_op, do_cat_op, do_unary_op,
7186 octave_value::do_non_const_unary_op): Likewise.
7188 2008-02-14 John W. Eaton <jwe@octave.org>
7190 * DLD-FUNCTIONS/balance.cc, DLD-FUNCTIONS/qz.cc:
7191 Don't check f77_exception_encountered.
7193 * sighandlers.cc (user_abort): If interrupting immediately, set
7194 octave_interrupt_state if it is not already set.
7196 * pt-stmt.cc (tree_statement::eval): Catch execution exceptions.
7198 * octave.cc (lo_error_handler): New static function.
7199 (initialize_error_handlers): Set liboctave_error_handler to
7200 lo_error_handler, not error.
7202 * DLD-FUNCTIONS/urlwrite.cc (urlget): Call octave_rethrow_exception
7203 instead of octave_throw_interrupt_exception.
7204 * utils.cc (BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE_FOR_VSNPRINTF):
7207 2008-02-12 David Bateman <dbateman@free.fr>
7209 * graphics.h.in: Implement the cdatamapping property in patch and
7212 2008-02-12 John W. Eaton <jwe@octave.org>
7214 * pt-loop.cc (tree_simple_for_command::eval): Compute range
7215 element with multiplication.
7217 2008-02-11 John W. Eaton <jwe@octave.org>
7219 * Makefile.in ($(MAKEDEPS)): Skip dependencies if omit_deps is defined.
7221 2008-02-09 John W. Eaton <jwe@octave.org>
7223 * pr-output.cc (set_range_format): Eliminate sign arg.
7226 2008-02-08 John W. Eaton <jwe@octave.org>
7228 * ov-struct.cc (octave_struct::subsref): Allow Cell::index to resize.
7230 * input.cc (interactive_input): Eliminate debug arg. Change All uses.
7231 (get_user_input): Don't process input_buf if there is an error.
7232 Call reset_error_handler instead of setting error_state to 0.
7234 2008-02-08 Michael Goffioul <michael.goffioul@gmail.com>
7236 * graphics.h.in (callback_property::execute): New static
7237 helper method (useful to execute callbacks by name).
7238 * graphics.cc (callback_property::execute): Likewise.
7239 (execute_callback): Avoid undefined argument when executing
7240 callback. Do not use arguments when the callback is a string.
7242 2008-02-07 John W. Eaton <jwe@octave.org>
7244 * ov-range.h (octave_range::sort): New functions.
7246 2008-02-07 David Bateman <dbateman@free.fr>
7248 * Makefile.in (DLD_XSRC): Delete spkron.cc.
7249 * DLD-FUNCTIONS/spkron.cc: Delete.
7250 * DLD-FUNCTIONS/kron.cc: Include here and dispatch to the sparse
7251 version if either argument is sparse.
7253 2008-02-06 John W. Eaton <jwe@octave.org>
7255 * Makefile.in (parse.cc): Also use --defines option for bison.
7257 2008-02-06 Michael Goffioul <michael.goffioul@gmail.com>
7259 * graphics.cc (axes::properties::set_defaults): Set default axes
7262 2008-02-06 John W. Eaton <jwe@octave.org>
7264 * Makefile.in (parse.cc): Use "-o $@" instead of renaming y.tab.c.
7265 (maintainer-clean): Don't remove y.tab.c.
7267 * Makefile.in (parse.cc : parse.y): Use mv instead of move-if-change.
7268 (stamp-prereq, stamp-liboctave-prereq): Eliminate.
7269 (clean): Don't remove stamp-prereq and stamp-liboctave-prereq.
7270 (OPT_BASE, OPT_IN, OPT_INC): New macros.
7271 (OPT_HANDLERS): Define in terms of OPT_BASE.
7272 ($(OPT_INC) : %.h : %.in): New pattern rule.
7273 (PREREQ): New macro.
7274 ($(MAKEDEPS)): Simplify with $(PREREQ).
7276 2008-02-05 John W. Eaton <jwe@octave.org>
7278 * Makefile.in: Unconditionally include $(MAKEDEPS).
7279 Mark $(MAKEDEPS) as .PHONY targets if omit_deps is true.
7281 2008-02-05 Michael Goffioul <michael.goffioul@gmail.com>
7283 * graphics.h.in (base_properties::get_boundingbox): New method.
7284 (figure::properties::get_boundingbox): Overload method.
7285 (axes::properties::get_boundingbox): Likewise.
7286 * graphics.cc (figure::properties::get_boundingbox): Return a
7287 left-to-right/top-to-bottom bounding box rectangle.
7288 (axes::properties::get_boundingbox): Likewise.
7289 (axes::properties::update_camera): Remove backend access and
7290 use the new axes bounding box.
7292 2008-02-04 Shai Ayal <shaiay@users.sourceforge.net>
7294 * graphics.h.in (axes::properties::update_xlim,
7295 axes::properties::update_ylim, axes::properties::update_zlim):
7298 * graphics.cc (axes::properties::calc_ticks): New function.
7299 (axes::properties::magform): New function.
7300 (axes::update_axis_limits): Call update_{x,y,z}lims if
7303 2008-02-04 Michael Goffioul <michael.goffioul@gmail.com>
7305 * graphics.h.in (base_graphics_backend::get_screen_size,
7306 graphics_backend::get_screen_size): New methods.
7307 (graphics_backend::available_backends): Export symbol.
7308 (class figure::properties, class axes::properties): Export classes.
7309 (figure::properties::get_boundingbox): New utility method.
7310 (figure::properties::position): Use valid default position.
7311 (axes::properties::gridlinestyle,
7312 axes::properties::minorgridlinestyle):
7313 Use dotted line style as default.
7314 * graphics.cc (default_figure_position): New static function.
7315 (gnuplot_backend::get_screen_size): New method.
7316 (figure::properties::get_boundingbox): New utility method.
7318 2008-02-02 Shai Ayal <shaiay@users.sourceforge.org>
7320 * graphics.h.in (base_scaler::~base_scalar): New virtual destructor.
7321 * graphics.cc (axes::properties::update_camera): Tag abs with std.
7323 * graphics.h.in (graphics_backend::find_backend): New function.
7324 (class figure): Add __backend__ property and set method.
7326 2008-02-02 John W. Eaton <jwe@octave.org>
7328 * help.cc (do_type): Don't print dyamically loaded function files.
7330 * ov-fcn.h (octave_function::is_dynamically_loaded_function): Delete.
7332 2008-02-01 John W. Eaton <jwe@octave.org>
7334 * symtab.cc (Fset_variable, Fvariable_value):
7335 New functions, but commented out for now.
7337 2008-01-30 Michael Goffioul <michael.goffioul@gmail.com>
7339 * graphics.h.in (axes::properties::get_transform_matrix,
7340 axes::properties::get_inverse_transform_matrix,
7341 axes::properties::get_opengl_matrix_1,
7342 axes::properties::get_opengl_matrix_2,
7343 axes::properties::get_transform_zlim): New accessors.
7344 (base_properties::is_clipping): New accessor.
7345 (class graphics_xform): New class encapsulating axes transformation.
7346 (axes::properties::get_transform): New method returning a
7347 graphics_xform object.
7348 * graphics.cc (class graphics_xform): New class.
7350 2008-01-31 David Bateman <dbateman@free.fr>
7352 * ov.cc (octave_value::octave_value (const ArrayN<bool>&),
7353 octave_value::octave_value (const Sparse<bool>&, const MatrixType &),
7354 octave_value::octave_value (const ArrayN<std::streamoff>&)): New
7356 * ov.h: (octave_value (const ArrayN<bool>&),
7357 octave_value (const Sparse<bool>&, const MatrixType &),
7358 octave_value (const ArrayN<std::streamoff>&)): Declare them.
7359 (octave_value sort (octave_idx_type, sortmode) const, octave_value
7360 sort (Array<octave_idx_type> &, octave_idx_type, sortmode) const):
7361 octave_value sort method.
7364 * ov-base.cc (sort): Base versions of teh octave_value sort methods.
7365 * ov-base.h (sort): Declare the octave_value sort methods
7366 * ov-base-scalar.h (sort): Simple sort methods for scalars.
7367 * ov-base-mat.h, ov-base-sparse.h (sort): Sort methods calling
7368 underlying array or sparse sort methods.
7369 * ov-str-mat.h (sort): String specific sort methods.
7371 * TEMPLATE-INST/Array-tc.cc: Instantiate the array sort methods.
7372 * ov-streamoff.h (sort): Sort versions returning and error.
7373 * oct-stream.cc, ov-typeinfo.cc, Array-os.cc: Null instantiation
7374 of array sort methods.
7376 * Makefile.in (DLD_XSRC): Remove sort.cc
7377 * DLD-FUNCTIONS/sort.cc: Remove
7378 * data.cc (Fsort): New function using octave_value sort methods
7379 for the sorting. Add tests.
7381 2008-01-30 Thomas Weber <thomas.weber.mail@gmail.com>
7383 * pager.cc (Fmore): Doc fix.
7385 2008-01-28 Michael Goffioul <michael.goffioul@gmail.com>
7387 * genprops.awk: Add update ('u') modifier and document the
7388 readonly ('r') modifier.
7389 * graphics.h.in (class base_scaler, class lin_scaler, class
7390 log_scaler, class scaler): New classes to make abstraction of the
7392 (base_graphics_backend::get_screen_resolution,
7393 graphics_backend::get_screen_resolution): New methods.
7394 (axes::properties::sx, axes::properties::sy,
7395 axes::properties::sz): New scaler fields.
7396 (axes::properties::get_x_scaler, axes::properties::get_y_scaler,
7397 axes::properties::get_z_scaler): New accessors.
7398 (axes::properties::x_render, axes::properties::x_render_inv,
7399 axes::properties::x_gl_mat1, axes::properties::x_gl_mat2,
7400 axes::properties::x_zlim): New utility Matrix fields.
7401 (axes::properties::get_boundingbox,
7402 axes::properties::update_camera,
7403 axes::properites::update_aspectratios,
7404 axes::properties::update_transform,
7405 axes::properties::update_xscale, axes::properties::update_yscale,
7406 axes::properties::update_zscale, axes::properties::update_view,
7407 axes::properties::update_xdir, axes::properties::update_ydir,
7408 axes::properties::update_zdir): New updater methods.
7409 (axes::properties::init): Initialize sx, sy, sz and x_zlim correctly.
7410 (axes::properties::position): Use valid default position value.
7411 (axes::properties::xscale, axes::properties::yscale,
7412 axes::properties::zscale, axes::properties::xdir,
7413 axes::properties::ydir, axes::properties::zdir,
7414 axes::properties::view): Add updater ('u') property modifier.
7415 * graphics.cc (default_axes_position, default_axes_outerposition):
7417 (convert_position): New utility function to convert position
7418 according to specified units.
7419 (gnuplot_backend::get_screen_resolution): New method.
7420 (axes::properties::set_defaults): Initilize recently added properties.
7421 (xform_matrix, xform_vector, transform, xform_scale,
7422 xform_translate, scale, translate, xform, normalize, dot, cross,
7423 unit_cube, cam2xform, xform2cam): New inline transformation
7425 (axes::properties::update_camera,
7426 axes::properties::update_aspectratios,
7427 axes::properties::get_boundingbox): New updater methods for
7428 computing transformation matrices.
7429 (axes::update_axis_limits): Update transformation data.
7431 2008-01-28 John W. Eaton <jwe@octave.org>
7433 * oct-stream.cc (BEGIN_CHAR_CLASS_CONVERSION): Handle width properly.
7434 (OCTAVE_SCAN) [__GNUG__ && ! CXX_ISO_COMPLIANT_LIBRARY]:
7435 Delete special case.
7437 2008-01-25 David Bateman <dbateman@free.fr>
7439 * DLD-FUNCTIONS/rand.cc (Frandp): Relax relative error on randp
7442 2008-01-25 Michael Goffioul <michael.goffioul@gmail.com>
7444 * graphics.h.in (base_properties::get_backend,
7445 base_graphics_object::get_backend, graphics_backend::get_backend):
7446 New methods for convenient access to the backend.
7447 (figure::get_backend, figure::set_backend): Remove.
7448 * graphics.cc (base_properties::get_backend): New method.
7449 (Fdrawnow): Use graphics_object::get_backend to simplify code.
7451 2008-01-24 Pascal Dupuis <Pascal.Dupuis@worldonline.be>
7453 * mxarray.h.in: Include <cstring>.
7455 2008-01-22 John W. Eaton <jwe@octave.org>
7457 * graphics.cc (clear_drawnow_request): New function.
7458 (Fdrawnow): Add it to the unwind_protect stack.
7460 * input.cc (Vdrawnow_requested): No longer static.
7461 * input.h: Provide decl.
7462 * graphics.cc (Fdrawnow, Fset, make_graphics_object):
7463 Use Vdrawnow_requested directly.
7465 * toplev.cc (octave_add_atexit_function,
7466 octave_remove_atexit_function): New functions.
7467 (Fatexit): Use them.
7468 * graphics.cc (Fdrawnow): Call octave_add_atexit_function instead
7470 * toplev.h (octave_add_atexit_function,
7471 octave_remove_atexit_function): Provide decls.
7473 2008-01-22 Michael Goffioul <michael.goffioul@gmail.com>
7475 * graphics.h.in (base_properties::is_visible,
7476 base_properties::set_modified): New accessors.
7477 (class base_graphics_backend, class graphics_backend): New classes
7478 for handling octave/backend interaction.
7479 (figure::properties::close): Add "pop" argument controlling
7480 whether the figure should be popped from the list of existing figures.
7481 (class figure::properties): New backend field and accessors, holding
7482 the graphics backend associated with the figure.
7483 * graphics.cc (class gnuplot_backend): New class for the default
7485 (figure::properties::close): Add "pop" argument and transfer the
7486 figure closing to the associated backend.
7487 (Fdrawnow): New builtin function, converted from drawnow.m.
7489 2008-01-19 John W. Eaton <jwe@octave.org>
7491 * genprops.awk (emit_source): Use "pname" for property name argument.
7493 2008-01-19 Shai Ayal <shaiay@users.sourceforge.net>
7495 * graphics.h.in (class figure::properties): New properties:
7496 alphamap, currentcharacter, currentobject, current_point,
7497 dockcontrols, doublebuffer, filename, integerhandle,
7498 inverthardcopy, keypressfcn, keyreleasefcn, menubar, mincolormap,
7499 name, numbertitle, paperunits, paperposition, paperpositionmode,
7500 papersize, papertype, pointer, pointershapecdata,
7501 pointershapehotspot, position, renderer, renderermode, resize,
7502 resizefcn, selectiontype, toolbar, units, windowbuttondownfcn,
7503 windowbuttonmotionfcn, windowbuttonupfcn, windowbuttonwheelfcn,
7504 windowstyle, wvisual, wvisualmode, xdisplay, xvisual, xvisualmode,
7507 2008-01-19 Michael Goffioul <michael.goffioul@gmail.com>
7509 * graphics.h.in (base_properties::beingdeleted,
7510 base_properties::is_beingdeleted,
7511 base_properties::get_beingdeleted,
7512 base_properties::set_beingdeleted):
7513 Add beingdeleted property and accessors.
7514 * graphics.cc (base_properties::get): Likewise.
7515 (gh_manager::free): Set beingdeleted to "on" when freeing an object.
7516 * genprops.awk: Skip C++-style comments in property declaration.
7518 * graphics.h.in (class axes::properties): New properties: alim,
7519 alimmode, xminortick, yminortick, zminortick, ambientlightcolor,
7520 cameraposition, cameratarget, cameraupvector, cameraviewangle,
7521 camerapositionmode, cameratargetmode, cameraupvectormode,
7522 cameraviewanglemode, currentpoint, drawmode, fontangle, fontname,
7523 fontsize, fontweight, fontunits, gridlinestyle,
7524 minorgridlinestyle, linestyleorder, linewidth, plotboxaspectratio,
7525 plotboxaspectratiomode, projection, tickdir, tickdirmode,
7526 ticklength, tightinset, units, x_viewtransform,
7527 x_projectiontransform, x_viewporttransform, x_normrendertransform,
7529 * genprops.awk: Handle new readonly modifier 'r'.
7531 2008-01-18 Juhani Saastamoinen <juhani@cs.joensuu.fi>
7533 * genprops.awk: Avoid using "default" as a variable name.
7535 2008-01-17 Michael Goffioul <michael.goffioul@gmail.com>
7537 * graphics.h.in (data_property::get_data_limits): Reset min/max values.
7539 2008-01-17 David Bateman <dbateman@free.fr>
7541 * ov-fcn-inline.cc: Add tests for Finline.
7543 2008-01-17 Ben Abbott <bpabbott@mac.com>
7545 * load-path.cc (F__pathorig__): Rename from Fpathdef.
7546 (Frestoredefaultpath): New function.
7548 2008-01-16 John W. Eaton <jwe@octave.org>
7550 * pt-assign.cc (tree_simple_assignment::rvalue,
7551 tree_multi_assignment::rvalue): Handle assignment of
7552 comma-separated lists.
7554 2008-01-15 John W. Eaton <jwe@octave.org>
7556 * mappers.cc (install_mapper_functions): Move test for asin here
7557 from test/test_arith.m.
7559 * graphics.h.in (class line::properties, class text::properties):
7560 Rename erase_mode property to erasemode.
7562 2008-01-15 Michael Goffioul <michael.goffioul@gmail.com>
7564 * graphics.h.in (base_properties::remove_child,
7565 base_properties::adopt, base_properties::update_axis_limits):
7567 (base_graphics_object::mark_modified,
7568 base_graphics_object::override-defaults,
7569 base_graphics_object::set_from_list, base_graphics_object::set,
7570 base_graphics_object::get, base_graphics_object::get_parent,
7571 base_graphics_object::remove_child, base_graphics_object::adopt,
7572 base_graphics_object::reparent, base_graphics_object::defaults,
7573 base_graphics_object::type): Add default implementation.
7574 (class root_figure, class figure, class axes, class line,
7575 class text, class image, class patch, class surface):
7576 Remove overloaded virtual methods whose implementation is
7577 identical to the default one.
7579 * genprops.awk: Handle 'h' modifier for hidden properties.
7580 Replace "get(void)" method with "get(bool all = false)" to allow
7581 access to hidden properties.
7583 * graphics.h.in (base_properties::get, base_graphics_object::get,
7584 graphics_object::get, root_figure::get, figure::get, axes::get,
7585 line::get, text::get, patch::get, surface::get, image::get):
7586 New arg, ALL, to access hidden properties.
7587 (gh_manager::do_get_object): Do not look for invalid handles.
7588 (figure::properties::__plot_stream__,
7589 figure::properties::__enhanced__, axes::properties::__colorbar__):
7590 Make properties hidden.
7591 (axes::properties, line::properties, text::properties,
7592 patch::properties, surface::properties): Remove obsolete 'a'
7594 * graphics.cc (base_properties::get): New arg ALL, to access
7596 (base_properties::mark_modified): Call mark_modified only on valid
7598 (__get__): New internal function returning all properties,
7599 including the hidden ones.
7601 2008-01-15 John W. Eaton <jwe@octave.org>
7603 * graphics.cc (properties::set_currentfigure,
7604 properties::set_currentaxes): Don't convert arg to double
7605 before passing to graphics_handle constructor.
7606 (base_properties::remove_child): Call mark_modified if list of
7609 2008-01-15 Shai Ayal <shaiay@users.sourceforge.net>
7611 * graphics.h.in (class line::properties): New properties:
7612 displayname, erasemode.
7613 (class text::properties) New properties: backgroundcolor,
7614 displayname, edgecolor, erase_mode, editing, fontunits, linestyle,
7615 linewidth, margin, verticalalignment.
7617 2008-01-14 John W. Eaton <jwe@octave.org>
7619 * load-path.cc (load_path::do_initialize): Start with sys_path empty.
7620 (maybe_add_path_elts): Omit path_sep_str if path is empty.
7622 * symtab.h (symbol_table::do_pop_context): Remove symbol_records
7623 which have no more context.
7624 (symbol_table::symbol_record::pop_context,
7625 (symbol_table::symbol_record::symbol_record_rep::pop_context):
7626 Return size of value_stack, or 1 if variable is persistent or global.
7628 2008-01-14 Kai Habel <kai.habel@gmx.de>
7630 * graphics.h.in (class patch::properties): New properties:
7631 cdatamapping, facevertexalphadata, facevertexcdata, vertexnormals,
7632 normalmode, facelighting, edgealpha, edgelighting,
7633 backfacelighting, ambientstrength, diffusestrength,
7634 specularstrength, specularexponent, specularcolorreflectance,
7637 2008-01-14 Michael Goffioul <michael.goffioul@gmail.com>
7639 * graphics.h.in (gh_manager::do_make_graphics_handle,
7640 gh_manager::make_graphics_handle): New boolean parameter
7642 * graphics.cc (xcreatefcn): New static function.
7643 (gh_manager::do_make_graphics_handle): New boolean parameter
7644 do_createfcn. Execute createfcn callback accordingly.
7645 (make_graphics_object, F__go_figure__): Use do_createfcn
7646 parameter and call xcreatefcn
7648 * genprops.awk (emit_get_callback): Pass user data to execute method.
7649 * graphics.cc (execute_callback): New static function.
7650 (callback_property::validate): Make it work.
7651 (callback_property::execute): Make it work.
7652 (gh_manager::do_free): Execute delete function here.
7653 * graphics.h.in (callback_property::execute): Fix decl.
7654 (base_properties::buttondownfcn, base_properties::createfcn,
7655 base_properties::deletefcn, base_properties::userdata): Default
7656 value is empty Matrix, not undefined octave_value object.
7657 (base_properties::execute_createfcn): New function.
7658 (base_properties::execute_deletefcn): New function.
7660 2007-12-13 Shai Ayal <shaiay@users.sourceforge.net>
7662 * graphics.h.in, graphics.cc (class base_properties): New
7663 properties: busyaction, buttondownfcn, clipping, createfcn,
7664 deletefcn, handlevisibility, hittest, interruptible, selected,
7665 selectionhighlight, uicontextmenu, userdata, visible.
7666 (class figure): Delete visible property.
7668 2008-01-13 Michael Goffioul <michael.goffioul@gmail.com>
7670 * grahpics.h.in: Sprinkle with OCTINTERP_API as needed.
7671 (axes::properties::xaxislocation): Allow value of zero.
7672 (axes::properties::yaxislocation): Likewise.
7674 2008-01-12 Michael Goffioul <michael.goffioul@gmail.com>
7676 * Makefile.in (distclean): Delete graphics-props.cc.
7678 * genprops.awk: Handle new graphics property classes.
7680 * graphics.h.in, graphics.cc: Adapt for new specific property types.
7682 2008-01-12 John W. Eaton <jwe@octave.org>
7684 * toplev.cc (octave_config_info): Add GNUPLOT to the struct.
7685 * oct-conf.h.in (OCTAVE_CONF_GNUPLOT): New macro.
7687 2008-01-11 John W. Eaton <jwe@octave.org>
7689 * DLD-FUNCTIONS/__qp__.cc (qp): Undo part of change from
7690 2007-09-04 (compute Y at each iteration).
7692 2008-01-10 John W. Eaton <jwe@octave.org>
7694 * DLD-FUNCTIONS/fsolve.cc (Ffsolve): Doc fix.
7695 (hybrd_info_to_fsolve_info): Swap return values for -1 and -2 inputs.
7697 * DLD_FUNCTIONS/__gnuplot_raw__.l: Delete.
7698 * Makefile.in (DLD_XSRC): Remove it from the list.
7699 (BUILT_DISTFILES): Remove __gnuplot_raw__.cc from the list.
7700 (stamp-prereq): Don't depend on __gnuplot_raw__.cc.
7701 (maintainer-clean): Don't remove __gnuplot_raw__.cc.
7702 (__gnuplot_raw__.cc): Delete target.
7703 (__gnuplot_raw__.o, pic/__gnuplot_raw__.o): Delete targets.
7705 * mex.cc (calc_single_subscript_internal): New static function.
7706 (mxArray_octave_value::calc_single_subscript): Use it.
7707 (mxArray_matlab::calc_single_subscript): Use it.
7709 2008-01-07 John W. Eaton <jwe@octave.org>
7711 * src/pt-except.cc (tree_try_catch_command::eval):
7712 Set Vdebug_on_error and Vdebug_on_warning to false while executing
7715 * error.cc (Vdebug_on_error, Vdebug_on_warning): No longer static.
7716 * error.h: Provide decls.
7718 * gripes.cc (gripe_wrong_type_arg (const std::string&, const
7719 octave_value&, bool)): New function.
7720 * gripes.h: Provide decl.
7722 * oct-stream.cc (printf_value_cache::printf_value_cache):
7723 Reject structs, cells, objects, and lists.
7724 (octave_base_stream::do_printf): Quit early if printf_value_cache
7727 * parse.y (make_anon_fcn_handle): Don't attempt to convert
7728 expression to assignment to __retval__.
7730 2008-01-07 Michael Goffioul <michael.goffioul@gmail.com>
7732 * ov-builtin.h (octave_builtin): Tag with OCTINTERP_API.
7733 * ov-dld-fcn.h (octave_dld_function): Likewise.
7735 * ov-dld-fcn.cc (octave_dld_function::create): New function.
7736 * ov-dld-fcn.h: Provide decl.
7737 * defun.h (DEFINE_FUNX_INSTALLER_FUN3): Call it instead of
7738 creating a new octave_dld_function object directly.
7740 2008-01-04 John Swensen <jpswensen@comcast.net>
7742 * debug.cc (bp_table::do_remove_all_breakpoints_in_file):
7743 Avoid calling erase on invalid bp_map iterators.
7744 (bp_table::do_remove_breakpoint): Only try to delete breakpoints
7745 if some exist. Avoid calling erase on invalid bp_map iterators.
7746 (parse_dbfunction_params): Return early if ARGS is empty.
7747 New arg, WHO. Change all uses.
7748 Accept but do nothing with struct args.
7750 2008-01-04 Thomas Weber <thomas.weber.mail@gmail.com>
7752 * variables.cc (Fclear): Doc fix.
7754 2008-01-04 John W. Eaton <jwe@octave.org>
7756 * symtab.h (symbol_table:pop_scope): Avoid accessing beyond end of
7759 2008-01-04 David Bateman <dbateman@free.fr>
7761 * ov-mapper.cc (SPARSE_MAPPER_LOOP_2): Use data method instead of
7762 elem in the case where F(0) is non-zero.
7764 2007-12-28 John W. Eaton <jwe@octave.org>
7766 Merge changes from object branch:
7768 2007-12-12 John W. Eaton <jwe@octave.org>
7770 * load-path.cc (load_path::dir_info::get_file_list,
7771 load_path::move_method_map, load_path::remove_method_map,
7772 load_path::do_find_fcn, load_path::do_find_private_fcn,
7773 load_path::do_find_method, load_path::do_find_file,
7774 load_path::do_find_first_of, load_path::do_find_all_first_of,
7775 load_path::do_display, load_path::add_to_method_map, genpath,
7776 execute_pkg_add_or_del): Use file_ops::concat.
7778 2007-08-24 John W. Eaton <jwe@octave.org>
7780 * variables.cc (Fmislocked): return value for nargin == 0 case.
7782 2007-07-27 John W. Eaton <jwe@octave.org>
7784 * pt-idx.cc (tree_index_expression::rvalue):
7785 Pass substring of type to subsref when doing partial evaluation.
7786 (tree_index_expression::lvalue): Likewise.
7788 2007-06-29 John W. Eaton <jwe@octave.org>
7790 * ov-class.cc (is_built_in_class, set_class_relationship,
7791 Fsuperiorto, Finferiorto): New functions.
7792 (octave_class::in_class_method): New function.
7793 (octave_class::subsref, octave_class:subsasgn): Use it.
7795 2007-06-28 John W. Eaton <jwe@octave.org>
7797 * src/ov-class.cc (sanitize): New function.
7798 (make_idx_args): Use it.
7800 2007-06-28 John W. Eaton <jwe@octave.org>
7802 * src/ov-class.cc (octave_class::subsasgn): Expect and use only
7803 one return value from feval of subsasgn method.
7805 * ov.cc (octave_value::assign): Don't convert to struct if
7806 indexing a class object with ".".
7808 * pt-idx.cc (tree_index_expression::make_arg_struct):
7809 Use Cell instead of octave_value_list for subscripts.
7811 * ov-class.cc (make_idx_args): For "." index, subs field is
7814 2007-06-27 John W. Eaton <jwe@octave.org>
7816 * ov-fcn-handle.cc (octave_fcn_handle::save_ascii,
7817 octave_fcn_handle::load_ascii, octave_fcn_handle::save_binary,
7818 octave_fcn_handle::load_binary, octave_fcn_handle::save_hdf5,
7819 octave_fcn_handle::load_hdf5): Adapt to new symbol table objects.
7821 * symtab.h (symbol_table::all_variables,
7822 symbol_table::do_all_variables): New arg, defined_only.
7824 2007-06-26 John W. Eaton <jwe@octave.org>
7826 * ls-mat5.cc (read_mat5_binary_element): Adapt to new symbol table
7829 * variables.cc (Vwhos_line_format): New static variable.
7830 (Fwhos_line_format): New function.
7831 (symbol_record_name_compare): Delete function.
7832 (symbol_record_name_compare, whos_parameter): New structs.
7833 (print_descriptor, dimensions_string_req_first_space,
7834 dimensions_string_req_total_space, make_dimensions_string,
7835 parse_whos_line_format, print_symbol_info_line): New static
7836 functions, adapted from old symbol table class.
7837 (do_who): Adapt to new symbol table objects.
7839 * symtab.h (symbol_table::glob_variables): New functions.
7840 (symbol_table::do_glob): New argument, vars_only. Change all uses.
7842 2007-06-22 John W. Eaton <jwe@octave.org>
7844 * symtab.cc (symbol_table::fcn_info::fcn_info_rep::help_for_dispatch):
7846 * symtab.h: Provide decl.
7847 (symbol_table::fcn_info::help_for_dispatch,
7848 symbol_table::help_for_dispatch): New functions.
7850 * help.cc (help_from_symbol_table): Call
7851 symbol_table::help_for_dispatch instead of
7852 extract_help_from_dispatch.
7854 * help.cc (extract_help_from_dispatch): Delete.
7855 * help.h: Delete decl.
7857 2007-06-21 John W. Eaton <jwe@octave.org>
7859 * DLD-FUNCTIONS/dispatch.cc (class octave_dispatch): Delete class.
7860 (builtin, any_arg_is_magic_colon, dispatch_record): Delete functions.
7861 (Fbuiltin, Fdispatch): Adapt to new symbol table objects.
7863 * symtab.cc (symbol_table::fcn_info::fcn_info_rep::print_dispatch):
7865 * symtab.h: Provide decl.
7866 (symbol_table::fcn_info::print_dispatch, symbol_table::print_dispatch):
7869 * symtab.h (symbol_table::fcn_info::fcn_info_rep::clear_dispatch,
7870 symbol_table::fcn_info::clear_dispatch, symbol_table::clear_dispatch):
7873 * symtab.h (symbol_table::fcn_info::fcn_info_rep::get_dispatch,
7874 symbol_table::fcn_info::get_dispatch, symbol_table::get_dispatch):
7877 * symtab.cc (symbol_table::fcn_info::fcn_info_rep::find):
7878 Use leftmost class argument as dispatch type, or first argument if
7879 there are no class arguments.
7881 2007-06-20 John W. Eaton <jwe@octave.org>
7883 * ov-base.cc (Vprint_answer_id_name, Fprint_answer_id_name): Delete.
7884 (octave_base_value::print_with_name): Always print name.
7886 * ov-base.cc (Vsilent_functions): No longer static.
7887 * ov-base.h: Provide decl.
7889 * ov-class.cc (Fmethods): Define as command.
7891 * ov-class.cc (octave_class::print): Simply call print_raw.
7893 * ov-class.cc (octave_class::print_with_name): New function.
7894 * ov-class.h: Provide decl.
7896 2007-06-19 John W. Eaton <jwe@octave.org>
7898 * ov.cc (octave_value::do_unary_op, octave_value::do_binary_op):
7899 Handle class methods.
7901 * ov.cc (octave_value::unary_op_fcn_name,
7902 octave_value::binary_op_fcn_name): New functions.
7903 * ov.h: Provide decls.
7905 * ov-typeinfo.cc (octave_value_typeinfo::register_unary_class_op,
7906 octave_value_typeinfo::register_binary_class_op,
7907 octave_value_typeinfo::do_register_unary_class_op,
7908 octave_value_typeinfo::do_register_binary_class_op,
7909 octave_value_typeinfo::do_lookup_unary_class_op,
7910 octave_value_typeinfo::do_lookup_binary_class_op): New functions.
7911 * ov-typeinfo.h: Provide decls.
7913 * ov-typeinfo.h (octave_value_typeinfo::unary_class_op_fcn,
7914 octave_value_typeinfo::binary_class_op_fcn): New typedefs.
7915 (octave_value_typeinfo::unary_class_ops,
7916 octave_value_typeinfo::binary_class_ops): New data members.
7917 (octave_value_typeinfo::octave_value_typeinfo): Initialize them.
7918 (octave_value_typeinfo::lookup_unary_class_op,
7919 octave_value_typeinfo::lookup_binary_class_op): New functions.
7921 * OPERATORS/op-class.cc: New file.
7922 * Makefile.in (OP_XSRC): Add it to the list.
7924 * ov.cc (install_types): Call octave_class::register_type here.
7926 * ov-class.h (octave_class): Implement by containing a map object
7927 instead of deriving from octave_struct.
7928 * ov-class.cc (octave_class::subsref, octave_class::subsasgn):
7929 Don't use octave_class implementation as default action.
7931 * ov.h, ov.cc (octave_value::octave_value (const Octave_map&, const
7932 std::string&)): New constructor.
7934 2007-06-18 John W. Eaton <jwe@octave.org>
7936 * ov-class.cc (octave_class::subsref, octave_class::subsasgn):
7937 Handle dispatch to user-defined methods.
7939 * parse.y (load_fcn_from_file): New arg, dispatch_type.
7942 * ov-fcn.h (octave_function::is_class_constructor,
7943 octave_function::is_class_method, octave_function::dispatch_class):
7944 New virtual functions.
7946 * ov-usr-fcn.h (octave_user_function::dispatch_class,
7947 octave_usr_function::stash_dispatch_class): New functions.
7948 (octave_usr_fucntion::xdispatch_class): New data member.
7949 * parse.y (frob_function): Call stash_dispatch_class here.
7951 * ov-struct.cc (Ffieldnames): Also handle objects.
7953 * ov-class.cc (Fmethods): New function.
7954 * load-path.cc (load_path::do_methods): New function.
7955 * load-path.h (load_path::methods): New function.
7957 * ov.h (octave_value::is_object): New function.
7958 * ov-base.h (octave_base_value::is_object): New virtual function.
7959 * ov-class.h (octave_class::is_object): New function.
7960 * ov-class.cc (Fisobject): New function.
7962 2007-06-15 John W. Eaton <jwe@octave.org>
7964 * ov-class.cc (octave_class::print): Call display method if found.
7966 * symtab.h (symbol_table::fcn_info::find_method): New function.
7967 (symbol_table::find_method): New function.
7968 (symbol_table::fcn_info::fcn_info_rep::find_method): Provide decl.
7969 * symtab.cc (symbol_table::fcn_info::fcn_info_rep::find_method):
7971 (symbol_table::fcn_info::fcn_info_rep::find): Use it.
7973 2007-06-14 John W. Eaton <jwe@octave.org>
7975 * symtab.h (symbol_table::clear_mex_functions): Make it work.
7976 (symbol_table::fcn_info::fcn_info_rep::clear_mex_function,
7977 symbol_table::fcn_info::clear_mex_function): New functions.
7979 2007-06-08 John W. Eaton <jwe@octave.org>
7981 * defun.cc (Falias): Delete.
7983 * variables.cc (load_fcn_try_ctor): New function.
7984 (lookup): call load_fcn_try_ctor instead of load_fcn_from_file.
7986 * variables.cc, variables.h (at_top_level, lookup_by_name, lookup,
7987 initialize_symbol_tables, fcn_out_of_date, symbol_out_of_date,
7988 lookup_function, lookup_user_function, link_to_global_variable,
7989 link_to_builtin_or_function, force_link_to_function, Fdocument,
7990 is_local_variable, do_clear_all, do_clear_functions,
7991 do_clear_globals, do_clear_variables, do_clear_function,
7992 do_clear_global, do_clear_variable, do_clear_symbol,
7993 do_clear_function_pattern, do_clear_global_pattern,
7994 do_clear_variable_pattern, do_clear_symbol_pattern,
7995 clear_function, clear_variable, clear_symbol):
7996 Delete (some functionality moved to the new symtab.cc and some is
7998 (Fignore_function_time_stamp): Move to symtab.cc.
8000 * lex.l (lookup_identifier): Delete.
8002 * parse.y (is_function_file): New function.
8003 (load_fcn_from_file): Return pointer to octave_function, not bool.
8005 * ov-usr-fcn.h, ov-usr-fcn.cc (octave_user_function::argn_sr,
8006 octave_user_function::nargin_sr, octave_user_function::nargout_sr,
8007 octave_user_function::varargin_sr): Delete data members.
8008 (octave_user_function::install_automatic_vars): Delete.
8009 (octave_user_script::do_multi_index_op): New function.
8011 * ov-fcn.h (octave_function::locked, octave_function::my_dir_name):
8013 (octave_function::dir_name, octave_function::stash_dir_name,
8014 octave_function::lock, octave_function::unlock,
8015 octave_function::islocked): New functions.
8017 * of-fcn-handle.h, ov-fcn-handle.cc (octave_fcn_handle::subsref):
8018 Call out_of_date_check here to simplify time stamp checking.
8019 (octave_fcn_handle::reload_warning): Delete.
8021 * ov.h (octave_value::is_user_script, octave_value::is_user_function):
8023 * ov-base.h (octave_base_value::is_user_script,
8024 octave_base_value::is_user_function): New pure virtual functions.
8025 * ov-fcn.h (octave_function::is_user_script,
8026 octave_function::is_user_function): Delete.
8028 * load-save.cc (install_loaded_variable): Greatly simplify.
8030 * load-path.h, load-path.cc: Change private_fcn_file to private_file.
8031 (load_path::private_fcn_map): New data member.
8032 (load_path::do_add, load_path::do_remove, load_path::do_update):
8033 Also manage private_file_map here.
8034 (load_path::add_to_private_fcn_map): New function.
8035 (load_path::remove_private_fcn_map): New function.
8036 (load_path::do_find_private_fcn): Make it work.
8037 (get_file_list): New function.
8038 (load_path::do_display): Use it. Display private map.
8039 (load_path::find_method, load_path::find_fcn): Handle directory name.
8041 * token.cc, token.h, toplev.cc, debug.cc, defun.cc, defun-dld.h,
8042 defun-int.h, error.cc, help.cc, load-save.h, load-save.cc, mex.cc,
8043 octave.cc, ov-fcn-handle.cc, ov-usr-fcn.cc, parse.h, parse.y,
8044 lex.l, variables.cc: Adapt to new symbol table objects (my
8045 apologies for the lack of detail).
8047 * unwind-prot.h (unwind_protect::add): Set default value for ptr arg.
8049 * pt-stmt.cc (tree_statement::eval): Rework method for deciding
8050 whether to assign value to ans.
8052 * pt-idx.cc (tree_index_expression::rvalue):
8053 Looking up symbol may evaluaate first args now.
8055 * pt-id.h, pt-id.cc (tree_identifier::document,
8056 tree_identifier::is_defined, tree_identifier::define,
8057 tree_identifier::is_function, tree_identifier::lookup,
8058 tree_identifier::link_to_global): Delete.
8059 (tree_identifier::do_lookup): Simplify.
8060 (tree_identifier::rvalue): Looking up symbol can't execute script now.
8062 * pt-misc.cc (tree_parameter_list::initialize_undefined,
8063 tree_parameter_list::is_defined): Call is_variable for elt, not
8066 * pt-fcn-handle.h (tree_anon_fcn_handle::fcn): Now pointer to
8067 octave_user_function, not value. Change all uses.
8069 * pt-decl.h (tree_decl_command::initialized): Delete data member.
8070 (tree_decl_elt::is_variable): New function.
8071 * pt-decl.cc: Fix all uses of tree_decl_command::initialized.
8073 * ls-hdf5.cc, ls-mat-ascii.cc, ls-mat4.cc, ls-mat5.cc,
8074 ls-oct-ascii.cc, ls-oct-binary.cc, input.cc: Don't include symtab.h.
8076 * dynamic-ld.h, dynamic-ld.cc (octave_dynamic_loader::load_oct,
8077 octave_dynamic_loader::load_mex, octave_dynamic_loader::do_load_oct,
8078 octave_dynamic_loader::do_load_mex): Adapt to new symbol table
8079 objects. Return pointer octave_function instead of bool.
8081 * DLD-FUNCTIONS/dispatch.cc (Fbuiltin): Disable for now.
8082 Disable code that works with old symbol tables.
8083 (Fbuiltin): Simply call symbol_table::add_dispatch.
8085 * pt-arg-list.cc, pt-arg-list.h, pt-assign.cc, pt-assign.h,
8086 pt-binop.cc, pt-binop.h, pt-bp.h, pt-cell.cc, pt-cell.h,
8087 pt-cmd.cc, pt-cmd.h, pt-colon.cc, pt-colon.h, pt-const.cc,
8088 pt-const.h, pt-decl.cc, pt-decl.h, pt-except.cc, pt-except.h,
8089 pt-exp.h, pt-fcn-handle.cc, pt-fcn-handle.h, pt-id.cc, pt-id.h,
8090 pt-idx.cc, pt-idx.h, pt-jump.cc, pt-jump.h, pt-loop.cc, pt-loop.h,
8091 pt-mat.cc, pt-mat.h, pt-misc.cc, pt-misc.h, pt-select.cc,
8092 pt-select.h, pt-stmt.cc, pt-stmt.h, pt-unop.cc, pt-unop.h:
8093 Adapt dup functions to use scope instead of symbol_table objects.
8095 * TEMPLATE-INST/Array-sym.cc: Delete.
8096 * Makefile.in (TI_XSRC): Remove it from the list.
8098 * symtab.h, symtab.cc: Replace with new versions.
8100 2007-05-16 John W. Eaton <jwe@octave.org>
8102 * oct-lvalue.cc, oct-lvalue.h (octave_lvalue::chg_fcn): Delete.
8105 2007-05-15 John W. Eaton <jwe@octave.org>
8107 * load-path.cc (load_path::do_find_private_function): New function.
8108 * load-path.h (load_path::do_find_private_function): Provide decl.
8109 (load_path::find_private_function): New function.
8111 2007-05-08 John W. Eaton <jwe@octave.org>
8113 * pt-idx.cc (tree_index_expression::rvalue): Handle dispatch here.
8115 * pt-id.cc (tree_identifier::is_variable, tree_identifier::lookup):
8117 * pt-id.cc: Provide decls.
8119 * parse.y (current_class_name): New global variable.
8120 * parse.h: Provide decl.
8122 * parse.y (load_fcn_from_file, parse_fcn_file):
8123 New arg, dispatch_type.
8124 (parse_fcn_file): Protect current_class_name and set it to
8125 dispatch_type before parsing function.
8126 (load_fcn_from_file): If dispatch_type is not empty, call
8127 load_path::find_method instead of load_path::find_fcn.
8128 * parse.h: Fix decls for extern functions.
8130 * lex.h (lexical_feedback::parsing_class_method): New data member.
8131 * lex.l (lexical_feedback::init): Initialize it.
8132 (lookup_identifier): Check it and set sym_name accordingly.
8134 * ov-usr-fcn.h (octave_user_function::mark_as_class_constructor,
8135 octave_user_function::is_class_constructor,
8136 octave_user_function::mark_as_class_method,
8137 octave_user_function::is_class_method): New functions.
8138 (octave_user_function::class_constructor,
8139 octave_user_function::class_method): New data members.
8140 * ov-usr-fcn.cc (octave_user_function::octave_user_function):
8143 * load-path.h, load-path.cc: Use typedefs to simplify template decls.
8144 Use fcn consistently instead of function.
8146 2007-05-03 John W. Eaton <jwe@octave.org>
8148 * ov-class.cc (Fclass): Move here.
8149 * ov-typeinfo.cc: From here.
8151 * input.cc (octave_gets): Call load_path::update if user input
8152 contains something other than one of the characters " \t\n\r".
8154 * ov-class.cc, ov-class.h: New files.
8155 * Makefile.in: Add them to the appropriate lists.
8157 * load-path.cc (genpath): Skip directories beginning with "@".
8158 (load_path::dir_info::get_file_list): Don't return anything.
8159 Call get_private_function_map here.
8160 (load_path::dir_info::initialize): Not here.
8161 (load_path::dir_info_::get_method_file_map): New function.
8162 (load_path::method_map): New data member.
8163 (load_path::do_clear): Also clear method_map.
8164 (load_path::do_add): Also call add_to_method_map.
8165 (load_path::do_update): Also clear method_map and call
8166 (load_path::do_find_method): New function.
8167 (load_path::do_add_to_method_map): New function.
8168 (load_path::move_fcn_map, load_path::move_method_map): New functions.
8169 (load_path::move): Use them.
8170 (load_path::remove_fcn_map, load_path::remove_method_map):
8172 (load_path::remove): Use them.
8173 * load-path.h: Provide/fix decls.
8174 (load_path::find_method): New static function.
8176 * Makefile.in (%.df : %.cc): Use mv instead of
8177 $(simple-move-if-change-rule).
8179 2007-12-21 John W. Eaton <jwe@octave.org>
8181 Version 3.0.0 released.
8183 * version.h (OCTAVE_VERSION): Now 3.0.0.
8184 (OCTAVE_API_VERSION): Now api-v32.
8185 (OCTAVE_RELEASE_DATE): Now 2007-12-21.
8187 2007-12-19 Thomas Kasper <ThomasKasper@gmx.net>
8189 * OPERATORS/op-scm-cs.cc (DEFBINOP (pow)): Extract complex value
8192 2007-12-12 David Bateman <dbateman@free.fr>
8194 * DLD-FUNCTIONS/sparse.cc (Fsparse): Check for scalar arguments
8195 for 2 argument version.
8197 2007-12-12 John W. Eaton <jwe@octave.org>
8199 * graphics.h.in (class axes) Add the layer property.
8200 * graphics.cc (class axes) Ditto.
8202 * graphics.cc (gh_manager::get_handle): Use ceil instead of trunc.
8204 2007-12-11 John W. Eaton <jwe@octave.org>
8206 * version.h (OCTAVE_VERSION): Now 2.9.19+.
8208 2007-12-11 John W. Eaton <jwe@octave.org>
8210 * version.h (OCTAVE_VERSION): Now 2.9.19.
8211 (OCTAVE_API_VERSION): Now api-v31.
8212 (OCTAVE_RELEASE_DATE): Now 2007-12-11.
8214 * graphics.cc (make_graphics_object):
8215 If successful, call __request_drawnow__.
8217 * input.cc (Vgud_mode): New static variable.
8218 (F__gud_mode__): New function.
8219 (get_user_input): If debug and Vgud_mode, print location info in
8220 format for Emacs GUD mode.
8222 2007-12-11 David Bateman <dbateman@free.fr>
8224 * OPERATORS/op-bm-sbm.cc, OPERATORS/op-b-sbm.cc,
8225 OPERATORS/op-cm-scm.cc, OPERATORS/op-cm-sm.cc,
8226 OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc,
8227 OPERATORS/op-m-scm.cc, OPERATORS/op-m-sm.cc,
8228 OPERATORS/op-s-scm.cc, OPERATORS/op-s-sm.cc: Privilege
8229 conversion to dense matrices for compatibility.
8231 * DLD-FUNCTIONS/sparse.cc (FSparse): Remove the mutate flag, as
8232 default bahavior is now to keep matrix sparse always.
8234 * graphics.cc (axes::properties::properties):
8235 Initialize xcolor, ycolor, and zcolor to (0, 0, 0).
8237 * graphics.h.in (gh_manager::next_handle): Now double.
8238 * graphics.cc (gh_manager::get_handle, gh_manager::gh_manager):
8239 Set fractional part of next_handle to a random value.
8241 2007-12-10 John W. Eaton <jwe@octave.org>
8243 * ov-cell.cc (octave_cell::all_strings): Handle empty elements.
8244 Handle N-d cell arrays.
8246 * DLD-FUNCTIONS/fsolve.cc (Ffsolve):
8247 For compatibility, return [x, fval, info] instead of [x, info, msg].
8248 Move tests here from test/test_nonlin.m.
8250 * OPERATORS/op-cm-s.cc: Define function for el_mul with
8251 DEFNDBINOP_OP, not DEFBINOP_OP.
8253 * OPERATORS/op-s-cm.cc: Define functions for el_and and el_or
8254 operators with DEFNDBINOP_FN.
8256 * oct-hist.cc (default_history_file): Use file_ops::concat.
8257 * load-path.cc (dir_info::initialize, dir_info::get_file_list,
8258 load_path::do_find_fcn, load_path::do_find_file, genpath,
8259 execute_pkg_add_or_del, load_path::do_find_first_of,
8260 load_path::do_find_all_first_of): Likewise.
8262 * help.cc (Flookfor): Avoid doubling directory separator.
8263 * dirfns.cc (Fmkdir): Likewise.
8265 * pt-mat.cc (tree_matrix::rvalue): Produce sq_string if any
8266 strings are sq_string objects.
8268 2007-12-10 David Bateman <dbateman@free.fr>
8270 * graphics.h.in (data_property::data): Declare as NDArray instead
8271 of Matrix. Change all uses.
8273 2007-12-10 Shai Ayal <shaiay@users.sourceforge.net>
8275 * graphics.h.in (class figure) Add the color property.
8276 * graphics.cc (class figure) Ditto.
8278 2007-12-07 David Bateman <dbateman@free.fr>
8280 * data.cc (Fnorm): Don't return a scalar stored as a sparse
8281 matrix. Convert it to a scalar.
8283 * graphics.cc (check_limit_val): Delete.
8284 (check_limit_vals): Simplify and no longer use check_limit_val.
8286 2007-12-05 John W. Eaton <jwe@octave.org>
8288 * version.h (OCTAVE_VERSION): Now 2.9.18+.
8290 2007-12-05 John W. Eaton <jwe@octave.org>
8292 * version.h (OCTAVE_VERSION): Now 2.9.18.
8293 (OCTAVE_API_VERSION): Now api-v30.
8294 (OCTAVE_RELEASE_DATE): Now 2007-12-05.
8296 2007-12-04 John W. Eaton <jwe@octave.org>
8298 * Makefile.in (INCLUDES): Add builtins.h to the list.
8300 * src/oct-hist.cc (default_history_file): Use += instead of
8301 push_back to append character to std::string object.
8303 * Makefile.in (LIBDLFCN): Delete all uses.
8305 * toplev.cc (octave_config_info): Remove LIBDLFCN and
8306 DLFCN_INCFLAGS from the list.
8307 * oct-conf.h.in (OCTAVE_CONF_DLFCN_INCFLAGS, OCTAVE_CONF_LIBDLFCN):
8310 * error.cc (Ferror): Handle error id.
8312 * load-save.cc (Fsave, Fload): Doc fixes.
8313 From Marco Caliari <caliari@sci.univr.it>.
8315 2007-12-04 Shai Ayal <shaiay@users.sourceforge.net>
8317 * graphics.h.in (base_properties::get_type
8318 base_properties::get___modified__,
8319 base_properties::get___myhandle__): New functions.
8321 2007-12-04 Christoph Mayer <Christoph.Mayer@dlr.de>.
8323 * toplev.h (clean_up_and_exit, recover_from_exception,
8324 do_octave_atexit, global_command, curr_parent_function):
8325 Tag with OCTINTERP_API.
8327 2007-12-03 David Bateman <dbateman@free.fr>
8329 * DLD-FUNCTIONS/luinc.cc: Make tests conditional on HAVE_UMFPACK.
8330 * DLD-FUNCTIONS/spqr.cc: Make tests conditional on HAVE_CXSPARSE.
8332 * DLD-FUNCTIONS/regexp.cc: Use "%!testif" blocks for conditional
8335 * graphics.cc (class axes): Add color and activepositionproperty
8336 properties to axis objects.
8337 * graphics.h.in (class axes): ditto.
8339 * DLD-FUNCTIONS/regexp.cc: Also include sys/types.h for regexp.
8341 2007-11-30 John W. Eaton <jwe@octave.org>
8343 * DLD-FUNCTIONS/sort.cc (operator < (const Complex&, const Complex&),
8344 operator > (const Complex&, const Complex&)):
8345 Pass args by const reference, not value.
8347 * src/data.cc, src/matherr.c, src/pr-output.cc, src/sysdep.cc,
8348 src/DLD-FUNCTIONS/__dsearchn__.cc, src/DLD-FUNCTIONS/minmax.cc,
8349 src/DLD-FUNCTIONS/qz.cc, src/DLD-FUNCTIONS/sort.cc,
8350 src/DLD-FUNCTIONS/tsearch.cc: Include lo-math.h instead of cmath
8353 2007-11-30 Moritz Borgmann <octave@moriborg.de>
8355 * ls-mat5.h (mat5_data_type): Delete trailing comma in enum decl.
8356 * oct-stream.cc (octave_base_stream::do_printf): Use
8357 OCTAVE_EMPTY_CPP_ARG to avoid annoying Sun compiler warning.
8358 * OPERATORS/op-sbm-sbm.cc (DEFDBLCONVFN): Delete useless macro
8361 * DLD-FUNCTIONS/typecast.cc (typecast): No longer static.
8363 2007-11-30 John W. Eaton <jwe@octave.org>
8365 * graphics.cc (updating_axis_limits): New static variable.
8366 (check_limit_val, check_limit_vals, get_axis_limits): New functions.
8367 (axes::update_axis_limits): Make it work.
8368 * graphics.h.in (base_properties::get_children): New function.
8369 (base_properties::get_xdata, base_properties::get_ydata,
8370 base_properties::get_zdata, base_properties::get_ldata,
8371 base_properties::get_udata, base_properties::get_xldata,
8372 base_properties::get_xudata, base_properties::get_cdata,
8373 base_properties::get_properties (void) const):
8374 New virtual functions.
8375 (graphics_object::get_xdata, graphics_object::get_ydata,
8376 graphics_object::get_zdata, graphics_object::get_ldata,
8377 graphics_object::get_udata, graphics_object::get_xldata,
8378 graphics_object::get_xudata, graphics_object::get_cdata,
8379 graphics_object::get_properties (void) const,
8380 root_figure::get_properties (void) const,
8381 figure::get_properties (void) const,
8382 axes::get_properties (void) const,
8383 line::get_properties (void) const,
8384 text::get_properties (void) const,
8385 image::get_properties (void) const,
8386 patch::get_properties (void) const,
8387 surface::get_properties (void) const)): New functions.
8388 (radio_property::radio_property (const radio_values&)):
8389 Provide default value for argument.
8390 (radio_property::radio_property (const radio_values&, const
8391 std::string&)): Delete.
8392 (axes::xlimmode, axes::ylimmode, axes::zlimmode, axes::climmode,
8393 axes::xscale, axes::yscale, axes::zscale): Declare as
8394 radio_property instead of octave_value values. Adjust all uses.
8396 2007-11-29 John W. Eaton <jwe@octave.org>
8398 * pr-output.cc (octave_print_internal_template (std::ostream&,
8399 const octave_int<T>&, bool)): Rename from octave_print_internal.
8400 (PRINT_INT_SCALAR_INTERNAL): New macro. Use it to define
8401 non-template functions for printing scalar octave_int values.
8402 (octave_print_internal_template (std::ostream&, const intNDArray<T>&,
8403 bool, int)): Rename from octave_print_internal.
8404 (PRINT_INT_ARRAY_INTERNAL): New macro. Use it to define
8405 non-template functions for printing scalar octave_int values.
8406 * pr-output.h: Declare non-template functions for printing
8407 octave_int scalar and array values.
8408 Delete declarations of template funtions for printing octave_int
8409 scalar and array values.
8411 2007-11-28 John W. Eaton <jwe@octave.org>
8413 * graphics.cc (base_properties::update_axis_limits,
8414 axes::update_axis_limits): New functions.
8415 * graphics.h.in (class data_property): New class.
8416 (graphics_object::update_axis_limits): New function.
8417 (base_graphics_object::update_axis_limits): New virtual function.
8418 (base_properties::update_axis_limits, axes::update_axis_limits):
8420 (class line, class image, class patch, class surface): Use it
8421 instead of octave_value for data properties. Tag data properties
8423 (class axes): Tag scale properties with "l" modifier.
8424 * genprops.awk: Handle "l" modifier.
8426 * mkbuiltins: Emit #include "builtins.h" for the builtins.cc file.
8427 From Christoph Mayer <Christoph.Mayer@dlr.de>.
8429 * TEMPLATE-INST/Array-tc.cc (resize_fill_value<octave_value>):
8432 * Cell.cc (Cell::Cell (const dim_vector&, const string_vector&, bool)):
8433 Initialize undefined values to resize_fill_value ().
8435 2007-11-27 John W. Eaton <jwe@octave.org>
8437 * TEMPLATE-INST/Array-tc.cc (resize_fill_value<octave_value>):
8438 Tag inline. From Moritz Borgmann <octave@moriborg.de>.
8440 * pt-bp.cc (tree_breakpoint::visit_decl_command): Also check line
8442 * pt-decl.cc (tree_global_command::eval, tree_static_command::eval):
8443 Insert MAYBE_DO_BREAKPOINT here.
8445 * error.cc (Fwarning): If setting state "all" to "error", leave
8446 Octave:matlab-incompatible and Octave:single-quote-string warning
8448 (warning_enabled): Allow individual warning states to override
8449 "warning error all".
8451 * octave.cc (execute_eval_option_code, execute_command_line_file):
8453 * toplev.cc (recover_from_exception): Now extern.
8454 * toplev.h (recover_from_exception): Provide decl.
8456 * pt-idx.cc (tree_index_expression::lvalue): Treat object == []
8457 the same as undefined.
8459 2007-11-26 John W. Eaton <jwe@octave.org>
8461 * oct-stream.cc (DO_DOUBLE_CONV): Always use long.
8463 * oct-stream.cc (do_write): Call float_value and double_value on
8464 octave_int<T> objects instead of relying on conversion operators.
8466 * ls-mat5.cc (read_mat5_binary_element, OCTAVE_MAT5_INTEGER_READ):
8467 Call double_value on octave_int<T> objects
8468 instead of relying on conversion operator.
8469 (read_mat5_binary_file_header):
8470 Call char_value on octave_int<T> objects
8471 instead of relying on conversion operator.
8472 (read_mat5_binary_element):
8473 Call bool_value on octave_int<T> objects
8474 instead of relying on conversion operator.
8476 * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::double_value,
8477 OCTAVE_VALUE_INT_MATRIX_T::scalar_value,
8478 OCTAVE_VALUE_INT_MATRIX_T::matrix_value,
8479 OCTAVE_VALUE_INT_MATRIX_T::complex_matrix_value,
8480 OCTAVE_VALUE_INT_MATRIX_T::array_value,
8481 OCTAVE_VALUE_INT_MATRIX_T::complex_array_value,
8482 OCTAVE_VALUE_INT_SCALAR_T::double_value,
8483 OCTAVE_VALUE_INT_SCALAR_T::scalar_value,
8484 OCTAVE_VALUE_INT_SCALAR_T::matrix_value,
8485 OCTAVE_VALUE_INT_SCALAR_T::complex_matrix_value,
8486 OCTAVE_VALUE_INT_SCALAR_T::array_value,
8487 OCTAVE_VALUE_INT_SCALAR_T::complex_array_value,
8488 Call double_value on octave_int<T> objects
8489 instead of relying on conversion operator.
8490 (OCTAVE_VALUE_INT_MATRIX_T::bool_array_value,
8491 OCTAVE_VALUE_INT_SCALAR_T::bool_array_value):
8492 Call bool_value on octave_int<T> objects
8493 instead of relying on conversion operator.
8494 (OCTAVE_VALUE_INT_MATRIX_T::char_array_value,
8495 OCTAVE_VALUE_INT_SCALAR_T::char_array_value):
8496 Call char_value on octave_int<T> objects
8497 instead of relying on conversion operator.
8499 2007-11-26 David Bateman <dbateman@free.fr>
8501 * Sparse-op-defs.h (SPARSE_BASE_REDUCTION_OP): Check that the fill
8502 value is not zero before creating the matrices.
8504 * graphics.cc (class axes): Add the {x|y|z}color color property.
8505 * graphics.h.in (class axes): ditto.
8507 * ov-base.cc (Vsparse_auto_mutate, Fsparse_auto_mutate): New
8508 internal variable and built-in function to set it.
8509 * ov-base.h (extern bool Vsparse_auto_mutate): Export internal
8510 variable to other functions.
8511 * ov-re-sparse.cc (octave_sparse_matrix::try_narrowing_conversion
8512 (void)), ov-cx-sparse.cc
8513 (octave_sparse_complex_matrix::try_narrowing_conversion (void)),
8515 (octave_sparse_bool_matrix::try_narrowing_conversion (void)):
8516 Use Vsparse_auto_mutate flag to determine whether to convert
8517 sparse matrices to full matrices if that saves space.
8519 * DLD-FUNCTIONS/minmax.cc (MINMAX_DOUBLE_BODY): New version of
8520 MINMAX_BODY macro without the initialization.
8521 (MINMAX_INT_BODY): Macro for min/max for the integer types
8522 (MINMAX_BODY): New macro that calls the appropriate instantiation
8523 of the other two macros.
8525 * graphics.cc (class axes): Add __colorbar__ property.
8526 * graphics.h.in (class axes): ditto.
8528 * data.cc (Fnorm): Document the "inf" string argument for matrice
8529 and vectors and the "fro" argument for vectors.
8531 * graphics.h.in (class figure): Add __enhanced__ property to cache
8532 whether the terminal supports enhanced mode. Add interpreter
8533 property to all text classes, to determine the renderer for the
8535 * graphics.cc (class figure): ditto.
8537 2007-11-26 Shai Ayal <shaiay@users.sourceforge.net>
8539 * graphics.cc (string_properties): delete class
8540 (property_name): rename class to caseless_str.
8541 (radio_values::possible_vals): change type to caseless_str.
8543 2007-11-26 Michael Goffioul <michael.goffioul@gmail.com>
8545 * builtins.h (install_builtins): Tag with OCTINTERP_API.
8546 * toplev.h (octave_interpreter_ready, octave_initialized): Likewise.
8548 2007-11-14 John W. Eaton <jwe@octave.org>
8550 * mex.cc (mex::foreign_memlist): New data member.
8551 (mex::mark_foreign, mex::unmark_foreign): New functions.
8552 (mex::free): Don't warn about pointers found in foreign_memlist.
8553 (maybe_mark_foreign): New function.
8554 (mxArray_octave_value::get_data, mxArray_octave_value::get_ir,
8555 mxArray_octave_value::get_jc):
8556 Call maybe_mark_foreign on returned pointer.
8558 2007-11-14 David Bateman <dbateman@free.fr>
8560 * mex.cc (mxArray_sparse::mxArray_sparse (const mxArray_sparse&)):
8561 Also ensure that pr and pi are correctly copied.
8563 2007-11-14 John W. Eaton <jwe@octave.org>
8565 * Makefile.in (@bsd_gcc_kluge_targets_frag@): Delete line for
8566 Makefrag.bsd substitution.
8568 * graphics.h.in (base_properties::tag): New property.
8569 (base_properties::get_tag, base_properties::set_tag): New functions.
8570 (root_figure::set, root_figure::get, figure::set, figure::get,
8571 axes::set, axes::get, line::set, line::get, text::set, text::get,
8572 patch::set, patch::get, surface::set, surface::get): Handle tag.
8574 2007-11-14 Joseph P. Skudlarek <Jskud@Jskud.com>
8576 * DLD-FUNCTIONS/regexp.cc: Undo previous change.
8578 2007-11-14 John W. Eaton <jwe@octave.org>
8580 * mex.cc (mex::mark, mex::unmark): Now public.
8581 (mex::persistent): Delete.
8582 (mexMakeArrayPersistent): Call maybe_unmark_array instead of
8584 (mexMakeMemoryPersistent): Call maybe_unmark instead of
8586 (maybe_unmark (void *)): New function.
8587 (mxSetDimensions, mxSetPr, mxSetPi, mxSetData, mxSetImagData,
8588 mxSetIr, mxSetJc): Use it. From David Bateman.
8590 2007-11-13 Joseph P. Skudlarek <Jskud@Jskud.com>
8592 * DLD-FUNCTIONS/rand.cc (Frand): Update URL reference in doc string.
8594 2007-11-12 David Bateman <dbateman@free.fr>
8596 * graphics.h.in, graphics.cc (class text): Add the fontangle and
8597 fontweight properties. Add string_property class to handle the
8598 string radio values.
8600 2007-11-12 John W. Eaton <jwe@octave.org>
8602 * version.h (OCTAVE_VERSION): Now 2.9.17+.
8604 2007-11-12 David Bateman <dbateman@free.fr>
8606 * graphics.h.in, graphics.cc (class text): Add the fontname and
8607 fontsize properties.
8609 2007-11-10 John W. Eaton <jwe@octave.org>
8611 * version.h (OCTAVE_VERSION): Now 2.9.17.
8612 (OCTAVE_API_VERSION): Now api-v29.
8613 (OCTAVE_RELEASE_DATE): Now 2007-11-10.
8615 2007-11-09 John W. Eaton <jwe@octave.org>
8617 * DLD-FUNCTIONS/__gnuplot_raw__.l: Don't add atexit ("closeplot")
8620 2007-11-09 David Bateman <dbateman@free.fr>
8622 * graphics.cc, graphics.h.in (class patch): Add the field "keylabel".
8624 * data.cc (Fcputime) [__WIN32__]: Correct scaling of sys and usr times.
8626 * graphics.cc (is_handle): Handle must be a real scalar.
8628 2007-11-09 Joseph P. Skudlarek <Jskud@Jskud.com>
8630 * data.cc (Fislogical): Fix typo in documentation entry.
8632 2007-11-08 John W. Eaton <jwe@octave.org>
8634 * DLD-FUNCTIONS/__gnuplot_raw__.l (F__gnuplot_save_data__):
8635 Note obsolescence in doc string.
8636 (WARN_OBSOLETE): New macro
8637 (F__gnuplot_save_data__, Fgnuplot_command_plot,
8638 Fgnuplot_command_replot, Fgnuplot_command_splot,
8639 Fgnuplot_command_using, Fgnuplot_command_with,
8640 Fgnuplot_command_axes, Fgnuplot_command_title,
8641 Fgnuplot_command_end, Fgnuplot_use_title_option,
8642 F__clear_plot_window__, Fcloseplot, Fpurge_tmp_files,
8643 F__gnuplot_raw__, F__gnuplot_send_inline_data__, F__gnuplot_set__,
8644 F__gnuplot_show__, F__gnuplot_plot__, F__gnuplot_splot__,
8645 F__gnuplot_replot__): Use WARN_OBSOLETE.
8647 2007-11-07 John W. Eaton <jwe@octave.org>
8649 * DLD-FUNCTIONS/regexp.cc: Handle HAVE_PCRE_PCRE_H. Check
8650 HAVE_PCRE_H instead of HAVE_PCRE to decide whether to include pcre.h.
8652 * DLD-FUNCTIONS/__gnuplot_raw__.l (Fgnuplot_command_plot,
8653 Fgnuplot_command_replot, Fgnuplot_command_splot,
8654 Fgnuplot_command_using, Fgnuplot_command_with,
8655 Fgnuplot_command_axes, Fgnuplot_command_title,
8656 Fgnuplot_command_end, Fgnuplot_use_title_option,
8657 F__clear_plot_window__, Fcloseplot, Fpurge_tmp_files,
8658 F__gnuplot_raw__, F__gnuplot_send_inline_data__, F__gnuplot_set__,
8659 F__gnuplot_show__, F__gnuplot_plot__, F__gnuplot_splot__,
8660 F__gnuplot_replot__): Note obsolescence in doc string.
8662 2007-11-06 Kai Habel <kai.habel@gmx.de>
8664 * graphics.h.in (class surface::properties): New properties,
8665 cdata, facecolor, facealpha, edgecolor, linestyle,
8666 linewidth, marker, markeredgecolor, markerfacecolor, markersize.
8667 * graphics.cc (surface::properties::properties,
8668 surface::properties::set, surface::properties::get,
8669 surface::properties::factory_defaults): Handle new properities.
8671 2007-11-06 David Bateman <dbateman@free.fr>
8673 * data.cc (DATA_REDUCTION): Handle the 'native' and 'double'
8674 arguments of the Fsum function.
8675 * OPERATORS/op-bm-bm.cc (matrix_to_bool_matrix,
8676 scalar_to_bool_matrix): New type conversion functions.
8677 (install_bm_bm_ops): Install new type conversions functions.
8679 2007-11-06 Michael Goffioul <michael.goffioul@gmail.com>
8681 * toplev.cc (Fsystem) [__WIN32__ && ! __CYGWIN__]:
8682 Quote the complete command.
8684 2007-11-06 John W. Eaton <jwe@octave.org>
8686 * data.cc (Fnorm): New tests.
8688 * defun-int.h (DEFINE_FUNX_INSTALLER_FUN3): Don't install function
8689 if check_version produces an error.
8691 2007-11-05 John W. Eaton <jwe@octave.org>
8693 * pt-idx.cc (tree_index_expression::lvalue): Try to do a better
8694 job of computing the number of elements in lvalue expressions when
8695 the last indexing element is ".".
8697 2007-11-02 John W. Eaton <jwe@octave.org>
8699 * file-io.cc (fopen_mode_to_ios_mode): Use std::ios::app instead
8702 2007-11-02 Olli Saarela <Olli.Saarela@kcl.fi>
8704 * input.cc, pr-output.cc, bitfcns.cc, DLD-FUNCTIONS/time.cc:
8705 Fix broken @examples in help texts.
8707 2007-10-31 John W. Eaton <jwe@octave.org>
8709 * data.cc (Fnorm): Avoid warning about p_val possibly being used
8712 * version.h (OCTAVE_VERSION): Now 2.9.16+.
8714 2007-10-31 John W. Eaton <jwe@octave.org>
8716 * version.h (OCTAVE_VERSION): Now 2.9.16.
8717 (OCTAVE_API_VERSION): Now api-v28.
8718 (OCTAVE_RELEASE_DATE): Now 2007-10-31.
8720 2007-10-31 Muthiah Annamalai <muthuspost@gmail.com>
8722 * pt-assign.h (tree_simple_assignment::op_type,
8723 tree_multi_assignment::op_type): New functions.
8724 * pt-unop.h (tree_unary_expression::op_type): New function.
8726 2007-10-31 John W. Eaton <jwe@octave.org>
8728 * graphics.cc (line::properties::get): Fix property name
8729 (markerface -> markerfacecolor).
8731 * Makefile.in (INCLUDES): Add debug.h to the list.
8733 2007-10-30 John Swensen <jpswensen@comcast.net>
8735 * debug.h: New file.
8736 * debug.cc (parse_dbfunction_params, do_find_bkpt_list,
8737 intmap_to_ov): New functions.
8738 (Fdbstop, Fdbclear): Use parse_dbfunction_params.
8739 Improve compatibility.
8740 (Fdbstatus): Improve compatibility.
8742 * help.cc (do_which): No longer static.
8743 * help.h: Provide decl.
8745 2007-10-30 David Bateman <dbateman@free.fr>
8747 * symtab.cc: Doc fixes for small book format.
8749 2007-10-30 John W. Eaton <jwe@octave.org>
8751 * file-io.cc (fopen_mode_to_ios_mode): Handle 'W' as 'w' and 'R'
8752 as 'r', but warn about them.
8754 2007-10-29 Thomas Treichl <Thomas.Treichl@gmx.net>
8756 * data.cc: Include sytime.h, sys/types.h, and sys/resource.h.
8758 2007-10-25 John W. Eaton <jwe@octave.org>
8760 * graphics.cc (figure::properties::set_currentaxes):
8761 Allow currentfigure to be NaN.
8763 2007-10-25 Michael Goffioul <michael.goffioul@gmail.com>
8765 * DLD-FUNCTIONS/__contourc__.cc: Use unsigned int instead of uint.
8766 (drawcn): Use 1 << k instead of pow (2, k).
8768 2007-10-25 John W. Eaton <jwe@octave.org>
8770 * symtab.h (symbol_record::TYPE): Delete trailing comma in enum decl.
8772 * ov-base.h (DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Use
8773 OCTAVE_EMPTY_CPP_ARG to avoid annoying Sun compiler warning.
8775 * Makefile.in (graphics.h): Use $(AWK) instead of awk.
8777 * DLD-FUNCTIONS/time.cc (Ftime, Fmktime): Avoid unnecessary cast.
8779 * data.cc (Ftic, Ftoc): Call double_value on octave_time objects
8780 instead of relying on conversion operator.
8781 * ov.cc (octave_value::octave_value (octave_time)): Likewise.
8783 * variables.cc (symbol_out_of_date): Use explicit conversion to
8784 time_t instead of relying on conversion operator.
8785 * ov-fcn-handle.cc (octave_fcn_handle::subsref): Likewise.
8787 * data.cc (tic_toc_timestamp): Rename from __tic_toc_timestamp__.
8790 2007-10-24 David Bateman <dbateman@free.fr>
8792 * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::OCTAVE_VALUE_INT_MATRIX_T
8793 (const ArrayN<OCTAVE_INT_T>&)): New constructor.
8794 * ov.cc (octave_value::octave_value(const ArrayN<T>) with T being
8795 octave_int8, octave_uint8, octave_int16, octave_uint16,
8796 octave_int32, octave_uint32, octave_int64, octave_uint64): New
8798 * ov.h (octave_value::octave_value(const ArrayN<T>) with T being
8799 octave_int8, octave_uint8, octave_int16, octave_uint16,
8800 octave_int32, octave_uint32, octave_int64, octave_uint64):
8802 * DLD-FUNCTIONS/sort.cc (template class octave_sort<T>,
8803 template class vec_index<T>, template class
8804 octave_sort<vec_index<T> *>, with T being
8805 octave_int8, octave_uint8, octave_int16, octave_uint16,
8806 octave_int32, octave_uint32, octave_int64, octave_uint64): New
8807 instantiations of sort template classes.
8810 2007-10-24 John W. Eaton <jwe@octave.org>
8812 * graphics.cc (root_figure::properties::set_currentfigure):
8813 Allow currentfigure to be NaN.
8815 * pt-idx.cc (tree_index_expression::lvalue): Correctly compute
8816 number of elements in lvalue expression when last indexing
8819 2007-10-23 John W. Eaton <jwe@octave.org>
8821 * graphics.cc (is_handle (const graphics_handle&)): New function.
8822 (gh_manager::do_free, reparent, base_properties::set_parent,
8823 properties::get_title, properties::get_xlabel,
8824 properties::get_ylabel, properties::get_zlabel,
8825 properties::remove_child, make_graphics_object, F__go_figure__,
8826 F__go_delete__, __go_axes_init__): Call OK on graphics handle
8827 object instead of relying on implicit conversion operator.
8828 * graphics.h.in (graphics_handle::operator double ()): Delete.
8829 (graphics_handle::operator bool ()): Delete.
8830 (gh_manager::do_handle_list, gh_manager::do_figure_handle_list,
8831 base_properties::adopt): Call VALUE on graphics handle object
8832 instead of relying on implicit conversion operator.
8834 * ov-base.h (DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA): Call
8835 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA2 with "( )" as arg list
8838 * mxarray.h.in (mxClassID): Delete trailing comma in enum decl.
8840 * symtab.h (symbol_table::symbol_table): Reduce default table size
8843 2007-10-22 Kim Hansen <kimhanse@gmail.com>
8845 * unwind-prot.cc: Include <cstring>.
8847 2007-10-22 David Bateman <dbateman@free.fr>
8849 * data.cc (Ftic, Ftoc, Fcputime): New builtin versions of the
8850 benchmarking functions for speed.
8851 * oct-map.cc (Octave_map::squeeze, Octave_map::permute): New methods.
8852 (Octave_map::index (const octave_value_list&, bool)): Add resize_ok
8853 argument, define as const and use const_iterator internally.
8854 (Octave_map::index (idx_vector&, ...), Octave_map::index (Array
8855 <idx_vector>&, ...)): New forms of the index function.
8856 * oct-map.h (squeeze, permute, indx (const octave_value_list&, bool),
8857 index (idx_vector&, ...), index (Array <idx_vector>&, ...)): Add
8858 or update declaration.
8859 * ov-struct.cc (octave_struct::do_index_op (const octave_value_list&,
8861 * ov-struct.h (do_index_op (const octave_value_list&, bool)): Declare
8863 (squeeze (void), permute (const Arra<int>&, bool): New methods.
8865 2007-10-19 Kai Habel <kai.habel@gmx.de>
8867 * DLD-FUNCTIONS/__contourc__.cc (add_point): Rename from
8868 cl_add_point. Change all uses.
8869 (end_contour): Rename from cl_end_contour. Change all uses.
8870 (start_contour): Rename from cl_start_contour. Change all uses.
8871 (drawcn): Rename from cl_drawcn. New algorithm for locating contours.
8872 (mark_facets): New function.
8873 (cntr): Rename from cl_cntr. Change all uses. New algorithm for
8876 2007-10-19 John W. Eaton <jwe@octave.org>
8878 * ov-cell.cc (octave_cell::subsasgn): If RHS is cs-list, don't
8879 fail if shape of LHS is different.
8880 * ov-struct.cc (octave_struct::subsasgn): Likewise.
8882 2007-10-19 Olli Saarela <Olli.Saarela@kcl.fi>
8884 * help.cc (Flookfor): Call print_usage instead of usage.
8885 * DLD-FUNCTIONS/cellfun.cc (Fmat2cell): Likewise.
8887 2007-10-17 John W. Eaton <jwe@octave.org>
8889 * DLD-FUNCTIONS/spchol.cc (Fsymbfact): Delete special code for METIS.
8891 2007-10-17 Gabriele Pannocchia <g.pannocchia@ing.unipi.it>
8893 * DLD-FUNCTIONS/__qp__.cc (qp): Fix check for Wact(j).
8895 2007-10-15 Søren Hauberg <hauberg@gmail.com>
8897 * error.cc (Ferror): Make text fit on pages when using smallbook.
8898 * load-save.cc (Fsave_header_format_string): Ditto.
8899 * ov-struct.cc (Fcell2struct): Ditto.
8900 * DLD-FUNCTIONS/besselj.cc (Fairy): Ditto.
8901 * DLD-FUNCTIONS/urlwrite.cc (Furlwrite, Furlread): Ditto.
8903 2007-10-15 David Bateman <dbateman@free.fr>
8905 * graphics.cc (axes::properties::get): Fix typo.
8907 2007-10-13 John W. Eaton <jwe@octave.org>
8909 * version.h (OCTAVE_VERSION): Now 2.9.15+.
8911 2007-10-13 John W. Eaton <jwe@octave.org>
8913 * version.h (OCTAVE_VERSION): Now 2.9.15.
8914 (OCTAVE_API_VERSION): Now api-v27.
8915 (OCTAVE_RELEASE_DATE): Now 2007-10-13.
8917 2007-10-13 David Bateman <dbateman@free.fr>
8919 * graphics.h.in (class patch): Add the faces and vertices properties.
8920 * graphics.cc (patch::properties::properties): Initialize faces
8922 (patch::properties::get): Also fetch faces and vertices.
8923 (patch::properties::factory_defaults): Set faces and vertices.
8925 2007-10-12 John W. Eaton <jwe@octave.org>
8927 * Change copyright notices in all files that are part of Octave to
8928 GPLv3 or any later version.
8930 2007-10-11 John W. Eaton <jwe@octave.org>
8932 * DLD-FUNCTIONS/urlwrite.cc (urlget): Disable use of EPSV mode.
8934 2007-10-11 Brian Gough <bjg@network-theory.co.uk>
8936 * DLD-FUNCTIONS/fftn.cc, DLD-FUNCTIONS/regexp.cc, dirfns.cc,
8937 input.cc: Spelling fixes.
8939 2007-10-10 John W. Eaton <jwe@octave.org>
8941 * OPERATORS/op-sbm-sbm.cc (bool_matrix_to_double_matrix):
8942 New conversion function.
8943 (install_sbm_sbm_ops): Install it.
8945 * ov-re-mat.cc (double): Handle sparse as a special case.
8947 2007-10-10 Olli Saarela <Olli.Saarela@kcl.fi>
8949 * data.cc, debug.cc, dirfns.cc, error.cc, file-io.cc, help.cc,
8950 load-save.cc, ov-fcn-inline.cc, parse.y, pr-output.cc, symtab.cc,
8951 syscalls.cc, toplev.cc, variables.cc, DLD-FUNCTIONS/bsxfun.cc,
8952 DLD-FUNCTIONS/cellfun.cc, DLD-FUNCTIONS/fft.cc,
8953 DLD-FUNCTIONS/fft2.cc, DLD-FUNCTIONS/fftw.cc,
8954 DLD-FUNCTIONS/gcd.cc, DLD-FUNCTIONS/lsode.cc,
8955 DLD-FUNCTIONS/luinc.cc, DLD-FUNCTIONS/matrix_type.cc,
8956 DLD-FUNCTIONS/rand.cc, DLD-FUNCTIONS/regexp.cc,
8957 DLD-FUNCTIONS/sparse.cc, DLD-FUNCTIONS/spchol.cc,
8958 DLD-FUNCTIONS/splu.cc, DLD-FUNCTIONS/spparms.cc: Spelling fixes.
8960 2007-10-10 Kim Hansen <kimhanse@gmail.com>
8962 * DLD-FUNCTIONS/lpsolve.cc: Delete.
8963 * Makefile.in (DLD_XSRC): Remove it from the list.
8965 * data.cc (Fsqueeze): Document 2d behaviour.
8966 * ov-range.h (octave_range::squeeze): New function.
8968 2007-10-09 John W. Eaton <jwe@octave.org>
8970 * DLD-FUNCTIONS/urlwrite.cc (urlget_cleanup): New function.
8971 (urlget): Protect call to curl_easy_perform with
8972 BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE and
8973 END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE.
8975 2007-10-09 David Bateman <dbateman@free.fr>
8977 * input.cc (accept_line): Drop this function and remove automatic
8978 insertion of closing quotes as the transpose operator confuses it.
8979 (initialize_command_input): Remove accept_line from here as well.
8981 2007-10-09 John W. Eaton <jwe@octave.org>
8983 * ov-mapper.cc (octave_mapper::apply): If possible, use
8984 d_d_map_fcn to handle complex values which have imag(z) == 0.
8986 * DLD-FUNCTIONS/urlwrite.cc (Furlwrite, Furlread) [! HAVE_CURL]:
8987 Throw error instead of returning empty string hiding error message
8988 in third return value.
8989 (progress_func): Delete.
8990 (Furlread): Don't set progress callback for curl.
8991 (write_data, form_query_string, urlget): Now static.
8993 2007-10-08 David Bateman <dbateman@free.fr>
8995 * input.cc (quoting_filename): Function to add a leading quote to
8997 (accept_line): Function to check if a string needs a closing quote
8998 before calling the rl_newline function.
8999 (initialize_command_input): Initialize completer_quote_characters,
9000 filename_quote_characters, quoting_function,
9001 user_accept_line_function.
9003 * data.cc (template <class T> static make_diag (...)): New
9004 template class version of make_diag. Make other make_diag
9005 functions depend on it.
9006 ( static octave_value make_diag (const octave_value&,
9007 octave_idx_type)): Treat all possible internal Octave types.
9009 2007-10-08 John W. Eaton <jwe@octave.org>
9011 * load-save.cc (save_vars, dump_octave_core):
9012 Don't pass INFNAN_WARNED to do_save.
9013 (do_save): Delete unused arg, INFNAN_WARNED.
9014 Don't pass INFNAN_WARNED to save_ascii_data.
9015 * ls-oct-ascii.cc (save_ascii_data_for_plotting):
9016 Don't pass INFNAN_WARNED to save_ascii.
9017 (save_ascii_data): Delete unused arg, INFNAN_WARNED.
9019 * ov.h (octave_value::save_ascii): Delete unused arg, INFNAN_WARNED.
9020 * ov-base-int.cc (octave_base_int_matrix<T>::save_ascii,
9021 octave_base_int_scalar<T>::save_ascii): Likewise.
9022 * ov-base-sparse.cc (octave_base_sparse<T>::save_ascii): Likewise.
9023 * ov-base.cc (octave_base_value::save_ascii): Likewise.
9024 * ov-bool-mat.cc (octave_bool_matrix::save_ascii): Likewise.
9025 * ov-bool.cc (octave_bool::save_ascii): Likewise.
9026 * ov-cell.cc (octave_cell::save_ascii): Likewise.
9027 * ov-fcn-handle.cc (octave_fcn_handle::save_ascii): Likewise.
9028 * ov-fcn-inline.cc (octave_fcn_inline::save_ascii): Likewise.
9029 * ov-list.cc (octave_list::save_ascii): Likewise.
9030 * ov-struct.cc (octave_struct::save_ascii): Likewise.
9031 * ov-str-mat.cc (octave_char_matrix_str::save_ascii): Likewise.
9032 * ov-range.cc (octave_range::save_ascii): Likewise.
9034 * ov-scalar.cc (octave_scalar::save_ascii): Remove warning about
9035 reloading inf/nan values. Delete unused arg, INFNAN_WARNED.
9036 * ov-complex.cc (octave_complex::save_ascii): Likewise.
9037 * ov-re-mat.cc (octave_matrix::save_ascii): Likewise.
9038 * ov-cx-mat.cc (octave_complex_matrix::save_ascii): Likewise.
9040 * ov-fcn-inline.cc (Finline): Use DEFUNX instead of DEFUN.
9042 2007-10-08 Michael Goffioul <michael.goffioul@gmail.com>
9044 * sighandlers.h (can_interrupt): Tag with OCTINERP_API.
9045 * sysdep.h (raw_mode, octave_popen, octave_pclose,
9046 same_file_internal): Likewise.
9048 2007-10-06 John W. Eaton <jwe@octave.org>
9050 * oct-stream.cc (octave_base_stream::do_scanf):
9051 Always allow MVAL to re resized if NR > 0.
9052 (FINISH_CHARACTER_CONVERSION): Likewise.
9054 * mappers.cc (install_mapper_functions): Undo previous change.
9055 Fix doc string for lgamma.
9058 2007-10-05 John W. Eaton <jwe@octave.org>
9060 * graphics.h.in (axes::properties): New property, colororder.
9061 * graphics.cc (default_colororder): New function.
9062 (axes::properties::properties, axes::properties::get,
9063 axes::properties::set_defaults,
9064 axes::properties::factory_defaults, ): Handle colororder.
9066 * mappers.cc (xzlgamma): New static function.
9067 (install_mapper_functions): Pass xzlgamma for c_c_map for lgamma
9068 mapper. Pass 1 for can_ret_cmplx_for_real and set hi to
9071 2007-10-04 John W. Eaton <jwe@octave.org>
9073 * DLD-FUNCTIONS/symrcm.cc: Move static functions to top of file to
9074 avoid forward decls.
9075 (Q_enq): Delete unused arg QH. Change all uses.
9076 (Q_deq): Delete unused arg QT. Change all uses.
9077 (find_starting_node): Delete unused local variable J.
9078 (H_heapify_min, H_insert, find_starting_node, Fsymrcm):
9079 Move local variable decls to point of first use.
9081 * OPERATORS/op-streamoff.cc (STREAMOFF_COMP_OP):
9082 Avoid control-reaches-end-of-non-void-function warning.
9084 * pt-const.cc (tree_constant::dup): Avoid unused parameter warning.
9086 * pr-output.cc (set_real_format, set_real_matrix_format,
9087 set_complex_format, set_complex_matrix_format):
9088 Delete unused arg, SIGN. Change uses.
9090 * oct-map.cc (Octave_map::Octave_map): Avoid shadow warning.
9092 * load-save.cc (write_header): Use reinterpret_cast to avoid
9093 old-style cast warning.
9095 * data.cc (do_permute): Delete unused arg, FNAME. Change all uses.
9097 * sysdep.cc (w32_set_octave_home, w32_set_quiet_shutdown,
9098 MINGW_signal_cleanup):
9099 Only define if defined (__WIN32__) && ! defined (_POSIX_VERSION).
9101 2007-10-04 Jason Riedy <jason@acm.org>
9103 * ls-mat5.cc (read_mat5_binary_data): Map miUTF16 to miUINT16,
9104 miUTF32 to miUINT32. The matfile format currently states that
9105 wide UTF formats are in the same byte order as the integers.
9106 (read_mat5_binary_element): Replace all UTF16 and UTF32
9107 characters with the high bit set (value >127) by '?' and warn
9110 2007-10-04 Michael Goffioul <michael.goffioul@gmail.com>
9112 * sysdep.cc (w32_set_octave_home): Base OCTAVE_HOME location on
9113 octinterp, not the main exe.
9115 2007-10-03 John W. Eaton <jwe@octave.org>
9117 * data.cc (Fnorm): New function.
9118 (F__vnorm__): Delete.
9120 2007-10-03 Michael Goffioul <michael.goffioul@gmail.com>
9122 * DLD-FUNCTIONS/typecast.cc: Include <algorithm>.
9124 2007-10-03 John W. Eaton <jwe@octave.org>
9126 * oct-map.cc (Octave_map::Octave_map (const dim_vector&,
9127 const string_vector&)): Delete.
9128 (Octave_map::Octave_map (const dim_vector&, const Cell&)):
9130 * ov-struct.cc (Fstruct): Allow creation of empty struct arrays
9133 2007-10-01 Shai Ayal <shaiay@users.sourceforge.net>
9135 * graphics.cc ((color_property::color_property (const
9136 octave_value& val)): Undo change from 2007-09-26
9137 (patch::properties::properties): use the "a" modifier to
9138 face_color & edge_color properties
9139 (patch::properties::set): Undo change from 2007-09-26
9140 * graphics.h.in (color_property::color_property
9141 (const octave_value& val)): Undo change from 2007-09-26
9143 2007-10-01 Michael Goffioul <michael.goffioul@gmail.com>
9145 * octave.cc (octave_main): Add "--line-editing" option to force
9146 readline line editing.
9148 2007-09-28 David Bateman <dbateman@free.fr>
9150 * ov-range.h (int8_array_value, int16_array_value, int32_array_value,
9151 int64_array_value, uint8_array_value, uint16_array_value,
9152 int32_array_value, uint64_array_value): New methods
9154 2007-09-28 Kai Habel <kai.habel@gmx.de>
9156 * graphics.h.in (color_property::colormap_property (const Matrix&)):
9157 Use floating point math in calculation of colormap.
9159 2007-09-26 David Bateman <dbateman@free.fr>
9161 * graphics.cc (color_values::str2rgb): accept upper, lower and
9162 mixed-case versions of the string representing the color. Allow
9163 black defined as "k" and white as "w".
9164 (color_property::color_property (const octave_value& val,
9165 const radio_values &v)): Modify the constructor to also take a
9166 radio_values argument. Use it.
9167 (patch::properties::set): Change set_facecolor calls to initialize
9168 the color_property argument with the available radio_values.
9169 * graphics.h.in (color_property::color_property
9170 (const octave_value& val, const radio_values &v)): Also pass a
9171 radio_values argument.
9173 * ov-range.h (sparse_matrix_value, sparse_complex_matrix_value):
9176 * mk-pkg-add: Simplfy the autoload commands.
9177 * parse.y (Fautoload): Allow bare filename if file is in the same
9178 directory as the script from where the autoload command is run.
9180 2007-09-25 Matthias Drochner <m.drochner@fz-juelich.de>
9182 * syscalls.cc (Fpopen2): Doc fix.
9183 Use "sort -r" instead of "sort -nr" in test.
9185 2007-09-18 John W. Eaton <jwe@octave.org>
9187 * input.cc (input_event_hook, Finput_event_hook): Call
9188 command_editor::add_event_hook and
9189 command_editor::remove_event_hook intstead of
9190 command_editor::set_event_hook and
9191 command_editor::restore_event_hook.
9193 2007-09-17 John W. Eaton <jwe@octave.org>
9195 * version.h (OCTAVE_VERSION): Now 2.9.14+.
9197 2007-09-17 John W. Eaton <jwe@octave.org>
9199 * version.h (OCTAVE_VERSION): Now 2.9.14.
9200 (OCTAVE_API_VERSION): Now api-v26.
9201 (OCTAVE_RELEASE_DATE): Now 2007-09-17.
9203 * Makefile.in (DISTFILES): Add genprops.awk to the list.
9205 * ov-typeinfo.h (cat_op_fcn): Third arg in function pointer
9206 typedef is now Array<octave_idx_type> instead of Array<int>.
9208 * file-io.cc (do_stream_open): Use binary mode by default.
9210 2007-09-14 Shai Ayal <shaiay@users.sourceforge.net>
9212 * genprop.awk: Handle "a" modifier.
9214 2007-09-14 Kai Habel <kai.habel@gmx.de>
9216 * graphics.h.in (radio_values::contains): New function.
9217 (radio_values::validate): Use it.
9218 * graphics.cc (color_property::operator =): Call it instead of
9221 2007-09-13 John W. Eaton <jwe@octave.org>
9223 * DLD-FUNCTIONS/__glpk__.cc (glpk): Pass LPX_FX, not LB_DB, to
9224 lpx_set_col_bnds when lb[i] == ub[i].
9225 From: Zhi Wang <zcwang@umich.edu>.
9227 * graphics.h.in (colormap_property::colormap_property):
9228 Use jet colormap as default.
9230 2007-09-12 John W. Eaton <jwe@octave.org>
9232 * graphics.cc (text::properties::properties): Default color is
9234 * graphics.h (text::properties::color): Declare as color_property,
9237 * graphics.h.in (root_figure::defaults, figure::defaults,
9238 axes::defaults, line::defaults, text::defaults, image::defaults,
9239 patch::defaults, surface::defaults): New functions.
9240 * gripes.cc (gripe_not_implemented): New function.
9241 * gripes.h: Provide decl.
9243 2007-09-10 John W. Eaton <jwe@octave.org>
9245 * genprops.awk: Add missing newline character at end of file.
9246 From Alexander Klimov <alserkli@inbox.ru>.
9248 2007-09-10 David Bateman <dbateman@free.fr>
9250 * data.cc (do_cat): Avoid invalid indexing into ra_idx vector.
9252 2007-09-06 David Bateman <dbateman@free.fr>
9254 * DLD-FUNCTIONS/__delaunay__.cc, DLD-FUNCRIONS/__voronoi__.cc,
9255 DLD-FUNCTIONS/convhulln.cc: Avoid variables in global scope
9257 2007-09-06 David Bateman <dbateman@free.fr>
9259 * Makefile.in (stamp-prereq): Add graphics.h to the dependency list.
9261 2007-08-31 John W. Eaton <jwe@octave.org>
9263 * Makefile.in (INCLUDES): Remove graphics.h from the list.
9264 (DISTFILES): Include graphics.h.in in the list.
9265 (genprops.awk): New file.
9266 (graphics.h): New rule.
9267 (distclean): Remove graphics.h.
9268 * graphics.h.in: New file, from graphics.h.
9269 (graphics_handle): Now a class instead of typedef. Adapt all uses.
9270 (OCTAVE_GRAPHICS_PROPERTY_INTERNAL, OCTAVE_GRAPHICS_PROPERTY,
9271 OCTAVE_GRAPHICS_MUTABLE_PROPERTY): Delete macros.
9272 (class root_figure, class figure, class axes, class line, class
9273 text, class image, class patch, class surface): Use genprops.awk
9274 to generate property declarations and set/get functions.
9275 * graphics.h: Delete.
9276 * graphics.cc (nan_to_empty, empty_to_nan): Delete.
9277 (root_figure::properties::set, figure::properties::set,
9278 axes::properties::set, line::properties::set,
9279 text::properties::set, image::properties::set,
9280 patch::properties::set, surface::properties::set): Call
9281 type-specific set functions to set properties.
9282 (root_figure::properties::set_currentfigure,
9283 figure::properties::set_currentaxes, figure::properties::set_visible,
9284 axes::properties::get_title, axes::properties::get_xlabel,
9285 axes::properties::get_ylabel, axes::properties::get_zlabel,
9286 axes::properties::set_title, axes::properties::set_xlabel,
9287 axes::properties::set_ylabel, axes::properties::set_zlabel):
9288 Define custom versions.
9290 2007-09-06 David Bateman <dbateman@free.fr>
9292 * DLD-FUNCTIONS/bsxfun.cc: New function.
9293 * DLD-FUNCTIONS/typecast.cc: New function.
9294 * Makefile.in (DLD_XSRC): Add bsxfun.cc and typecast.cc.
9295 * ov.cc (do_cat_op): Modify use of Array<int> to
9296 Array<octave_idx_type> and adjust where necessary.
9297 * ov.h (do_cat_op): ditto.
9298 * data.cc (do_cat): ditto.
9299 * pt-mat.cc (tree_matrix::rvalue): ditto.
9301 2007-09-05 Michael Goffioul <michael.goffioul@gmail.com>
9303 * oct-stream.cc (octave_base_stream::do_printf): Ignore precision
9304 portion of format string if printing Inf, NaN, or NA values.
9306 2007-09-05 David Bateman <dbateman@free.fr>
9308 * DLD-FUNCTIONS/sort.cc (mx_sort_sparse, mx_sort_sparse_indexed):
9309 New template classes for sparse sort functions.
9311 * ov.h (octave_value (const Sparse<double>&, const MatrixType&),
9312 octave_value (const Sparse<Complex>&, const MatrixType&)): New
9314 * ov.cc (octave_value::octave_value (const Sparse<double>&,
9315 const MatrixType&), octave_value::octave_value (const
9316 Sparse<Complex>&, const MatrixType&)): Define them.
9317 * ov-re-sparse.h (octave_sparse_matrix (const MSparse<double>&,
9318 const MatrixType&), octave_sparse_matrix (const Sparse<double>&),
9319 octave_sparse_matrix (const Sparse<double>&, const MatrixType&)):
9321 * ov-cx-sparse.h (octave_sparse_complex_matrix (const MSparse<double>&,
9322 const MatrixType&), octave_sparse_complex_matrix (const
9323 Sparse<double>&), octave_sparse_complex_matrix (const
9324 Sparse<double>&, const MatrixType&)): ditto.
9326 2007-09-04 Gabriele Pannocchia <g.pannocchia@ing.unipi.it>
9328 * DLD-FUNCTIONS/__qp__.cc (qp): Use Wact(j) == i - n_eq when
9329 checking for blocking constraint. Don't resize lambda_tmp. Only
9330 compute Y = Aact.pseudo_inverse () if it is needed.
9332 2007-08-31 Michael Goffioul <michael.goffioul@gmail.com>
9334 * ls-mat-ascii.cc (get_lines_and_columns): Check beg variable for
9335 NPOS to avoid segmentation fault.
9337 * load-path.cc (load_path::do_find_file): Do not assume paths
9338 use forward slashes.
9340 2007-08-30 John W. Eaton <jwe@octave.org>
9342 * sysdep.cc (Fpause): Doc fix.
9344 2007-08-30 Gabriele Pannocchia <g.pannocchia@ing.unipi.it>
9346 * DLD-FUNCTIONS/__qp__.cc (qp): Resize Wact to n_act-neq, not n_act.
9348 2007-08-29 John W. Eaton <jwe@octave.org>
9350 * graphics.cc (class root_figure::properties):
9351 Rename from root_figure::root_figure_properties.
9352 (class figure::properties): Rename from figure::figure_properties.
9353 (class axes::properties): Rename from axes::axes_properties.
9354 (class line::properties): Rename from line::line_properties.
9355 (class text::properties): Rename from text::text_properties.
9356 (class image::properties): Rename from image::image_properties.
9357 (class patch::properties): Rename from patch::patch_properties.
9358 (class surface::properties): Rename from surface::surface_properties.
9360 * base-list.h (octave_base_list::remove): Implement our own
9361 remove_if function here.
9363 2007-08-28 John W. Eaton <jwe@octave.org>
9365 * graphics.h (base_properties): Move class definition before
9366 definition of base_graphics_object class. Provide forward
9367 declaration of base_graphics_object prior to definition of
9369 (base_graphics_object::get_properties): New virtual function.
9370 (graphics_object::get_properties, root_figure::get_properties,
9371 figure::get_properties, axes::get_properties,
9372 line::get_properties, text::get_properties, image::get_properties,
9373 patch::get_properties, surface::get_properties): New functions.
9374 (root_figure::properties, figure::properties, axes::properties,
9375 line::properties, text::properties, image::properties,
9376 patch::properties, surface::properties): Data member now private.
9378 2007-08-27 John W. Eaton <jwe@octave.org>
9380 * load-path.cc (load_path::do_find_file): Also files with non
9381 rooted relative names.
9382 * load-save.cc (find_file_to_load): Likewise. Also handle
9383 appending .mat to files with relative names.
9385 * graphics.cc (base_properties::mark_modified,
9386 base_properties::override_defaults,
9387 base_properties::delete_children, figure::get_default,
9388 axes::get_default): Move definitions here, from graphics.h.
9389 * graphics.h (class gh_manager): Move decl to end of file.
9391 * Cell.h (Cell::Cell (const octave_value_list&)): Create row
9392 vector instead of column vector.
9394 * pt-idx.cc (tree_index_expression::lvalue): Handle [x.a] =
9395 ... style assignments.
9396 * ov-struct.cc (octave_struct::subsasgn): Handle case of RHS as
9397 comma-separated list.
9399 * ov-cell.cc (gripe_failed_assignment): New function.
9400 (octave_cell::subsasgn): Call gripe_failed_assignment if assign
9403 2007-08-24 David Bateman <dbateman@free.fr>
9405 * symtab.cc (void symbol_table::clear (void)): If the record in
9406 the symbol table to clear is a user function that is a sub
9407 function with a static parent or if the parent is the current
9408 parent function, don't delete the record.
9409 (void symbol_table::clear_functions (void)): ditto.
9410 (void symbol_table::clear (const std::string&)): ditto.
9411 (void symbol_table::clear_function (const std::string&)): ditto.
9413 * graphics.h (class text): Add property color.
9414 * graphics.cc (text::text_properties::text_properties) ditto.
9415 (text::text_properties::set): ditto.
9416 (text::text_properties::get): ditto.
9417 (text::text_properties::factory_defaults): ditto.
9419 2007-08-24 John W. Eaton <jwe@octave.org>
9421 * mappers.cc (dummyp): New function.
9422 (install_mapper_functions): Use it to handle character data in
9423 finite, isinf, isna, and isnan functions.
9425 * load-path.cc (load_path::do_remove): Call remove_hook function
9426 before removing directory from list.
9428 2007-08-24 David Bateman <dbateman@free.fr>
9430 * ov-bool-sparse.cc (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Class
9432 * ov-re-sparse.cc, ov-cx-sparse.cc
9433 (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA): Class is now double.
9434 * ov-mapper.cc (octave_mapper::apply): Use is_sparse_type method
9435 rather than comparing class name.
9436 * ls-mat5.cc (save_mat5_element_length, save_mat5_binary_element):
9438 * pt-mat.cc (tree_matrix:rvalue): sparse matrices are now of class
9439 "double" or "logical", create new single type concat clause for
9441 * mex.cc (get_class_id): No longer need to special case sparse
9444 * DLD-FUNCTIONS/__delaunayn__.cc, DLD-FUNCTIONS/convhulln.cc,
9445 DLD-FUNCTIONS/tsearch.cc, DLD-FUNCTIONS/__voronoi__.cc: New
9446 functions ported from octave-forge.
9447 * DLD-FUCTIONS/__dsearchn__.cc: New file.
9448 * DLD-FUNCTIONS/__voronoi__.cc: Return point at infinity and
9449 include it in the polygrons of the Voronoi diagram for
9451 * Makefile.in: Add specific build targets for __delanayn__.cc,
9452 convhulln.cc and __voronoi__.cc to link to Qhull.
9453 (DLD_SRC): Add new functions.
9454 (OCTAVE_LIBS): Add QHULL_LIBS
9456 2007-08-22 David Bateman <dbateman@free.fr>
9458 * variables.cc (Fmunlock): Call munlock and not mlock.
9459 * symtab.cc (symbol_record::mark_as_formal_parameter): Typo.
9461 2007-08-10 John W. Eaton <jwe@octave.org>
9463 * pt-idx.cc (tree_index_expression::get_struct_index): Improve
9465 * ov-struct.cc (Fstruct, Fcell2struct): Trap invalid field names here.
9467 2007-08-10 Peter A. Gustafson <petegus@umich.edu>
9469 * graphics.h, graphics.cc (axes::axes_properties): New properties,
9470 xaxislocation and yaxislocation.
9472 2007-08-10 Kai Habel <kai.habel@gmx.de>
9474 * graphics.cc, graphics.h (patch): New class.
9475 (axes::axes_properties): New properties, clim and climmode.
9476 (surface::surface_properties::surface_properties): Handle patch.
9477 (F__go_patch__): New function.
9479 2007-07-30 John W. Eaton <jwe@octave.org>
9481 * mex.cc (mxArray_number::mxArray_number (int, const char **)):
9482 First arg is now mwSize.
9483 (max_str_len): Return mwSize value, not int.
9484 * mxarray.h.in (mxArray::mxArray (int, const char **)):
9485 First arg is now mwSize.
9486 (mxArray::mxArray (mxClassID, mwSize, mwSize, int, mxComplexity)):
9487 Third arg is now mwSize.
9488 (mxArray::get_string (char *, int)): Second arg is now mwSize.
9490 2007-07-26 John W. Eaton <jwe@octave.org>
9492 * DLD-FUNCTIONS/__glpk__.cc: Include glpk/glpk.h if
9493 HAVE_GLPK_GLPK_H is defined.
9495 2007-07-26 David Bateman <dbateman@free.fr>
9497 * pr-output.cc (Frats): Return character array with same number of
9498 rows as original value.
9500 2007-07-26 John W. Eaton <jwe@octave.org>
9502 * pt-bp.h (MAYBE_DO_BREAKPOINT): Rename cur_fcn to xfcn.
9504 * version.h (OCTAVE_VERSION): Now 2.9.13+.
9506 2007-07-25 John W. Eaton <jwe@octave.org>
9508 * version.h (OCTAVE_VERSION): Now 2.9.13
9509 (OCTAVE_API_VERSION): Now api-v25.
9510 (OCTAVE_RELEASE_DATE): Now 2007-07-25.
9512 * pt-bp.h (MAYBE_DO_BREAKPOINT): Rename fcn to curr_fcn.
9514 2007-07-25 David Bateman <dbateman@free.fr>
9516 * Makefile.in: Adjust DISTFILES to allow out of tree "make dist"
9519 2007-07-24 Shai Ayal <shaiay@users.sourceforge.net>
9521 * graphics.cc (color_property::operator = (const octave_value&)):
9523 * graphics.h: Provide decl.
9525 2007-07-24 Rafael Laboissiere <rafael@debian.org>
9527 * oct-conf.h.in (OCTAVE_CONF_RUNTEST): Delete definition.
9528 * toplevel.cc (Foctave_config_info): Remove RUNTEST from struct.
9530 2007-07-23 David Bateman <dbateman@free.fr>
9532 * pr-output.cc (rat_format, rat_string_len): Global variable
9533 controlling behavior of rational approximation. Use throughout.
9534 (class pr_rational_float): New class for rational approximation of
9535 floats, specifically with the << operator defined.
9536 (std::ostream& operator << (std::ostream&, const
9537 pr_rational_float&)): Operator to print rational approximations of
9539 (std::string rational_approx (double, int)): Function to convert a
9540 double value to a string of maximum length giving the rational
9542 (pr_any_float): Include the output of rational approximations.
9543 (Fformat): Add the "rat" format as an option.
9544 (Frats): New function.
9546 2007-07-23 Aquil H. Abdullah <aquil.abdullah@gmail.com>
9548 * mex.cc (mxCreateStructArray): Declare second arg as const.
9549 * mexproto.h (mxCreateStructArray): Ditto.
9551 2007-07-20 David Bateman <dbateman@free.fr>
9553 * zfstream.cc (BUFSIZE): Increase default buffer size to 256kB
9554 (gzfilebuf::underflow): Stash the last 16 characters read, so as
9555 to avoid calling pbackfail as much as possible.
9557 2007-07-18 David Bateman <dbateman@free.fr>
9559 * zfstream.cc (int_type gzfilebuf::pbackfail (int_type)): New
9560 method to putback a character when the putback position in the
9561 internal buffer doesn't exist.
9562 * zfstream.h (int_type pbackfail (int_type)): Declaration it.
9564 2007-07-14 Michael Goffioul <michael.goffioul@swing.be>
9566 * src/ov-bool-sparse.cc (octave_sparse_bool_matrix:load_hdf5):
9567 Use OCTAVE_LOCAL_BUFFER for temporary boolean value.
9569 2007-06-27 David Bateman <dbateman@free.fr>
9571 * DLD-FUNCTIONS/sparse.cc (Fspdiag): Ensure spdiag(zeros(1,0)) returns
9572 0x0 matrix. Doc update.
9573 * data.cc (Fdiag): Doc update.
9575 2007-06-28 John W. Eaton <jwe@octave.org>
9577 * ov-cell.cc (octave_cell::subsasgn): Given x = {}, convert to
9578 struct for assignments like x(1).f = val;
9580 * oct-stream.cc (octave_scan_1): New function
9581 (octave_scan): Use it. Handle fmt.width.
9583 * graphics.h (axes::axes_properties::visible): New data member.
9584 * graphics.cc (axes::axes_properties::axes_properties,
9585 axes::axes_properties::set, axes::axes_properties::get,
9586 axes::axes_properties::factory_defaults): Handle visible property.
9588 2007-06-27 Kai Habel <kai.habel@gmx.de>
9590 * graphics.h (color_values::color_values): Arg is now std:string
9591 instead of char. Call str2rgb, not c2rgb.
9592 * graphics.h, graphics.cc: (color_values::str2rgb): Rename from
9593 c2rgb. Handle long color names, not just single char abbreviations.
9595 2007-06-27 David Bateman <dbateman@free.fr>
9597 * src/load-save.cc (Fsave): Ensure header is written for non
9598 existent file with "-append".
9599 * src/ls-hdf5.h: First steps towards having append work for hdf5.
9601 2007-06-26 John W. Eaton <jwe@octave.org>
9603 * src/load-save.cc (Fsave): Open files correctly for -append.
9604 Don't write file headers if appending. Error for -append -hdf5.
9606 2007-06-25 Olaf Till <i7tiol@t-online.de>
9608 * oct-stream.h (octave_stream_list::list): Use std::map.
9609 (octave_stream_list::curr_len): Delete data member.
9610 (octave_stream_list::octave_stream_list): Fix initializations.
9612 * oct-stream.cc (octave_steam_list::do_insert,
9613 octave_steam_list::do_lookup, octave_steam_list::do_remove,
9614 octave_steam_list::do_clear, octave_steam_list::do_list_open_files,
9615 octave_steam_list::do_open_file_numbers,
9616 octave_steam_list::do_get_file_number):
9617 Use new octave_stream_list::list type.
9618 (octave_stream_list::do_insert): Insert octave_stream with key
9619 corresponding to file-descriptor.
9620 (octave_stream_list::do_insert, octave_steam_list::insert):
9621 Remove const qualifier of argument.
9623 2007-06-18 Søren Hauberg <hauberg@gmail.com>
9625 * DLD-FUNCTIONS/__lin_interpn__.cc: Replace octave_NaN with octave_NA.
9627 2007-06-15 Shai Ayal <shaiay@users.sourceforge.net>
9629 * graphics.h (OCTAVE_GRAPHICS_PROPERTY_INTERNAL,
9630 OCTAVE_GRAPHICS_PROPERTY, OCTAVE_GRAPHICS_MUTABLE_PROPERTY):
9631 New macros. Use them to declare individual properties and define
9632 accessor methods for each property in the property classes.
9634 2007-06-15 Kai Habel <kai.habel@gmx.de>
9636 * graphics.cc (Fget, Fset): Handle vectors of handles.
9638 2007-06-14 John W. Eaton <jwe@octave.org>
9640 * sysdep.cc (octave_popen, octave_pclose): New functions.
9641 * sysdep.h: Provide decls.
9643 * oct-procbuf.cc (procbuf::open): Use octave_popen.
9644 (procbuf::close): Use octave_pclose.
9645 * oct-prcstrm.cc (octave_oprocstream::octave_oprocstream,
9646 octave_iprocstream::ictave_oprocstream): Likewise.
9648 * graphics.h (text::text_properties::rotation): New data member.
9649 * graphics.cc (text::text_properties::text_properties,
9650 text::text_properties::set, text::text_properties::get,
9651 text::text_properties::factory_defaults): Handle rotation property.
9653 2007-06-14 Kai Habel <kai.habel@gmx.de>
9655 * graphics.cc (color_values::c2rgb): Also accept 'k' for black.
9657 2007-06-14 David Bateman <dbateman@free.fr>
9659 * ov-ch-mat.h (idx_vector index_vector (void) const): Remove
9661 * ov-ch-mat.cc (idx_vector index_vector (void) const): Move it
9662 here. Special case ":" case for compatibility.
9664 2007-06-13 John W. Eaton <jwe@octave.org>
9666 * ov-re-mat.cc (octave_matrix::load_ascii):
9667 Do a better job of handling read errors and empty matrices.
9668 * ov-cx-mat.cc (octave_complex_matrix::load_ascii): Likewise.
9669 * ov-bool-mat.cc (octave_bool_matrix::load_ascii): Likewise.
9670 * ov-str-mat.cc (octave_char_matrix_str::load_ascii): Likewise.
9672 2007-06-13 David Bateman <dbateman@free.fr>
9674 * DLD-FUNCTIONS/minmax.cc (MINMAX_BODY): Don't treat as single
9675 argument if arg2 is empty and nargin=2.
9677 2007-06-13 Shai Ayal <shaiay@users.sourceforge.net>
9679 * graphics.h, graphics.cc: Move class declarations to graphics.h.
9680 Move larger functions outside of class declarations in graphics.cc.
9682 2007-06-12 Benjamin Lindner <lindnerben@gmx.net>
9684 * DLD-FUNCTIONS/cellfun.cc: Use fullfile to generate filenames
9685 instead of assuming / will work as directory separator.
9687 2007-06-12 David Bateman <dbateman@free.fr>
9689 * DLD-FUNCTIONS/interpn.cc: Remove it.
9690 * DLD-FUNCTIONS/__lin_interpn__.cc: Move it. This is now a support
9691 function of interpn.m.
9692 * Makefile.in (DLD_XSRC): Remove interpn.cc and add __lin_interpn__.cc.
9694 2007-06-07 David Bateman <dbateman@free.fr>
9696 * ov-fcn-handles.cc (octave_fcn_handle::save_hdf5): More care that
9697 all open HDF5 descriptors are closed.
9698 (octave_fcn_handle::load_hdf5): Ditto.
9700 2007-06-06 Benjamin Lindner <lindnerben@gmx.net>
9702 * utils.cc [__MINGW32__]: Don't define HAVE_C99_VSNPRINTF.
9704 2007-06-06 Michael Goffioul <michael.goffioul@swing.be>
9706 * defaults.h.in, ls-hdf5.h, ov-complex.h, ov-cx-mat.h, ov-intx.h,
9707 sysdep.h: Sprinkle with OCTINTERP_API as needed.
9709 2007-06-05 John W. Eaton <jwe@octave.org>
9711 * help.h (raw_help): Tag with OCTINTERP_API.
9713 * Makefile.in (INCLUDES): Remove mxarray.h from the list so that
9714 it is not distributed.
9715 (EXTRAS): Add mxarray.h to the list so that it is installed.
9717 * sysdep.cc (same_file_internal) [OCTAVE_USE_WINDOWS_API]:
9718 Avoid leaking file handles.
9720 2007-05-08 Michael Weitzel <michael.weitzel@uni-siegen.de>
9722 * DLD-FUNCTIONS/symrcm.cc: Fix for queuing error that might cause
9725 2007-06-04 John W. Eaton <jwe@octave.org>
9727 * data.cc (Fislogical): Rename from Fisbool.
9728 Make isbool an alias for islogical.
9730 2007-06-03 David Bateman <dbateman@free.fr>
9732 * Makefile.in (DISTFILES): Add mxarray.h.in
9733 (install-inc): Modify target so that mxarray.h is installed
9735 (distclean): Remove mxarray.h on distclean.
9736 * mex.cc: Use mwSize for dimensions and mwIndex for indexing
9737 throughout, with the exception of struct key indexes.
9738 * mexproto.h: ditto.
9739 * mxarray.h: remove.
9740 * mxarray.h.in: Copy here and define mwSize, mwIndex, and use
9742 * ov-bool-mat.cc (octave_bool_matrix::as_mxArray): Use mwSize and
9744 * ov-bool-sparse (octave_sparse_bool_matrix::as_mxArray): ditto.
9745 * ov-cell.cc (octave_cell:as_mxArray): ditto.
9746 * ov-ch-mat.cc (octave_char_matrix:as_mxArray): ditto.
9747 * ov-cx-mat.cc (octave_complex_matrix::as_mxArray): ditto.
9748 * ov-cx-sparse.cc (octave_sparse_complex_matrix::as_mxArray): ditto.
9749 * ov-int.h (as_mxArray): ditto.
9750 * ov-range.cc (octave_range:as_mxArray): ditto.
9751 * ov-re-mat.cc (octave_matrix:as_mxArray): ditto.
9752 * ov-re-sparse.cc (octave_sparse_matrix::as_mxArray): ditto.
9753 * ov-struct.cc (octave_struct::as_mxArray): ditto.
9755 2007-06-02 David Bateman <dbateman@free.fr>
9757 * graphics.cc (color_property class): g++ doesn't like anonymous
9758 enums. Give type to color_type enum.
9760 2007-05-31 Shai Ayal <shaiay@users.sourceforge.net>
9762 * graphics.cc (radio_values, radio_property, color_values):
9764 (color_property class): Handle both color and radio values.
9766 2007-05-31 John W. Eaton <jwe@octave.org>
9768 * toplev.cc (main_loop): Improve bad_alloc error message.
9770 * octave.cc (execute_command_line_file, execute_eval_option_code):
9773 2007-05-31 Michael Goffioul <michael.goffioul@swing.be>
9775 * toplev.cc (octave_atexit_functions):
9776 Now std::list instead of std::stack.
9777 (do_octave_atexit): Adapte to octave_atexit_functions as list.
9778 (Fatexit): Allow second arg of false to remove element from list.
9780 * DLD-FUNCTIONS/symrcm.cc: Use ! instead of "not".
9782 * sysdep.cc (same_file_internal) [OCTAVE_USE_WINDOWS_API]:
9783 Use INVALID_HANDLE_VALUE, not INVALID_FILE_HANDLE.
9785 2007-05-28 G. D. McBain <geordie_mcbain@yahoo.com.au>
9787 * ov-list.cc (append): Doc fix.
9789 2007-05-28 John W. Eaton <jwe@octave.org>
9791 * pt-loop.cc (DO_ND_LOOP): Avoid parser problem with obsolete g++.
9793 2007-05-23 John W. Eaton <jwe@octave.org>
9795 * version.h (OCTAVE_VERSION): Now 2.9.12+.
9797 2007-05-23 John W. Eaton <jwe@octave.org>
9799 * version.h (OCTAVE_VERSION): Now 2.9.12.
9800 (OCTAVE_RELEASE_DATE): Now 2007-05-23.
9802 * parse.y (make_anon_fcn_handle): Don't build assignment expression.
9803 * ov-fcn-handle.cc (octave_fcn_handle::print_raw):
9804 Don't split assignment expression.
9805 * ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
9806 Special case for inline function body evaluation.
9808 2007-05-22 John W. Eaton <jwe@octave.org>
9810 * pt-fcn-handle.cc (tree_anon_fcn_handle::rvalue):
9811 Set current function as parent of anonymous function handle.
9813 * Makefile.in (uninstall): Also remove
9814 $(DESTDIR)$(octincludedir)/octave, $(DESTDIR)$(octincludedir),
9815 $(DESTDIR)$(octlibdir), and $(DESTDIR)$(octfiledir).
9817 2007-05-22 Thomas Weber <thomas.weber.mail@gmail.com>
9819 * debug.cc, error.cc, load-save.cc, oct-hist.cc, sighandlers.cc,
9820 symtab.cc: Fix typos.
9822 2007-05-22 John W. Eaton <jwe@octave.org>
9824 * version.h (OCTAVE_VERSION): Now 2.9.11+.
9826 2007-05-22 John W. Eaton <jwe@octave.org>
9828 * version.h (OCTAVE_VERSION): Now 2.9.11.
9829 (OCTAVE_API_VERSION): Now api-v24.
9830 (OCTAVE_RELEASE_DATE): Now 2007-05-22.
9832 2007-05-21 David Bateman <dbateman@free.fr>
9834 * debug.cc (Fdbstop): handle integer, vector and multiple line
9836 (Fdbclar): ditto. Eliminate extraneous debugging messages.
9838 2007-05-21 Søren Hauberg <hauberg@gmail.com>
9840 * load-path.cc (Fpath, Frehash): Replace "LOADPATH" with "load
9841 path" in doc strings.
9843 * parse.y (Feval): Add example.
9845 2007-05-21 David Bateman <dbateman@free.fr>
9847 * error.cc (rethrow_error): Use NULL name so that "error:" is not
9848 added to the message
9849 (Frethrow): Correctly treat empty stack.
9851 2007-05-21 John W. Eaton <jwe@octave.org>
9853 * oct-map.h (Octave_map::numel): Return number of array elements,
9854 not number of map elements.
9855 (Octave_map::nfields): Rename from length.
9856 (Octave_map::empty): Delete.
9857 Change all uses of empty to check nfields () == 0 instead.
9859 2007-05-21 Søren Hauberg <soren@hauberg.org>
9861 * help.cc (Fautoload): Doc fix.
9862 * variables.cc (Fiscommand): Doc fix.
9864 2007-05-19 David Bateman <dbatemna@free.fr>
9866 * ov-fcn-inline.cc (Fvectorize): Doc fix.
9868 2007-05-16 Søren Hauberg <soren@hauberg.org>
9870 * ov.cc (Fsubsref, Fsubsasgn): Doc fix.
9872 2007-05-16 John W. Eaton <jwe@octave.org>
9874 * load-path.h (load_path::sys_path): New static data member.
9875 (load_path::system_path): New static function.
9876 (load_path::do_system_path): New function.
9877 * load-path.cc (Vsystem_path): Delete.
9878 (load_path::do_initialize): Use sys_path, not Vsystem_path.
9879 (Fpathdef): Call load_path::system_path instead of using Vsystem_path.
9880 * ls-mat5.cc (read_mat5_binary_element): Likewise.
9881 * ov-fcn-handle.cc (octave_fcn_handle::set_fcn): Likewise.
9883 2007-05-16 David Bateman <dbateman@free.fr>
9885 * load_pathc.cc (std::string octave_system_path (void)): New
9887 * load-path.h (std::string octave_system_path (void)): Declare it.
9889 * load-save.cc (static load_save_format get_file_format
9890 (std::istream&, const std::string&)): Add filename argument, and
9891 pass it to read_mat5_binary_header. Use new format throughout file.
9892 (Fload): Don't allow gzip of matlab v7 files as the files
9893 themselves include compression.
9895 * ls-mat5.cc (arrayclsstype:MAT_FILE_WORKSPACE_CLASS): New class
9897 (read_mat5_binary_element): Workspaces, don't have dimensions, so
9898 don't read them. Implement read of matlab objects, but only use
9899 them for inline functions. Implement reading of function and
9901 (read_mat5_binary_header): Add filename argument. Read sub-system
9902 specific data block given as an offset in bytes 117 to 124.
9903 (save_mat5_binary_element): Include saving of inline functions.
9905 * ls-mat5.h (read_mat5_binary_header): Include filename.
9907 * ov-fcn-handle.cc (octave_fcn_handle_save_ascii,
9908 octave_fcn_handle::load_ascii, octave_fcn_handle::save_binary,
9909 octave_fcn_handle::load_binary, octave_fcn_handle::save_hdf5,
9910 octave_fcn_handle::load_hdf5): Save and reload the local symbol
9911 table of the user function associated with anonymous function
9912 handles. Save and load the absolute path and the exec_prefix for
9913 normal function handles and use then to find equivalent functions
9914 between different installations of Octave. Attempt to maintain
9915 backward and forward compatibility.
9916 (Ffunctions): Additional outputs, including the workspace of
9917 anonymous functions, and more compatiable outputs.
9919 * ov-fcn-handle.h (user_function_value): Expose the user function
9920 value of a function handle.
9922 * ov-fcn-inline.cc (Octave_map octave_fcn_inline::map_value
9923 (void) const): Return a structure compatiable with matlab's class
9924 implementation of inline functions.
9926 * ov-fcn-inline.h (map_value): Declare it.
9928 2007-05-14 Bob Weigel <rweigel@gmu.edu>
9930 * DLD-FUNCTIONS/svd.cc: Doc fix.
9932 2007-05-14 Thomas Weber <thomas.weber.mail@gmail.com>
9934 * DLD-FUNCTIONS/fft.cc (do_fft): Handle empty matrices. New tests.
9936 2007-05-14 Søren Hauberg <soren@hauberg.org>
9938 * toplev.cc (Fatexit): Simplify example in doc string.
9939 * help.cc (Flookfor): Doc fix.
9940 * DLD-FUNCTIONS/cellfun.cc (Fcellfun):
9941 Reformat to avoid long lines in doc string example.
9943 2007-05-13 Søren Hauberg <soren@hauberg.org>
9945 * toplev.cc (Fquit): Doc fix.
9946 * help.cc (Fhelp): Doc fix.
9947 * oct-hist.cc (Fsaving_history): Doc fix.
9949 2007-05-11 John W. Eaton <jwe@octave.org>
9951 * variables.cc (symbol_out_of_date):
9952 Always check for files that have gone missing.
9954 2007-05-08 Michael Weitzel <michael.weitzel@uni-siegen.de>
9956 * DLD-FUNCTIONS/symrcm.cc: New function for Reverse Cuthill-McKee
9959 2007-05-07 John W. Eaton <jwe@octave.org>
9961 * oct-map.cc (Octave_map::resize): Handle case of no keys.
9962 (keys_ok): Rename from equiv_keys. Return value is now status.
9963 Pass key names as string_vector reference arg.
9964 (Octave_map::assign (const octave_value_list&, const Octave_map&)):
9965 Call keys_ok, not equiv_keys. Handle case of no keys.
9967 2007-04-30 John W. Eaton <jwe@octave.org>
9969 * Makefile.in (%.df : %.cc): Use mv instead of
9970 $(simple-move-if-change-rule).
9972 2007-04-30 David Bateman <dbateman@free.fr>
9974 * pt-loop.cc (DO_ND_LOOP): New args, CONV and ARG.
9975 Use octave_idx_type instead of int for loop counters.
9976 Remove redundant assignments to variable "quit" as it is
9977 always defined in quit_loop_now.
9978 Special case rows = 0 and 1 cases in loops over arrays.
9979 Include some of the code that was separate from the macro
9980 DO_ND_LOOP in the macro itself
9981 (tree_simple_for_command::eval): USE DO_ND_LOOP for all loops.
9984 2007-04-30 John W. Eaton <jwe@octave.org>
9986 * mex.cc (mex::cleanup): Don't call unmark for elements of the set
9987 inside the loop. From Laurent Mazet <laurent.mazet@motorola.com>.
9989 2007-04-30 David Bateman <dbateman@free.fr>
9991 * OPERATORS/op-int-conv.cc: Define sq and dq string conversion
9992 operators. Delete old char_matrix_str conversions.
9993 * OPERATORS/op-int-conv.cc (install_int_conv_ops): Install them.
9995 2007-04-27 Benjamin Lindner <lindnerb@users.sourceforge.net>.
9997 * octave.cc (execute_startup_files): Call same_file to check for
9998 already executed init files.
10000 2007-04-27 John W. Eaton <jwe@octave.org>
10002 * sysdep.cc (same_file_internal): New function. POSIX code
10003 from same_file in utils.cc. Windows code from
10004 Benjamin Lindner <lindnerb@users.sourceforge.net>.
10005 Don't canonicalize file names.
10006 Also return false if stat calls fail.
10007 * sysdep.h: Provide decl.
10008 * utils.cc (same_file): Use same_file_internal.
10010 2007-04-27 David Bateman <dbateman@free.fr>
10012 * graphic.cc (get_property_form_handle, set_property_in_handle):
10014 * grahics.h: New file.
10015 * mex.cc (mexGet, mexSet): use the above to implement mexGet
10017 * Makefile.in (INCLUDES): Add graphics.h
10019 2007-04-26 John W. Eaton <jwe@octave.org>
10021 * ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
10022 Only deal with varargout if ret_list->takes_varargs () is true.
10024 2007-04-26 Søren Hauberg <soren@hauberg.org>
10026 * DLD-FUNCTIONS/urlwrite.cc: Doc fix.
10028 2007-04-26 David Bateman <dbateman@free.fr>
10030 * pt-loop.cc (tree_simple_for_command::eval (void)): Correct
10031 reshaping of dim_vector in for loop for multi-dimensional array.
10033 2007-04-26 John W. Eaton <jwe@octave.org>
10035 * load-save.cc (find_file_to_load): Only consider regular files.
10037 2007-04-24 Shai Ayal <shaiay@users.sourceforge.net>
10039 * graphics.cc (color_property): Eliminate alpha channel from RGB
10042 2007-04-23 Shai Ayal <shaiay@users.sourceforge.net>
10044 * src/graphics.cc (color_property::color_property):
10045 New arg A for alpha channel. Set rgba instead of red, green, blue.
10046 (color_property::color_property (char)): New constructor.
10047 (color_propery::rgba): New data member.
10048 (color_property::red, color_property::green, color_property::blue):
10050 (color_property::validate): Use rgba.
10051 (color_property::c2rgba): New function.
10053 2007-04-23 Søren Hauberg <soren@hauberg.org>
10055 * data.cc (Fsize_equal): Allow more than two arguments.
10057 2007-04-20 John W. Eaton <jwe@octave.org>
10059 * DLD-FUNCTIONS/__gnuplot_raw__.l (deftypefn):
10060 (Vautomatic_replot): Delete static variable.
10061 (Fautomatic_replot): Delete function.
10063 * toplev.cc (Fcasesen): Delete obsolete function.
10065 * DLD-FUNCTIONS/__gnuplot_raw__.l (gnuplot::makeplot): Check
10066 whether caller is "splot", not "gsplot".
10068 2007-04-19 John W. Eaton <jwe@octave.org>
10070 * lex.l (is_keyword_token): Delete all_va_args_kw switch case.
10071 * octave.gperf: Remove all_va_args_kw from the list.
10073 2007-04-19 Daniel J. Sebald <daniel.sebald@ieee.org>
10075 * syscalls.cc: Fix popen2 test to stop trying after 100 times
10078 2007-04-16 Geordie McBain <geordie.mcbain@aeromech.usyd.edu.au>
10080 * ov-fcn-inline.cc (Fargnames): Doc fix.
10082 2007-04-13 Geordie McBain <geordie.mcbain@aeromech.usyd.edu.au>
10084 * DLD-FUNCTIONS/find.cc (Ffind): Doc fix.
10086 2007-04-11 John W. Eaton <jwe@octave.org>
10088 * Makefile.in (DOCSTRINGS): Don't echo commands.
10089 (doc-files): Use mv, not $(simple-move-if-change-rule).
10091 * data.cc (Fnot, Fuplus, Fuminus, Ftranspose, Fctranspose, Fplus,
10092 Fminus, Fmtimes, Fmrdivide, Fmpower, Fmldivide, Flt, Fle, Feq,
10093 Fge, Fgt, Fne, Ftimes, Frdivide, Fpower, Fldivide, Fand, For):
10096 2007-04-09 John W. Eaton <jwe@octave.org>
10098 * graphics.cc (line::line_properties::markeredgecolor,
10099 line::line_properties::markerfacecolor): New properties.
10101 2007-04-06 John W. Eaton <jwe@octave.org>
10103 * data.cc (F__vnorm__): New function.
10105 * pt-fcn-handle.cc (tree_anon_fcn_handle::param_list,
10106 tree_anon_fcn_handle::cmd_list, tree_anon_fcn_handle::ret_list,
10107 tree_anon_fcn_handle::sym_tab): Delete. Remove all uses.
10108 (tree_anon_fcn_handle::fcn): New data member.
10109 (tree_anon_fcn_handle::tree_anon_fcn_handle): Initialize it.
10110 (tree_anon_fcn_handle::rvalue, tree_anon_fcn_handle::dup):
10111 Extract parameter list, return list, function body, and symbol
10113 (tree_anon_fcn_handle::parameter_list, tree_anon_fcn_handle::body):
10114 Forward request to fcn.
10116 * ov-usr-fcn.h (octave_user_function::local_sym_tab): Rename from
10117 sym_tab. Change all uses.
10118 (octave_user_function::sym_tab): New function.
10120 * octave.cc (execute_command_line_file):
10122 2007-04-05 David Bateman <dbateman@free.fr>
10124 * DLD-FUNCTIONS/regexp.cc (Fregexprep): Correct iteration over
10125 cell arrays so that the source and pattern are iterated seperately
10126 in the same manner as matlab.
10128 2007-04-05 Laurent Mazet <laurent.mazet@motorola.com>
10130 * mex.cc (mxArray_octave_value::get_string): Copy nel elements,
10131 not buflen elements.
10133 2007-04-05 John W. Eaton <jwe@octave.org>
10135 * oct-stream.cc (DO_DOUBLE_CONV): New macro.
10136 (do_printf): Use it.
10138 2007-04-04 John W. Eaton <jwe@octave.org>
10140 * input.cc (octave_yes_or_no): Force interactive_input to use readline.
10142 * octave.cc (execute_eval_option_code): Catch bad::alloc here.
10144 2007-04-03 John W. Eaton <jwe@octave.org>
10146 * DLD-FUNCTIONS/urlwrite.cc (Furlwrite, Furlread):
10147 Use && for logical, not &.
10149 * DLD-FUNCTIONS/qr.cc (Fqr): Clarify nargin check.
10151 * error.cc (Frethrow): Add braces to avoid ambiguous if/else.
10152 * oct-stream.cc (octave_scan<>): Likewise.
10153 * DLD-FUNCTIONS/colamd.cc (Fetree): Likewise.
10154 * DLD-FUNCTIONS/sort.cc (mx_sort, mx_sort_indexed): Likewise.
10156 * ov-fcn-handle.cc (make_fcn_handle): Pass ultimate parent
10157 function name to lookup_function.
10159 2007-03-29 John W. Eaton <jwe@octave.org>
10161 * DLD-FUNCTIONS/filter.cc (filter): Fix typo in doc string.
10162 From Utkarsh Upadhyay <musically.ut@gmail.com>.
10164 2007-03-28 Rafael Laboissiere <rafael@debian.org>
10166 * DLD-FUNCTIONS/__glpk__.cc: Fix #ifdef logic around GLPK_PRE_4_14.
10168 2007-03-27 John W. Eaton <jwe@octave.org>
10170 * version.h (OCTAVE_VERSION): Now 2.9.10+
10172 2007-03-27 John W. Eaton <jwe@octave.org>
10174 * version.h (OCTAVE_VERSION): Now 2.9.10.
10175 (OCTAVE_API_VERSION): Now api-v23.
10176 (OCTAVE_RELEASE_DATE): Now 2007-03-27.
10178 * version.h (OCTAVE_COPYRIGHT): Update for 2007. Add "and others".
10179 (X_OCTAVE_WARRANTY_STATEMENT): Rename from OCTAVE_WARRANTY_STATEMENT.
10181 (OCTAVE_WARRANTY_STATEMENT): Define using X_OCTAVE_WARRANTY_STATEMENT.
10182 (OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY): Define using
10183 X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY.
10184 (X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY): Rename
10185 from OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY.
10186 Accept arg and pass to X_OCTAVE_WARRANTY_STATEMENT.
10187 (OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY): Pass empty
10188 arg to X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS.
10189 (OCTAVE_STARTUP_MESSAGE): Put info about news last.
10191 2007-03-27 John W. Eaton <jwe@octave.org>
10193 * Makefile.in (dist, conf-dist): Use ln, not $(LN_S).
10195 2007-03-26 Juhani Saastamoinen <juhani@cs.joensuu.fi>
10197 * file-io.cc (do_stream_open) [! HAVE_ZLIB]:
10198 Call fopen with mode, not tmode.
10200 2007-03-26 John W. Eaton <jwe@octave.org>
10202 * OPERATORS/op-str-str.cc (DEFCHARNDBINOP): New macro. Use it to
10203 define functions for eq and ne ops. Also define lt, le, ge, and
10206 2007-03-23 David Bateman <dbateman@free.fr>
10208 * DLD-FUNCTIONS/rand.cc: Make more statistical tests optional.
10210 2007-03-23 John W. Eaton <jwe@octave.org>
10212 * bitfcns.cc (Fbitshift): Error if third argument is not a scalar.
10214 2007-03-23 David Bateman <dbateman@free.fr>
10216 * DLD-FUNCTIONS/rand.cc: Make statistical tests optional and
10217 add tests for fixed sequences.
10219 2007-03-22 John W. Eaton <jwe@octave.org>
10221 * graphics.cc (base_graphics_object::mark_modified):
10222 New virtual function.
10223 (base_properties::__modified__): New data member.
10224 (base_properties::base_properties): Initialize it.
10225 (graphics_object::mark_modified, base_properties::mark_modified,
10226 root_figure::mark_modified, figure::mark_modified,
10227 axes::mark_modified, line::mark_modified, text::mark_modified,
10228 image::mark_modified, surface::mark_modified,
10229 root_figure::root_figure_properties::mark_modified,
10230 figure::figure_properties::mark_modified,
10231 axes::axes_properties::mark_modified,
10232 line::line_properties::mark_modified,
10233 text::text_properties::mark_modified,
10234 image::image_properties::mark_modified,
10235 surface::surface_properties::mark_modified): New functions.
10236 (figure::figure_properties::set, figure::figure_properties::get,
10237 axes::axes_properties::set, axes::axes_properties::get,
10238 line::line_properties::set, line::line_properties::get,
10239 text::text_properties::set, text::text_properties::get,
10240 image::image_properties::set, image::image_properties::get,
10241 surface::surface_properties::set, surface::surface_properties::get):
10242 Handle __modified__ property.
10244 * parse.y (Fautoload): Use warning_with_id.
10246 2007-03-21 John W. Eaton <jwe@octave.org>
10248 * DLD-FUNCTIONS/__qp__.cc (ABS): Delete. Use std::abs instead.
10249 (null): Set elements of retval with magnitudes less than eps to 0.
10251 * error.cc (Fwarning): Allow setting options with struct.
10252 If setting options, return previous state.
10254 * graphics.cc (axes::axes_properties::set_defaults): Reverse sense
10255 of mode test for setting outerposition property.
10256 (figure::figure_properties::set): If setting visible property,
10257 make this figure the current figure.
10258 (gh_manager::figure_handle_list, gh_manager::do_figure_handle_list):
10260 (F__go_figure_handles__): New function.
10262 * sysdep.cc (Fpause): Also call drawnow if nargin == 0.
10263 (Fkbhit, Fsleep, Fusleep): Also call drawnow here.
10265 2007-03-20 David Bateman <dbateman@free.fr>
10267 * DLD-FUNCTIONS/cellfun.cc (Fcellfun): Correct for shape of return
10268 matrix for the case of UniformOutput being true.
10270 2007-03-20 John W. Eaton <jwe@octave.org>
10272 * sysdep.cc (Fpause): Call drawnow.
10274 2007-03-15 John W. Eaton <jwe@octave.org>
10276 * variables.cc (F__lock_global__): Delete.
10278 2007-03-14 John W. Eaton <jwe@octave.org>
10280 * graphics.cc: New file.
10281 * Makefile.in (DIST_SRC): Add it to the list.
10283 2007-03-13 John W. Eaton <jwe@octave.org>
10285 * file-io.cc (do_stream_open): Use binary mode if 't' is not
10286 specified in mode, but don't add 'b' if it is already present.
10288 2007-03-09 David Bateman <dbateman@free.fr>
10290 * data.cc (do_cat): Also treat case of all empty matrices.
10292 2007-03-08 John W. Eaton <jwe@octave.org>
10294 * mex.cc (mxArray_octave_value::set_dimensions,
10295 mxArray_octave_value::set_m, mxArray_octave_value::set_n,
10296 mxArray_octave_value::set_class_name,
10297 mxArray_octave_value::set_ir, mxArray_octave_value::set_jc,
10298 mxArray_octave_value::remove_field,
10299 mxArray_octave_value::set_field_by_number):
10300 Don't panic; request mutation instead.
10301 (class mxArray_octave_value):
10303 * mxarray.h (mxArray::set_m, mxArray::set_n,
10304 mxArray::set_dimensions): Wrap method call call with
10305 DO_VOID_MUTABLE_METHOD.
10307 2007-03-08 David Bateman <dbateman@free.fr>
10309 * data.cc (do_cat): Ignore leading empty matrices.
10311 2007-03-07 Bob Weigel <rweigel@gmu.edu>
10313 * urlwrite.cc (urlget): Allow URL redirects.
10315 2007-03-05 David Bateman <dbateman@free.fr>
10317 * DLD-FUNCTIONS/md5sum.cc (Fmd5sum): Treat both files and strings.
10319 2007-03-05 John W. Eaton <jwe@octave.org>
10321 * DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Check GLPK_PRE_4_14, not
10324 2007-03-02 John W. Eaton <jwe@octave.org>
10326 * parse.y (Fautoload): Undo previous change.
10327 Warn if FILE is not an absolute file name.
10329 * utils.cc (make_absolute): Make copy of arg before
10331 2007-03-01 John W. Eaton <jwe@octave.org>
10333 * ov-base-mat.h (octave_base_matrix::octave_base_matrix (const MT&),
10334 (octave_base_matrix::octave_base_matrix (const MT&, const MatrixType&)):
10335 Use common definition with default argument value.
10336 * ov-base-scalar.h (octave_base_scalar<T>::typ): New data member.
10337 Initialize in constructors.
10338 (octave_base_scalar<T>::matrix_type): New funtions.
10340 2007-03-01 David Bateman <dbateman@free.fr>
10342 * DLD-FUNCTIONS/md5sum.cc: New file.
10343 * Makefile.in (DLD_XSRC): Add md5sum.cc
10345 2007-03-01 Olli Saarela <Olli.Saarela@kcl.fi>
10347 * input.cc (FPS1): Fix @seealso.
10349 2007-03-01 David Bateman <dbateman@free.fr>
10351 * DLD-FUNCTIONS/matrix_type.cc (Fmatrix_type): Special case scalar
10352 types and always return "Full" matrix type.
10354 2007-02-28 John W. Eaton <jwe@octave.org>
10356 * input.cc (interactive_input): Also call flush_octave_stdout
10357 after calling drawnow.
10359 2007-02-27 John W. Eaton <jwe@octave.org>
10361 * Makefile.in (uninstall): Also remove octave-$(version)$(EXEEXT),
10362 oct-gperf.h, and all .oct files. Remove PKG_ADD.
10363 From Thomas Treichl <Thomas.Treichl@gmx.net>.
10365 * load-path.h, (load_path::initialize, load_path::do_initialize):
10366 New arg, set_initial_path.
10367 * load-path.cc (load_path::do_initialize): Don't add system
10368 directories to apth if set_initial_path is false.
10369 * octave.cc (set_initial_path): New static variable.
10370 (NO_INITIAL_PATH_OPTION): New define.
10371 (usage_string): Include --no-initial-path in message.
10372 (long_opts): Include no-initial-path/NO_INITIAL_PATH_OPTION here.
10373 (octave_main): Handle NO_INITIAL_PATH_OPTION.
10374 Pass set_initial_path to load_path::initialize.
10376 * parse.y (Fautoload): Warn about duplicate entries. Only insert
10379 2007-02-27 David Bateman <dbateman@free.fr>
10381 * error.cc (Vlast_error_file, Vlast_erro_name, Vlast_error_row,
10382 Vlast_error_column): New static variables.
10383 (verror): Use them to store the location of last error.
10384 (rethrow_error, Frethrow, Flasterror): New functions.
10386 * DLD-FUNCTIONS/regexp.cc (octcellregexp): Wrapper to octregexp
10387 function for cases when string or pattern are cell arrays
10388 (Fregexp, Fregexpi): Use them.
10389 (octregexprep): New function with functionality of old Fregexprep.
10390 (Fregexprep): Treat cell arguments.
10392 2007-02-26 Michael Goffioul <michael.goffioul@swing.be>
10394 * Makefile.in: Use $(LN_S) instead of ln or ln -s.
10396 * DLD-FUNCTIONS/getrusage.cc: Undef min after including windows.h.
10398 2007-02-25 John W. Eaton <jwe@octave.org>
10400 * DLD-FUNCTIONS/interpn.cc: Include dNDArray.h, not dMatrix.cc.
10402 * error.h: Include cstdarg.
10403 From Juhani Saastamoinen <juhani@cs.joensuu.fi>.
10405 2007-02-23 John W. Eaton <jwe@octave.org>
10407 * variables.cc (lookup_function): Don't dereference NULL
10408 curr_parent_fucntion pointer.
10409 * ov-fcn-handle.cc (make_fcn_handle): Call lookup_function with
10410 parent set to empty string if call_stack is empty.
10412 * DLD-FUNCTIONS/dispatch.cc (Fbuiltin): Also adjust argument list
10413 in calls to functions that are not overloaded. Call
10414 lookup_by_name to find function instead of searching fbi_symtab
10417 * help.cc (do_which): Return empty string if file not found.
10419 2007-02-22 John W. Eaton <jwe@octave.org>
10421 * mex.cc (mxArray_cell::mxArray_cell (const mxArray_cell&),
10422 mxArray_struct::mxArray_struct (const mxArray_struct&)):
10423 Avoid calling clone on 0 elements.
10425 * variables.cc (symbol_out_of_date): If checking nested function,
10426 look for file using parent function name. Delete unused
10429 * src/oct-stream.cc (octave_stream::do_gets): If no limit or not
10430 at limit, read ahead one character at end of line for compatibility.
10431 (octave_stream::gets, octave_stream::getl): Set max_len to -1 if
10432 tc_max_len is not defined.
10433 * file-io.cc (Ffgets, Ffgetl): If no limit specified, pass
10434 undefined octave_value object as max_len in call to
10435 octave_stream::gets.
10437 2007-02-21 John W. Eaton <jwe@octave.org>
10439 * mex.cc (mexErrMsgIdAndTxt, mexWarnMsgIdAndTxt): Handle second
10440 arg as format and accept variable number of arguments.
10441 * mexproto.h: Fix decls.
10443 * error.h, error.cc (vmessage, vusage, vwarning, verror,
10444 vparse_error, vmessage_with_id, vusage_with_id, vwarning_with_id,
10445 verror_with_id, vparse_error_with_id): Provide va_list versions of
10446 variadic error, warning, and message functions.
10447 (message, usage, warning, error, parse_error, message_with_id,
10448 usage_with_id, warning_with_id, error_with_id,
10449 parse_error_with_id): Call va_list versions.
10451 * DLD-FUNCTIONS/urlwrite.cc (Furlwrite, Furlread): Return error
10452 code and message instead of throwing error if functionality is
10455 * oct-obj.h (octave_value_list::splice): Set default for
10456 replacement list argument.
10458 2007-02-20 Rafael Laboissiere <rafael@laboissiere.net>
10460 * DLD-FUNCTIONS/__glpk__.cc: Adapt code for changes in the GLPK
10461 API for version 4.15 or later.
10463 2007-02-20 John W. Eaton <jwe@octave.org>
10465 * mxarray.h (mxArray::get_scalar): New function.
10466 * mex.cc (mxArray_base::get_scalar): New pure virtual function.
10467 (mxArray_octave_value::get_scalar, mxArray_matlab::get_scalar,
10468 mxArray_number::get_scalar): New functions.
10469 (mxGetScalar): Call get_scalar here.
10471 * mex.cc (mxArray_octave_value::get_dimensions): Cache ndims here.
10472 (mxArray_octave_value::get_number_of_dimensions):
10473 Call get_dimensions here to cache both ndims and dims.
10475 2007-02-17 John W. Eaton <jwe@octave.org>
10477 * variables.cc (symbol_out_of_date): Don't exit early if looking
10478 at nested function.
10480 2007-02-16 John W. Eaton <jwe@octave.org>
10482 * dynamic-ld.cc (octave_dynamic_loader::do_load_oct): Clear
10483 function if original was loaded from relative path and the name
10484 can no longer be found in path. Mark files found from relative
10486 (clear): Only warn if there is more than one function to clear.
10488 * variables.cc (symbol_out_of_date): Don't ignore return value in
10489 call to octave_env::make_absolute.
10490 (symbol_out_of_date): Clear symbol if original was loaded from
10491 relative path and name can no longer be found in path.
10493 * dynamic-ld.cc (octave_dynamic_loader::do_load_oct):
10494 Also check whether new file is same as the old file.
10496 * utils.cc (same_file): Move here from variables.cc.
10497 * utils.h: (same_file): Provide decl.
10499 * parse.y (frob_function): Stash parent function name if parsing
10502 * ov-fcn-handle.cc (make_fcn_handle): Pass current function name
10503 as parent in call to lookup_function.
10505 * ov-fcn.h (octave_function::parent_fcn_name): New virtual function.
10507 * ov-usr-fcn.h (octave_user_function::parent_name): New data member.
10508 (octave_user_function::stash_parent_function_name,
10509 octave_user_function::parent_function_name): New methods.
10510 * ov-usr-fcn.cc (octave_user_function::octave_user_function):
10511 Initialize parent_name.
10513 * variables.h, variables.cc (lookup_function): New arg, parent.
10514 If not empty, try this first for lookup.
10516 * dynamic-ld.cc (octave_dynamic_loader::do_load_mex): If doing
10517 path lookup, check relative status. Pass relative to oct_file_in_path.
10518 (octave_dynamic_loader::do_load_mex): Likewise, for mex_file_in_path
10520 * defun-int.h, defun.cc (install_mex_function): New arg, relative.
10521 (install_dld_function): Likewise.
10522 (octave_dld_fcn_installer): Likewise.
10523 (DEFINE_FUNX_INSTALLER_FUN3): Pass relative to install_dld_function.
10525 * dynamic-ld.h (octave_dynamic_loader::load_oct,
10526 octave_dynamic_loader::load_mex,
10527 octave_dynamic_loader::do_load_oct
10528 octave_dynamic_loader::do_load_mex): New arg, relative.
10530 * dirfns.h (Vcurrent_directory): Delete unused variable.
10532 * variables.cc (symbol_out_of_date): Also compare function time
10533 stamp to Vlast_chdir_time if function is from relative lookup.
10535 * dirfns.cc (Vlast_chdir_time): New variable.
10536 (octave_change_to_directory): Update it if chdir succeeds.
10537 * dirfns.h (Vlast_chdir_time): Provide decl.
10539 * ov-fcn.h (octave_function::relative): New data member.
10540 (octave_function::mark_relative, octave_function::is_relative):
10543 * parse.y (fcn_file_from_relative_lookup): New static variable.
10544 (load_fcn_from_file): Note whether function file was found from
10545 relative path element.
10546 (frob_function): Maybe mark function as relative.
10548 * parse.y (lookup_autoload): Don't call octave_env::make_absolute
10550 * variables.cc (symbol_out_of_date): Make name absolute after call
10551 to lookup_autoload.
10553 * input.cc (interactive_input): New arg, DEBUG. Don't call
10554 drawnow if debugging.
10555 (get_user_input): Pass DEBUG to interactive_input.
10557 2007-02-16 Michael Goffioul <michael.goffioul@swing.be>
10559 * syscalls.cc (Fpopen2): New function.
10560 (pipe): Modify to return input and output file descriptor
10561 seperately rather than in a list.
10563 2007-02-16 Muthiah Annamalai <muthuspost@gmail.com>
10565 * debug.cc (Fdbtype): Improve compatibility.
10567 2007-02-16 John W. Eaton <jwe@octave.org>
10569 * toplev.cc (wait_for_input): New function.
10570 (run_command_and_return_output): Use it instead of napping.
10572 * oct-procbuf.h (octave_procbuf::pid): Now const.
10573 * procstream.h (procstreambase::pid): Now const.
10574 (procstreambase::file_number): New function.
10576 2007-02-15 John W. Eaton <jwe@octave.org>
10578 * mxarray.h (mxChar): Use char instead of unsigned short.
10580 * toplev.cc (Foctave_config_info): Remove
10581 OCTAVE_CONF_MKOCTFILE_INCFLAGS and OCTAVE_CONF_MKOCTFILE_LFLAGS
10583 * oct-conf.h.in (OCTAVE_CONF_MKOCTFILE_INCFLAGS,
10584 OCTAVE_CONF_MKOCTFILE_LFLAGS): Don't define.
10585 (OCTAVE_CONF_INCLUDEDIR, OCTAVE_CONF_OCTINCLUDEDIR,
10586 OCTAVE_CONF_OCTLIBDIR, OCTAVE_CONF_PREFIX): New definitions.
10588 2007-02-14 Alexander Barth <abarth@marine.usf.edu>
10590 * DLD-FUNCTIONS/interpn.cc: New file.
10591 * Makefile.in (DLD_XSRC): Add it to the list.
10593 2007-02-14 John W. Eaton <jwe@octave.org>
10595 * input.cc (interactive_input): Check error_state after call to feval.
10597 2007-02-10 John W. Eaton <jwe@octave.org>
10599 * oct-stream.cc (octave_stream::rewind): Call seek (0, SEEK_SET)
10600 instead of rep->rewind.
10601 (octave_base_stream::rewind): Delete Function.
10602 * oct-stream.h (octave_base_stream::rewind): Delete decl.
10604 2007-02-09 John W. Eaton <jwe@octave.org>
10606 * ls-mat5.cc (PAD): Adjust to change in write_mat5_tag.
10607 (TAGLENGTH): Delete unused macro.
10609 * ov-struct.cc (octave_struct::load_ascii,
10610 octave_struct::load_binary, octave_struct::load_hdf5):
10611 Delete obsolete attempt at backward compatibility.
10613 * ls-mat5.cc (read_mat5_binary_element): Don't attempt to read
10614 fieldnames if there are no fields.
10615 (write_mat5_tag): Don't use small data element format if bytes == 0.
10617 * ls-mat5.cc (read_mat5_binary_element): Always create a structure
10618 that is at least 1x1.
10619 * ov-struct.cc (octave_struct::load_ascii,
10620 octave_struct::load_binary, octave_struct::load_hdf5): Likewise.
10622 2007-02-08 Michael Goffioul <michael.goffioul@swing.be>
10624 * DLD-FUNCTIONS/__glpk__.cc: Include glplib.h if glpk.h does not.
10625 Provide definitions for lib_set_fault_hook and lib_set_print_hook
10626 if they are not defined.
10628 2007-02-07 John W. Eaton <jwe@octave.org>
10630 * defaults.cc (subst_octave_home):
10631 Only substitute at beginning of string.
10633 * ls-hdf5.cc (save_hdf5_empty): Use OCTAVE_LOCAL_BUFFER.
10634 * ov-bool-mat.cc (octave_bool_matrix::save_hdf5,
10635 octave_bool_matrix::load_hdf5): Likewise.
10636 * ov-bool-sparse.cc (octave_sparse_bool_matrix::save_hdf5,
10637 octave_sparse_bool_matrix::load_hdf5): Likewise.
10639 2007-02-07 Michael Goffioul <michael.goffioul@swing.be>
10641 * ov-cell.cc (octave_cell::save_hdf5): Correct test for H5Dwrite
10644 2007-02-07 John W. Eaton <jwe@octave.org>
10646 * zfstream.cc (gzfilebuf::open_mode): Always append "b" to c_mode.
10648 * toplev.cc (Foctave_config_info): Use struct for conf_info.
10649 Call subst_octave_home on selected values when initializing map.
10650 * defaults.cc (subst_octave_home): Now extern.
10651 * defaults.h.in: Provide decl.
10653 2007-02-05 John W. Eaton <jwe@octave.org>
10655 * mex.cc (mxArray_number::as_octave_value): Fake mxSINGLE_CLASS
10656 by returning double-precision values.
10657 (mxArray_sparse::as_octave_value): Clarify error message.
10659 * ov-complex.h (octave_complex): Use std instead of OCTAVE_STD
10660 since the latter was unconditionally defined to be std anyway.
10662 2007-02-05 Michael Goffioul <michael.goffioul@swing.be>
10664 * ov-complex.h: Tag octave_complex class with OCTINTERP_API.
10666 2007-01-30 John W. Eaton <jwe@octave.org>
10668 * Merge of changes from graphics-branch:
10670 2007-01-26 John W. Eaton <jwe@octave.org>
10672 * DLD-FUNCTIONS/__contourc__.cc: New function.
10673 * Makefile.in (DLD_XSRC): Add it to the list.
10675 2007-01-25 John W. Eaton <jwe@octave.org>
10677 * input.cc (Vdrawnow_requested): New static variable.
10678 (F__request_drawnow__): New function.
10679 (interactive_input): New function. Update Vlast_prompt_time here.
10680 (octave_gets, get_user_input, octave_yes_or_no):
10681 Call interactive_input instead of gnu_readline.
10683 * symtab.h (symbol_record::eternal): New data member.
10684 (symbol_record::symbol_record): Initialize it.
10685 (symbol_record::make_eternal, symbol_record::is_eternal):
10686 Don't forward to symbol_def functions.
10687 (symbol_record::symbol_def::make_eternal,
10688 symbol_record::symbol_def::is_eternal): Delete.
10689 (symbol_record::symbol_def::eternal): Delete data member.
10690 (symbol_record::symbol_def::symbol_def): Delete initialization.
10692 * pt-id.cc (tree_identifier::link_to_global): Include variable
10693 name in warning message.
10695 * variables.cc (F__lock_global__): New function.
10697 2007-01-11 John W. Eaton <jwe@octave.org>
10699 * ls-oct-ascii.cc (save_ascii_data_for_plotting, save_three_d):
10700 Set precision to 6 instead of 4.
10702 2007-01-29 David Bateman <dbateman@free.fr>
10704 * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): Don't panic if
10705 nargout is greater than 3.
10707 2007-01-24 John W. Eaton <jwe@octave.org>
10709 * pt-assgn.cc (former_built_in_variables): New static data.
10710 (maybe_warn_former_built_in_variable): New static function.
10711 (tree_simple_assignment::tree_simple_assignment,
10712 tree_multi_assignment::tree_multi_assignment):
10713 Move definition here from pt-assign.h
10714 Maybe warn about assignment to obsolete built-in variables.
10716 * version.h (OCTAVE_STARTUP_MESSAGE): Mention "news" function.
10718 * pt-stmt.cc (tree_statement::eval): Use dynamic_cast, not
10721 * help.cc (help_from_file): Show .oct or .mex file name if one
10722 exists in the same directory as the .m file.
10724 2007-01-23 Luis F. Ortiz <lortiz@interactivesupercomputing.com>
10726 * strfns.cc (Fstrncmp): New function.
10728 2007-01-17 John W. Eaton <jwe@octave.org>
10730 * help.cc (help_from_file, help_from_symbol_table, help_from_list):
10731 Rewrite using raw_ versions.
10733 2007-01-17 David Bateman <dbateman@free.fr>
10735 * help.cc (raw_help, raw_help_from_file,
10736 raw_help_from_symbol_table, raw_help_from_list): New functions.
10737 * help.h (raw_help): Provide decl.
10739 2007-01-16 John W. Eaton <jwe@octave.org>
10741 * DLD-FUNCTIONS/__pchip_deriv__.cc: Fix dpchim decl for --enable-64.
10742 (F__pchip_deriv__): Fix call to dpchim for --enable-64.
10744 * DLD-FUNCTIONS/fftw.cc: Delete decl for fftw_planner.
10746 2007-01-11 Michael Goffioul <michael.goffioul@swing.be>
10748 * load-path.h (class load_path): Tag with OCTINTERP_API.
10750 * ls-oct-binary.cc (read_binary_data): Use unsigned char, not
10751 char, for reading flags and data types.
10753 2007-01-10 Luis F. Ortiz <lortiz@interactivesupercomputing.com>
10755 * parse.y (load_fcn_from_file): Delete unused variable NAMES.
10756 If NM is absolute, strip directory and extension parts.
10758 2007-01-10 Michael Goffioul <michael.goffioul@swing.be>
10760 * DLD-FUNCTIONS/getrusage.cc: Use #ifdef __WIN32__, not __MINGW32__.
10762 2007-01-10 John W. Eaton <jwe@octave.org>
10764 * parse.y (load_fcn_from_file): Only compare last two characters
10765 when looking for ".m".
10767 2007-01-06 John W. Eaton <jwe@octave.org>
10769 * version.h (OCTAVE_CONFIG_STATEMENT): New macro
10770 (OCTAVE_NAME_AND_VERSION): Remove config info.
10771 (OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY):
10772 Use OCTAVE_CONFIG_STATEMENT here.
10774 2007-01-05 David Bateman <dbateman@free.fr>
10776 * Makefile.in (DLD_XSRC): Add fftw.cc and remove fftw_wisdom.cc
10777 * DLD-FUNCTIONS/fftw.cc: New file.
10778 * DLD-FUNCTIONS/fftw_wisdom.cc: Delete.
10779 * defaults.cc (Vfftw_wisdom_program): Delete variable.
10780 (set_default_fftw_wisdom_prog): Delete function that sets it.
10781 (install_defaults): Delete set_default_fftw_prog from defaults.
10782 (Ffftw_wisdom_program): Delete.
10784 2007-01-04 David Bateman <dbateman@free.fr>
10786 * ov-fcn-handle.cc (octave_fcn_handle::load_ascii,
10787 octave_fcn_handle::load_binary):
10788 Throw error if handle can't be created.
10790 2007-01-04 Luis F. Ortiz <lortiz@interactivesupercomputing.com>
10792 * mex.cc (mxArray_number::mxArray_number (int, const char **)):
10793 Correctly index LHS in assignment.
10795 2007-01-03 John W. Eaton <jwe@octave.org>
10797 * data.cc (Fisinteger): New function.
10798 * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::is_integer_type,
10799 OCTAVE_VALUE_INT_SCALAR_T::is_integer_type): New function.
10800 * ov.h (octave_value::is_integer_type): New function.
10801 * ov-base.h (octave_base_value::is_integer_type): New virtual function.
10803 2007-01-03 Michael Goffioul <michael.goffioul@swing.be>
10805 * toplev.cc (Fsystem): Handle async calls on Windows systems.
10807 2007-01-03 David Bateman <dbateman@free.fr>
10809 * (OPERATORS/op-cm-scm.cc, OPERATORS/op-cm-sm.cc,
10810 OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc,
10811 OPERATORS/op-m-scm.cc, OPERATORS/op-m-sm.cc,
10812 OPERATORS/op-scm-cm.cc, OPERATORS/op-scm-cs.cc,
10813 OPERATORS/op-scm-m.cc, OPERATORS/op-scm-s.cc,
10814 OPERATORS/op-scm-scm.cc, OPERATORS/op-scm-sm.cc,
10815 OPERATORS/op-sm-cm.cc, OPERATORS/op-sm-cs.cc,
10816 OPERATORS/op-sm-m.cc, OPERATORS/op-sm-s.cc,
10817 OPERATORS/op-sm-scm.cc, OPERATORS/op-sm-sm.cc,
10818 OPERATORS/op-s-scm.cc, OPERATORS/op-s-sm.cc):
10819 Modify div and ldiv functions so that scalars stored as sparse
10820 matrices are special cased.
10822 * ov-re-sparse.cc (double_value, complex_value): Scalar can be
10823 stored as a sparse matrix and so don't warn on implicit conversion
10825 * ov-cx-sparse.cc (double_value, complex_value): ditto.
10826 * ov-bool-sparse.cc (double_value, complex_value): ditto.
10828 2007-01-03 John W. Eaton <jwe@octave.org>
10830 * dynamic-ld.cc (octave_dynamic_loader::do_load_mex): Also check
10833 2006-12-30 John W. Eaton <jwe@octave.org>
10835 * ov-fcn-inline.cc: For compatibility, class id is
10836 "function_handle", not "inline function".
10838 2006-12-27 John W. Eaton <jwe@octave.org>
10840 * Makefile.in (%.df : %.cc): Insert a "do not edit" notice in the
10843 * mex.cc (mxArray_matlab::get_class_name,
10844 mxArray_octave_value::get_class_id): Use "function_handle", not
10847 2006-12-14 John W. Eaton <jwe@octave.org>
10849 * pt-decl.cc (tree_decl_elt::eval): New function.
10850 * pt-decl.h (tree_decl_elt::eval): Provide decl.
10851 (tree_decl_elt::is_defined, tree_decl_elt::lvalue_ok,
10852 tree_decl_elt::mark_as_formal_parameter, tree_decl_elt::rvalue,
10853 tree_decl_elt::lvalue): New functions.
10855 * pt-misc.h (class tree_parameter_list): Derive from
10856 octave_base_list<tree_decl_elt *> instead of
10857 octave_base_list<tree_identifier *>.
10858 (tree_parameter_list::tree_parameter_list (tree_identifier *)): Delete.
10859 (tree_parameter_list::tree_parameter_list (tree_decl_elt *)):
10861 * pt-misc.cc (tree_parameter_list::mark_as_formal_parameters,
10862 tree_parameter_list::initialize_undefined_elements,
10863 tree_parameter_list::undefine, tree_parameter_list::dup,
10864 tree_parameter_list::convert_to_const_vector,
10865 tree_parameter_list::is_defined): Handle argument list elements
10866 as tree_decl_list objects instead of tree_identifier objects.
10867 (tree_parameter_list::define_from_arg_vector): Likewise.
10868 Always process entire list, setting default values if possible.
10869 Accept ":" to mean "use default argument".
10871 * parse.y (param_list2): Use decl2 to recognize
10872 "identifier '=' expression" in addition to "identifier".
10874 * parse.y (return_list1, make_anon_fcn_handle, finish_function):
10875 Adapt to new definition of tree_parameter_list.
10876 * pt-bp.cc (tree_breakpoint::visit_parameter_list): Likewise.
10877 * pt-check.cc (tree_checker::visit_parameter_list): Likewise.
10878 * pt-pr-code.cc (tree_print_code::visit_parameter_list): Likewise.
10880 2006-12-08 John W. Eaton <jwe@octave.org>
10882 * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::array_value,
10883 OCTAVE_VALUE_INT_MATRIX_T::complex_array_value,
10884 OCTAVE_VALUE_INT_MATRIX_T::bool_array_value,
10885 OCTAVE_VALUE_INT_MATRIX_T::char_array_value):
10886 Use fortran_vec to avoid expensive indexing operator.
10888 2006-12-08 David Bateman <dbateman@free.fr>
10890 * ov-intx.h (OCTAVE_VALUE_INT_SCALAR_T::matrix_value,
10891 OCTAVE_VALUE_INT_SCALAR_T::complex_matrix_value,
10892 OCTAVE_VALUE_INT_MATRIX_T::matrix_value,
10893 OCTAVE_VALUE_INT_MATRIX_T::comlex_matrix_value): New functions.
10894 (OCTAVE_VALUE_INT_MATRIX_T::array_value,
10895 OCTAVE_VALUE_INT_MATRIX_T::comlex_array_value):
10896 Use octave_idx_type instead of int for indexing.
10898 2006-12-04 David Bateman <dbateman@free.fr>
10900 * xpow.cc (xpow (const Matrix&, double)): Add matrix type probing
10902 (xpow (const ComplexMatrix&, double)): ditto.
10903 * DLD-FUNCTIONS/inv.cc (Finv): Add matrix type probing.
10905 2006-12-06 John W. Eaton <jwe@octave.org>
10907 * sysdep.cc: Include "Cell.h" here.
10908 * input.h: Include "oct-obj.h", not "ov-list.h".
10910 2006-12-06 Michael Goffioul <michael.goffioul@swing.be>
10912 * mappers.cc (install_mapper_functions): Undefine isascii before
10913 the DEFUN_MAPPER for it.
10915 * input.cc (get_user_input): Prevent out of bounds array access
10916 when checking for EOL.
10918 2006-12-05 John W. Eaton <jwe@octave.org>
10920 * ls-oct-ascii.cc (extract_keyword): If no match and looking for
10921 more, skip to end of line before trying another match.
10923 * pt-mat.cc (tm_row_const::empty): New function.
10924 (tm_const::init): Don't append anything if tmp tm_row_const object
10926 (tree_matrix::rvalue): Default return value is Matrix().
10927 Don't do anything if tmp tm_const object is empty.
10929 * dirfns.cc (Fmkdir): Fix thinko in previous change.
10931 2006-12-05 Paul Kienzle <pkienzle@users.sf.net>
10933 * DLD-FUNCTIONS/rand.cc: Test for Poisson generator with lambda > 1e8.
10935 2006-12-04 David Bateman <dbateman@free.fr>
10937 * data.cc (Fdata): If ndims is greater than nargout and
10938 nargout is greater than 1, then collect size of trailing
10939 dimensions into retval(end).
10941 * load-path.cc (load_path::do_find_fcn): Return empty string if
10944 * ov-base-mat.cc (void octave_base_matrix<MT>::assign (const
10945 octave_value_list&, const MT&)): Invalidate matrix type on
10948 2006-11-30 John W. Eaton <jwe@octave.org>
10950 * DLD-FUNCTIONS/fftw_wisdom.cc (Ffftw_wisdom):
10951 Accept "r" or "w" for second argument.
10953 2006-11-29 John W. Eaton <jwe@octave.org>
10955 * DLD-FUNCTIONS/fftw_wisdom.cc (Ffftw_wisdom): Look in load-path
10956 if reading wisdom file, but not if writing.
10958 2006-11-28 John W. Eaton <jwe@octave.org>
10960 * mex.cc (mxArray_struct::get_field_by_number):
10961 Return 0 if key_num is out of range.
10962 (mxArray_struct::set_field_by_number):
10963 Do nothing if key_num is out of range.
10964 (mxArray_cell::get_cell, mxArray_cell::set_cell):
10965 Avoid out-of-bounds indexing
10967 2006-11-28 Luis F. Ortiz <lortiz@interactivesupercomputing.com>
10969 * mex.cc (mxArray_matlab::get_n, mxArray_octave_value::get_n):
10970 Return product of last N-1 dims.
10972 2006-11-28 John W. Eaton <jwe@octave.org>
10974 * lex.l (eat_whitespace): Also handle CRLF as EOL.
10976 * dirfns.cc (Fmkdir): Handle "mkdir (parent, dir)".
10978 2006-11-21 John W. Eaton <jwe@octave.org>
10980 * load-path.cc (load_path::do_find_file,
10981 load_path::do_find_first_of, load_path::do_find_all_first_of):
10982 Call rooted_pathname instead of absolute_pathname.
10983 * utils.cc (fcn_file_in_path, oct_file_in_path, mex_file_in_path):
10986 2006-11-16 Michael Goffioul <michael.goffioul@swing.be>
10988 * oct-hist.cc (default_history_file): Instead of appending
10989 "/.octave_hist", append directory separator (but only if
10990 necessary), then ".octave_hist".
10992 2006-11-16 John W. Eaton <jwe@octave.org>
10994 * data.cc (Fresize): Fix doc string.
10996 2006-11-15 John W. Eaton <jwe@octave.org>
10998 * DLD-FUNCTIONS/__gnuplot_raw__.l (write_data, write_inline_data):
11000 (save_in_tmp_file): Use write_data.
11001 (gnuplot::send_inline_data, gnuplot_do_send_inline_data):
11003 (F__gnuplot_send_inline_data__, F__gnuplot_save_data__):
11006 * ls-oct-ascii.cc (save_ascii_data_for_plotting):
11007 Call save_ascii_data with precision = 4.
11008 (save_three_d): Temporarily set precision to 4 for output stream.
11010 2006-11-15 Michael Goffioul <michael.goffioul@swing.be>
11012 * Cell.h (Cell): Tag class with OCTINTERP_API.
11014 2006-11-13 John W. Eaton <jwe@octave.org>
11016 * octave.cc (maximum_braindamage): Disable
11017 Octave:fopen-file-in-path and Octave:load-file-in-path warnings.
11019 * load-save.cc (find_file_to_load): New function.
11020 (Fload): Call find_file_to_load to search load path for file.
11022 * file-io.cc (Ffopen): Search load path for file.
11024 * load-path.cc (path::do_find_first_of, path::do_find_file):
11025 Break out of all loops once file is found, not just innermost one.
11027 * data.cc (Fsize_equal): New function.
11029 2006-11-13 Michael Goffioul <michael.goffioul@swing.be>
11031 * ov.cc (check_subsref_elements, Fsubsref, Fsubsasgn):
11034 * ov-re-mat.h, ov-scalar.h, pr-output.h:
11035 Sprinkle with OCTINTERP_API as needed.
11037 2006-11-11 John W. Eaton <jwe@octave.org>
11039 * Makefile.in (parse.cc): Avoid creating empty files.
11040 (%.df : %cc, builtins.cc, mkbuiltins, PKG_ADD, DOCSTRINGS,
11041 doc-files, gendoc.cc, ops.cc, $(OPT_HANDLERS), oct-errno.cc,
11042 oct-gperf.h): Use $(simple-move-if-change-rule) here.
11043 (lex.cc, __gnuplot_raw__.cc):
11044 Use $(destdir-move-if-change-rule) here.
11045 (ifndef omit_deps): Don't include stamp-prereq here.
11046 ($(DEF_FILES), $(MAKEDEPS)): Also depend on stamp-prereq.
11048 2006-11-10 John W. Eaton <jwe@octave.org>
11050 * ov-str-mat.cc (octave_char_matrix_str::load_ascii,
11051 octave_char_matrix_str::load_binary):
11052 Use chMatrix as buffer instead of C string.
11054 2006-11-09 John W. Eaton <jwe@octave.org>
11056 * ov-usr-fcn.h (octave_user_function::inline_function):
11058 (octave_user_function::mark_as_inline_function): Set it.
11059 (octave_user_function::is_inline_function): Check it.
11060 * ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
11061 Also skip setting curr_parent_fucntion if evaluating an inline
11063 (octave_user_function::octave_user_function):
11064 Initialize inline_function.
11065 * pt-fcn-handle.cc (tree_anon_fcn_handle::rvalue):
11066 Mark user function as inline here.
11068 2006-11-09 Michael Goffioul <michael.goffioul@swing.be>
11070 * load-path.cc (load_path::move): Don't use reference to file_info
11071 object that will be erased.
11073 2006-11-07 John W. Eaton <jwe@octave.org>
11075 * utils.cc (file_in_path): Don't unconditionally return "".
11077 * pager.cc (default_pager): Don't append options here.
11078 (pager_command): New function.
11080 (VPAGER_FLAGS): New variable.
11081 (FPAGER_FLAGS): New function.
11083 2006-11-06 John W. Eaton <jwe@octave.org>
11085 * oct-hist.cc (default_history_file): If env_file is not empty,
11086 just accept it rather than checking to see if it exists.
11088 2006-11-03 Bill Denney <denney@seas.upenn.edu>
11090 * help.cc (keywords): Document try and unwind_protect.
11092 2006-11-03 John W. Eaton <jwe@octave.org>
11094 * Makefile.in (DLL_CXXDEFS): Rename from XTRA_CXXDEFS.
11095 (DLL_CDEFS): Rename from XTRA_CDEFS.
11096 Substitute OCTINTERP_DLL_DEFS, not XTRA_OCTINTERP_DEFS.
11098 2006-11-02 Michael Goffioul <michael.goffioul@swing.be>
11100 * sysdep.cc (MSVC_init): Also cal w32_sigint_init and
11101 w32_set_quiet_shutdown.
11103 2006-11-01 John W. Eaton <jwe@octave.org>
11105 * ov.h (octave_value::idx_type_value): New function.
11106 * data.cc (fill_matrix, Flinspace, Freshape): Use idx_type_value
11107 instead of int_value to extract size args.
11109 2006-10-31 John W. Eaton <jwe@octave.org>
11111 * ov-range.h (octave_range::empty_clone): Return octave_matrix
11112 object instead of octave_range.
11114 2006-10-29 Juhani Saastamoinen <juhani@cs.joensuu.fi>
11116 * ls-mat5.cc (read_mat5_tag): Declare bytes as int32_t, not just int.
11118 2006-10-28 John W. Eaton <jwe@octave.org>
11120 * toplev.cc (Fatexit): Push function names on the stack even if we
11121 don't have atexit or on_exit.
11123 2006-10-28 Michael Goffioul <michael.goffioul@swing.be>
11125 * mappers.cc (install_mapper_functions): Undefine toascii before
11126 the DEFUN_MAPPER for it.
11128 2006-10-27 John W. Eaton <jwe@octave.org>
11130 * mexproto.h: Include oct-dlldefs.h.
11132 * pr-output.cc (SPECIALIZE_UABS): New macro.
11133 Use it to generate specializations of abs for unsigned int types.
11134 Instantiate abs for signed int types.
11136 * load-path.cc (load_path::do_initialize):
11137 Use dir_path::path_sep_str instead of ":".
11138 Don't append ":::" to xpath when calling do_set.
11140 * dirfns.cc (Fls, cleanup_iprocstream): Delete.
11142 * sysdep.cc (Ftilde_expand): If arg is cellstr, return cellstr.
11144 * ov.h (octave_value::is_cellstr): New function.
11145 * ov-base.h (octave_base_value::is_cellstr): New function.
11146 * ov-cell.h (octave_cell::is_cellstr): New function.
11147 * ov-cell.cc (Fiscellstr): Implement with is_cellstr.
11148 * Cell.cc (Cell::Cell (const dim_vector&, const string_vector&, bool)):
11150 (Cell::is_cellstr): New function.
11151 * Cell.h: Provide decls.
11153 * defaults.cc (subst_octave_home): If dir_sep_char is not '/',
11154 replace before returning.
11155 From Michael Goffioul <michael.goffioul@swing.be>.
11157 2006-10-26 John W. Eaton <jwe@octave.org>
11159 * cutils.c (octave_strcasecmp, octave-strncasecmp):
11160 Move to liboctave/lo-cutils.c.
11161 * utils.h: Delete decls.
11162 * strcasecmp.c: Move to liboctave/strcasecmp.c.
11163 * strncase.c: Move to liboctave/strncase.c.
11164 * Makefile.in (DIST_SRC): Delete them from the list.
11166 * bitfcns.cc (bitshift): If A < 0, return -bitshift (-A, N, MASK).
11168 2006-10-26 Michael Goffioul <michael.goffioul@swing.be>
11170 * help.cc (display_help_text): Quote sed patterns with ".
11172 * file-io.cc: Include file-io.h.
11174 * TEMPLATE-INST/Array-os.cc, TEMPLATE-INST/Array-sym.cc,
11175 TEMPLATE-INST/Array-tc.cc, defun-int.h, error.h, file-io.h,
11176 gripes.h, ls-oct-ascii.h, mexproto.h, oct-map.h, oct-obj.h,
11177 oct-stream.cc, oct-stream.h, octave.h, ov-base.h,
11178 ov-bool-sparse.cc, ov-bool-sparse.h, ov-cx-sparse.cc,
11179 ov-cx-sparse.h, ov-fcn.h, ov-re-sparse.cc, ov-re-sparse.h,
11180 ov-str-mat.h, ov-typeinfo.cc, ov-typeinfo.h, ov.h, pager.h,
11181 parse.h, pr-output.cc, pr-output.h, procstream.h, sighandlers.h,
11182 symtab.h, unwind-prot.h, utils.h, variables.h:
11183 Sprinkle with OCTINTERP_API as needed.
11185 2006-10-26 John W. Eaton <jwe@octave.org>
11187 * ov-bool.h (octave_bool::sparse_matrix_value,
11188 octave_bool::sparse_complex_matrix_value
11189 octave_bool::sparse_bool_matrix_value): New functions.
11191 2006-10-25 John W. Eaton <jwe@octave.org>
11193 * sighandlers.cc: Check defined (RETSIGTYPE_IS_VOID) instead of
11194 RETSIGTYPE == void.
11196 * oct-procbuf.cc (BUFSIZ): Define if not already defined.
11197 (octave_procbuf::open): Pass BUFSIZ as size argument to setvbuf.
11199 2006-10-25 Michael Goffioul <michael.goffioul@swing.be>
11201 * Makefile.in (XTRA_CDEFS, XTRA_CXXDEFS): Substitute here.
11203 * oct-procbuf.cc [_MSC_VER]: Define W32POPEN and W32PCLOSE the
11204 same as for __MINGW32__.
11205 (octave_procbuf::open, octave_procbuf::close) [_MSC_VER]:
11206 Use the same code as for __MINGW32__ and __CYGWIN__.
11208 * oct-prcstrm.cc [_MSC_VER]: Define popen and pclose.
11210 2006-10-25 John W. Eaton <jwe@octave.org>
11212 * sysdep.cc (w32_set_octave_home): Correctly initialize bin_dir.
11213 Fill it with '\0' instead of ' '.
11215 2006-10-24 Michael Goffioul <michael.goffioul@swing.be>
11217 * Makefile.in: Filter out $(XTRA_CXXDEFS) from $(ALL_CXXFLAGS) for
11220 2006-10-24 John W. Eaton <jwe@octave.org>
11222 * sysdep.cc (MSC_init): New function.
11223 (sysdep_init): Call it.
11224 (w32_set_octave_home): New function, based on code from Michael
11225 Goffioul <michael.goffioul@swing.be>.
11226 (MINGW_init): Call w32_set_octave_home here too.
11228 2006-10-23 John W. Eaton <jwe@octave.org>
11230 * symtab.cc (symbol_table::clear_mex_functions): New function.
11231 * symtab.h: Provide decl.
11232 * vriables.cc (clear_mex_functions): New function.
11233 * variables.h Provide decl.
11234 * toplev.cc: Call clear_mex_functions instead of delete_symbol_tables.
11236 * variables.cc (delete_symbol_tables): Delete.
11237 * variables.h: Delete decl.
11239 * mex.cc (mex::unmark_array): New function.
11240 (mex::persistent): Define with unmark_array.
11241 (maybe_unmark_array): New function.
11242 (mxArray_struct::set_field_by_number, mxArray_cell::set_cell):
11243 Call maybe_unmark_array on val to avoid freeing val twice on exit
11245 (mxFree): Call xfree, not free.
11247 2006-10-21 John W. Eaton <jwe@octave.org>
11250 (OCTAVE_VALUE_INT_MATRIX_T::OCTAVE_TYPE_PREDICATE_FUNCTION,
11251 (OCTAVE_VALUE_INT_SCALAR_T::OCTAVE_TYPE_PREDICATE_FUNCTION):
11252 Function is now const, so it properly overloads method in base
11255 * mex.cc (mxArray_octave_value::is_uint32):
11256 Call val.is_uint32_type, not val.is_int32_type.
11257 (mxArray_octave_value::is_uint64):
11258 Call val.is_uint64_type, not val.is_int64_type.
11259 (mxArray_octave_value::is_uint8):
11260 Call val.is_uint8_type, not val.is_int8_type.
11262 2006-10-20 Paul Kienzle <pkienzle@users.sf.net>
11264 * ov-mex-fcn.h (octave_mex_function::atexit): New function.
11265 (octave_mex_function::exit_fcn_ptr): New data member.
11266 * ov-mex-fcn.cc (octave_mex_function::exit_fcn_ptr): New data member.
11267 (octave_mex_function::octave_mex_function): Initialize it.
11268 (octave_mex_function::~octave_mex_function):
11269 If we have an exit function, call it.
11271 2006-10-20 John W. Eaton <jwe@octave.org>
11273 * variables.cc (delete_symbol_tables): New function.
11274 * variables.h: Provide decl.
11275 * toplev.cc (do_octave_atexit): Call it.
11277 * mex.cc (mex::mex): New arg, a pointer to the current mex function.
11278 (mex::curr_mex_fcn): New data member.
11279 (mex::current_mex_function): New function.
11280 (mexAtExit): Set exit function pointer in current mex file object.
11282 2006-10-20 Paul Kienzle <pkienzle@users.sf.net>
11284 * mex.cc (enum callstyle): Delete enum definition.
11285 (Fortran_mex, C_mex): Delete functions.
11286 (call_mex): First arg is now bool.
11287 * ov-mex-fcn.cc (call_mex): Fix decl to match new definition.
11288 (Fortran_mex, C_mex): Delete decls.
11289 (octave_mex_function::do_multi_index_op): Simplify call to call_mex.
11291 2006-10-20 John W. Eaton <jwe@octave.org>
11293 * lex.l (handle_identifier): If a command name is found, skip
11294 starting command mode if parsing an object index.
11296 2006-10-20 David Bateman <dbateman@free.fr>
11298 * DLD-FUNCTION/spqr.cc (dmperm_internal): New function with core
11300 (Fdmperm): Call dmperm_internal rather then calculating loally.
11301 (Fsprank): New function to calculate the strutural rank also using
11304 2006-10-19 John W. Eaton <jwe@octave.org>
11306 * ov-struct.cc (octave_struct::as_mxArrary):
11307 Use OCTAVE_LOCAL_BUFFER to allocate tempoarary array of field names.
11309 * mxarray.h (mxArray::persistent): Delete var and all uses.
11310 (mxArray::mark_persistent, mxArray::unmark_persistent,
11311 mxArray::is_persistent): Delete functions.
11312 * mex.cc (mex::function_name): Use mxArray::strsave, not strsave.
11313 (mex::mark_array): New function.
11314 (mex::make_value): Use it.
11315 (mex::free_value): Return true if we found ptr in arraylist.
11316 (mex::persistent (mxArray *)): Remove ptr from arraylist instead
11317 of marking it as persistent.
11318 (mxArray::malloc): Call ::malloc instead of malloc.
11319 (mxArray::calloc): Call ::calloc instead of calloc.
11320 (maybe_mark_array): New function.
11321 (mxCreateCellArray, mxCreateCellMatrix, mxCreateCharArray,
11322 mxCreateCharMatrixFromStrings, mxCreateDoubleMatrix,
11323 mxCreateDoubleScalar, mxCreateLogicalArray, mxCreateLogicalMatrix,
11324 mxCreateLogicalScalar, mxCreateNumericArray,
11325 mxCreateNumericMatrix, mxCreateSparse,
11326 mxCreateSparseLogicalMatrix, mxCreateString, mxCreateStructArray,
11327 mxCreateStructMatrix, mxDuplicateArray): Use it.
11328 (mxDestroyArray): No need to check persistence now.
11329 Also delete ptr if mex_context->free_value does not.
11330 (call_mex): No need to delete elements of argout now.
11332 2006-10-18 John W. Eaton <jwe@octave.org>
11334 * dynamic-ld.cc (octave_shlib_list::remove,
11335 octave_shlib_list::do_remove, octave_mex_file_list::remove,
11336 octave_mex_file_list::do_remove): New arg, cl_hook.
11337 (octave_shlib_list::do_remove): Pass cl_hook to octave_shlib close
11339 (octave_dynamic_loader::do_load_oct): Don't call close on shl
11340 directly. Pass do_clear_function to octave_shlib_list::remove.
11342 * mex.cc (mexUnlock): Don't warn if unlocking a function that is
11345 * pt-fcn-handle.cc (tree_anon_fcn_handle::dup):
11346 Correctly duplicate symbol table info.
11348 2006-10-17 Michael Goffioul <michael.goffioul@swing.be>
11350 * oct-map.h: Include <algorithm>.
11352 2006-10-16 John W. Eaton <jwe@octave.org>
11354 * oct-stream.cc (octave_stream_list::do_remove): Handle "all" as a
11357 2006-10-13 Michael Goffioul <michael.goffioul@swing.be>
11359 * Makefile.in: Adapt rules to use $(LIBPRE).
11361 2006-10-11 John W. Eaton <jwe@octave.org>
11363 * mex.h (UINT64_T, uint64_T, INT64_T, int64_T, UINT32_T, uint32_T,
11364 INT32_T, int32_T, UINT16_T, uint16_T, INT16_T, int16_T, UINT8_T,
11365 uint8_T, INT8_T, int8_T): Conditionally define.
11366 From Andy Adler <adler@site.uottawa.ca>.
11368 2006-10-09 John W. Eaton <jwe@octave.org>
11370 * oct-conf.h.in (OCTAVE_CONF_CURL_LIBS): Substitute.
11371 * toplev.cc (octave_config_info): Add CURL_LIBS to the list.
11373 2006-10-09 Alexander Barth <abarth@marine.usf.edu>
11375 * DLD-FUNCTIONS/urlwrite.cc: New file providing urlwrite and urlread.
11377 2006-10-09 John W. Eaton <jwe@octave.org>
11379 * pt-mat.cc (tree_matrix::dup): Append new elements to new matrix.
11380 * pt-cell.cc (tree_cell::dup): Append new elements to new cell array.
11382 2006-10-04 John W. Eaton <jwe@octave.org>
11384 * version.h (OCTAVE_VERSION): Now 2.9.9+.
11386 * DLD-FUNCTIONS/__gnuplot_raw__.l (F__clear_plot_window__):
11387 Rename from Fclearplot. Only clear plot window.
11389 2006-10-03 John W. Eaton <jwe@octave.org>
11391 * DLD-FUNCTIONS/luinc.cc (Fluinc): Avoid crash if SparseLU or
11392 SparseComplexLU constructor fails.
11394 * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx):
11395 Delete unused variable.
11397 2006-10-03 David Bateman <dbateman@free.fr>
11399 * Makefile.in (OCT_LINK_DEPS) Include $(CAMD_LIBS) in the list.
11400 (octave$(EXEEXT)): Include $(CAMD_LIBS) in link command.
11402 2006-10-02 John W. Eaton <jwe@octave.org>
11404 * version.h (OCTAVE_VERSION): Now 2.9.9.
11405 (OCTAVE_API_VERSION): Now api-v22.
11406 (OCTAVE_RELEASE_DATE): Now 2006-10-02.
11408 * pr-output.cc (pr_plus_format): Use "inline" instead of "static
11409 inline" for template functions to avoid problems when not
11410 compiling with g++.
11412 * mex.cc (call_mex): Delete elements of argout.
11413 From Kai Labusch <labusch@inb.uni-luebeck.de>.
11415 2006-09-29 John W. Eaton <jwe@octave.org>
11417 * DLD-FUNCTIONS/spfind.cc (sparse_find_non_zero_elem_idx):
11418 Leading dimension is NR, not NC.
11420 * Makefile.in (DEP_5): Include oct-errno.cc in the list.
11422 2006-09-27 John W. Eaton <jwe@octave.org>
11424 * pr-output.cc (abs): New template function. Instantiate for
11427 2006-09-27 David Bateman <dbateman@free.fr>
11429 * file-io.cc (Fsprintf): If fmt is an sq_string, return an sq_string.
11431 * DLD-FUNCTIONS/sparse.cc (spfind, sparse_find): Delete.
11432 * DLD-FUNCTIONS/spfind.cc: New file implementating compatible
11433 sparse find function.
11434 * Makefile.in (DLD_XSRC): Add spfind.cc.
11436 2006-09-26 Bill Denney <bill@givebillmoney.com>
11438 * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx, Ffind):
11439 Handle direction and limit on number of elements to find.
11441 2006-09-26 John W. Eaton <jwe@octave.org>
11443 * error.cc (warning_1): Call error_2, not error.
11445 2006-09-15 John W. Eaton <jwe@octave.org>
11447 * ops.h (DEFSTRDBLCONVFN): New arg, TFROM.
11448 * OPERATORS/op-double-conv.cc: Declare and install sq_string
11451 * ov-base-int.cc (octave_base_int_scalar<T>::convert_to_str_internal,
11452 octave_base_int_matrix<T>::convert_to_str_internal):
11454 * ov-base-int.h: Provide decls.
11456 2006-09-15 Søren Hauberg <soren@hauberg.org>.
11458 * data.cc (Fsize): If nargout > ndims, fill with 1.
11460 2006-09-15 John W. Eaton <jwe@octave.org>
11462 * octave.cc: Fix xerbla decl.
11464 2006-09-13 John W. Eaton <jwe@octave.org>
11466 * DLD-FUNCTIONS/cellfun.cc: Improve error message for uniform
11467 output case when results are not scalars. Avoid shadow decls.
11469 2006-09-13 David Bateman <dbateman@free.fr>
11471 * ov-scalar.h (octave_scalar::sparse_matrix_value,
11472 octave_scalar::sparse_complex_matrix_value): New extractor functions.
11473 * ov-complex.h (octave_complex::sparse_matrix_value,
11474 octave_complex::sparse_complex_matrix_value): Ditto.
11475 * DLD-FUNCTIONS/spkron.cc (Fspkron): Change example in help.
11477 2006-09-12 David Bateman <dbateman@free.fr>
11479 * DLD-FUNCTIONS/cellfun.cc (Fcellfun): Allow matlab compatiable
11480 'UniformOutput' and 'ErrorHandler' options. Change output when
11481 called with function handler or inline function to by default have
11482 'UniformOutput' set to true. Allow functions with multiple inputs
11483 and outputs. Add test code. Replace some int with octave_idx_type.
11484 (Fnum2cell): Replace some int with octave_idx_type. Add test code.
11486 2006-09-11 Yozo Hida <yozo@cs.berkeley.edu>
11488 * DLD-FUNCTIONS/gcd.cc (Fgcd): Extend range by using std::floor
11489 instead of converting to int.
11491 2006-09-05 John W. Eaton <jwe@octave.org>
11493 * mex.cc (mxArray_sparse::as_octave_value): Cast nzmax to
11494 octave_idx_type for sparse matrix constructors.
11496 2006-09-01 John W. Eaton <jwe@octave.org>
11498 * dirfns.cc: Don't handle nargout == 0 as a special case.
11499 (octave_change_to_directory): Perform tilde expansion on directory
11502 2006-08-30 John W. Eaton <jwe@octave.org>
11504 * load-save.cc (get_file_format): Fix misplaced #endif.
11506 2006-08-29 John W. Eaton <jwe@octave.org>
11508 * load-path.cc (execute_pkg_add_or_del):
11509 Source PKG_ADD or PKG_DEL in base workspace.
11510 * parse.y (source_file): New optional arg, context.
11511 * parse.h (source_file): Fix decl.
11513 2006-08-25 John W. Eaton <jwe@octave.org>
11515 * version.h (OCTAVE_VERSION): Now 2.9.8+.
11517 2006-08-24 John W. Eaton <jwe@octave.org>
11519 * version.h (OCTAVE_VERSION): Now 2.9.8.
11520 (OCTAVE_API_VERSION): Now api-v21.
11521 (OCTAVE_RELEASE_DATE): Now 2006-08-24.
11523 2006-08-23 John W. Eaton <jwe@octave.org>
11525 * ov.h (octave_value::save_ascii): Delete strip_nan_and_inf arg.
11526 * ov-base.h, ov-base.cc (octave_base_value::save_ascii): Likewise.
11527 * ov-base-int.h, ov-base-int.cc (octave_base_int_matrix<T>::save_ascii,
11528 octave_base_int_scalar<T>::save_ascii, ): Likewise.
11529 * ov-base-sparse.cc, ov-base-sparse.h
11530 (octave_base_sparse<T>::save_ascii): Likewise.
11531 * ov-bool-mat.cc, ov-bool-mat.h (octave_bool_matrix::save_ascii):
11533 * ov-bool.cc, ov-bool.h (octave_bool::save_ascii): Likewise.
11534 * ov-cell.cc, ov-cell.h (octave_cell::save_ascii): Likewise.
11535 * ov-complex.cc, ov-complex.h (octave_complex::save_ascii): Likewise.
11536 * ov-fcn-handle.cc, ov-fcn-handle.h (octave_fcn_handle::save_ascii):
11538 * ov-fcn-inline.cc, ov-fcn-inline.h (octave_fcn_inline::save_ascii):
11540 * ov-list.cc, ov-list.h (octave_list::save_ascii): Likewise.
11541 * ov-range.cc, ov-range.h (octave_range::save_ascii): Likewise.
11542 * ov-scalar.cc, ov-scalar.h (octave_scalar::save_ascii): Likewise.
11543 * ov-str-mat.cc, ov-str-mat.h (octave_char_matrix_str::save_ascii):
11545 * ov-struct.cc, ov-struct.h (octave_struct::save_ascii): Likewise.
11546 * ov-re-mat.cc, ov-re-mat.cc (octave_matrix::save_ascii): Likewise.
11547 * ov-cx-mat.cc, ov-cx-mat.cc (octave_complex_matrix::save_ascii):
11549 * ov-cx-mat.cc, ov-cx-mat.cc (octave_complex_matrix::save_ascii):
11551 * ov-re-mat.cc, ov-re-mat.cc (octave_matrix::save_ascii): Likewise.
11553 * ls-oct-ascii.cc, ls-oct-ascii.h (save_ascii_data):
11554 Delete strip_nan_and_inf arg.
11555 (save_ascii_data_for_plotting): Delete strip_nan_and_inf arg from
11556 call to save_ascii_data.
11558 * DLD-FUNCTIONS/__gnuplot_raw__.l (handle_using): Accept "(EXPR)"
11559 as components of using clauses.
11560 (enum _toktype): New element DOLLAR.
11561 Accept "$" in lexer.
11563 * ls-oct-ascii.cc (save_ascii_data): Delete arg strip_nan_and_inf.
11566 * ls-oct-ascii.h (save_three_d): Provide decl.
11567 * load-save.h (save_ascii_data_for_plotting, save_three_d):
11570 2006-08-22 John W. Eaton <jwe@octave.org>
11572 * ov.h (octave_value::save_ascii): strip_nan_and_inf is now int,
11574 * ov-base.h, ov-base.cc (octave_base_value::save_ascii): Likewise.
11575 * ov-base-int.h, ov-base-int.cc (octave_base_int_matrix<T>::save_ascii,
11576 octave_base_int_scalar<T>::save_ascii, ): Likewise.
11577 * ov-base-sparse.cc, ov-base-sparse.h
11578 (octave_base_sparse<T>::save_ascii): Likewise.
11579 * ov-bool-mat.cc, ov-bool-mat.h (octave_bool_matrix::save_ascii):
11581 * ov-bool.cc, ov-bool.h (octave_bool::save_ascii): Likewise.
11582 * ov-cell.cc, ov-cell.h (octave_cell::save_ascii): Likewise.
11583 * ov-complex.cc, ov-complex.h (octave_complex::save_ascii): Likewise.
11584 * ov-fcn-handle.cc, ov-fcn-handle.h (octave_fcn_handle::save_ascii):
11586 * ov-fcn-inline.cc, ov-fcn-inline.h (octave_fcn_inline::save_ascii):
11588 * ov-list.cc, ov-list.h (octave_list::save_ascii): Likewise.
11589 * ov-range.cc, ov-range.h (octave_range::save_ascii): Likewise.
11590 * ov-scalar.cc, ov-scalar.h (octave_scalar::save_ascii): Likewise.
11591 * ov-str-mat.cc, ov-str-mat.h (octave_char_matrix_str::save_ascii):
11593 * ov-struct.cc, ov-struct.h (octave_struct::save_ascii): Likewise.
11594 * ov-re-mat.cc, ov-re-mat.cc (octave_matrix::save_ascii): Likewise.
11595 * ov-cx-mat.cc, ov-cx-mat.cc (octave_complex_matrix::save_ascii):
11598 * ov-cx-mat.cc, ov-cx-mat.cc (octave_complex_matrix::save_ascii):
11599 Don't strip Inf and NaN here. Call ComplexMatrix::save_ascii to
11601 * ov-re-mat.cc, ov-re-mat.cc (octave_matrix::save_ascii):
11602 Don't strip Inf and NaN here. Call Matrix::save_ascii to do the
11605 * ov-re-mat.cc, ov-cx-mat.cc (strip_infnan): Delete.
11606 * ls-oct-ascii.cc, ls-oct-ascii.h (save_ascii_data):
11607 strip_nan_and_inf is now int, not bool.
11608 (strip_infnan): Delete.
11609 (save_ascii_data_for_plotting): Call save_ascii_data with
11610 strip_nan_and_inf = 2.
11612 * Makefile.in (INCLUDES): Remove matrix.h from the list.
11614 2006-08-22 David Bateman <dbateman@free.fr>
11616 * sparse-xpow.cc: Replace all uses of pow by std::pow.
11617 (elem_pow): Simplify for two sparse matrices arguments.
11619 2006-08-22 John W. Eaton <jwe@octave.org>
11621 * ls-oct-ascii.cc: Increase default value of save_precision to 16.
11623 * ls-mat-ascii.cc (save_mat5_ascii_data): Use scientific format.
11625 2006-08-21 John W. Eaton <jwe@octave.org>
11627 * ls-mat5.cc (read_mat5_binary_data, read_mat5_integer_data,
11628 write_mat5_array): Unconditionally enable code for 64-bit int types.
11630 * ov-fcn-handle.cc (DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA):
11631 For compatibility, set class to function_handle.
11633 2006-08-18 John W. Eaton <jwe@octave.org>
11635 * pr-output.cc (set_real_matrix_format): Also always include space
11636 for sign if values are int, inf, or nan.
11637 (set_complex_format, set_complex_matrix_format): Always include
11638 space for sign in real format, but never in imaginary format.
11640 * gripes.cc (gripe_logical_conversion): New function.
11641 * gripes.h: Provide decl.
11642 * ov.h (octave_value::bool_value, octave_value::bool_matrix_value,
11643 octave_value::bool_array_value): New arg, warn.
11644 * ov-base.cc, ov-base.h (octave_base_value::bool_value,
11645 octave_base_value::bool_matrix_value,
11646 octave_base_value::bool_array_value): Likewise.
11647 * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::bool_array_value,
11648 OCTAVE_VALUE_INT_SCALAR_T::bool_array_value): Likewise.
11649 * ov-range.h (octave_range::bool_array_value): Likewise.
11650 * ov-re-mat.cc, ov-re-mat.h (octave_matrix::bool_array_value):
11652 * ov-re-sparse.cc, ov-re-sparse.h
11653 (octave_sparse_matrix::bool_array_value): Likewise.
11654 * ov-scalar.h (octave_scalar::bool_value,
11655 octave_scalar::bool_array_value): Likewise.
11656 * OPERATORS/op-bm-b.cc (oct_assignop_conv_and_assign):
11657 Ask for warning from bool_array_value.
11658 * OPERATORS/op-bm-bm.cc (oct_assignop_conv_and_assign): Likewise.
11659 * ov-bool.h (octave_bool::bool_value,
11660 octave_bool::bool_matrix_value, octave_bool::bool_array_value):
11662 * ov-bool-mat.h (octave_bool_matrix::bool_matrix_value,
11663 octave_bool_matrix::bool_array_value): Likewise.
11664 * ov-bool-sparse.cc, ov-bool-sparse.h
11665 (octave_sparse_bool_matrix::bool_matrix_value,
11666 octave_sparse_bool_matrix::bool_array_value): Likewise.
11668 2006-08-18 Benjamin Lindner <lindnerben@gmx.net>
11670 * ls-mat5.cc (read_mat5_tag): Declare type as int32_t, not int.
11671 (read_mat5_binary_element): Likewise, for len and element_length.
11673 2006-08-18 John W. Eaton <jwe@octave.org>
11675 * load-save.h (enum load_save_format): New element, LS_MAT_ASCII_LONG.
11676 * load-save.cc (Fload, Fsave): Make -ascii Matlab compatible.
11677 (do_save): Handle LS_MAT_ASCII.
11678 * ls-mat-ascii.cc (save_mat_ascii_data): New function.
11679 * ls-mat-ascii.h: Provide decl.
11681 2006-08-17 John W. Eaton <jwe@octave.org>
11683 * ls-mat5.cc (save_mat5_element_length): Correctly compute element
11684 length for character data. Handle N-d character data
11685 (save_mat5_binary_element): Handle N-d character data.
11687 2006-08-16 John W. Eaton <jwe@octave.org>
11689 * parse.y (gobble_leading_white_space): New arg, SKIP_CODE.
11692 2006-08-15 John W. Eaton <jwe@octave.org>
11694 * help.cc (help_from_file): Call get_help_from_file with new file
11695 arg. Print file info here.
11697 * parse.y (get_help_from_file): Delete include_file_info arg.
11698 Provide two versions, one that returns the file found in a
11699 reference arg and one that does not.
11701 * variables.cc (do_isglobal): New function.
11702 (Fisglobal): Use it.
11703 (Fis_global): New function.
11705 2006-08-14 John W. Eaton <jwe@octave.org>
11707 * variables.cc (symbol_record_name_compare): Fix casts.
11709 * ov-cell.cc (octave_cell::subsasgn): Call empty_conv for 0x0
11710 objects, not just empty objects.
11712 * oct-map.h (Octave_map::clear): Also clear key_list.
11714 * load-path.cc (load_path::find_dir_info, load_path::do_add,
11715 load_path::do_remove): Perform tilde expansion on directory here.
11717 2006-07-29 John W. Eaton <jwe@octave.org>
11719 * matrix.h: Delete to avoid conflict with liboctave/Matrix.h on
11720 case-insensitive filesystems.
11722 * version.h (OCTAVE_VERSION): Now 2.9.7+.
11724 2006-07-28 John W. Eaton <jwe@octave.org>
11726 * version.h (OCTAVE_VERSION): Now 2.9.7.
11727 (OCTAVE_API_VERSION): Now api-v20.
11728 (OCTAVE_RELEASE_DATE): Now 2006-07-28.
11730 * load-path.cc (path::do_add): Warn for trailing "//".
11732 * strfns.cc: Comment out some tests for snapshot.
11734 2006-07-27 John W. Eaton <jwe@octave.org>
11736 * defaults.cc (Vlocal_api_arch_lib_dir): New variable.
11737 (set_default_local_api_arch_lib_dir): New function.
11738 (install_defaults): Call it.
11739 (set_exec_path): Put Vlocal_api_arch_lib_dir in the list.
11740 * toplev.cc (localapiarchlibdir): Include it in the list.
11741 * defaults.h.in (OCTAVE_LOCALAPIARCHLIBDIR): Substitute here.
11743 2006-07-26 John W. Eaton <jwe@octave.org>
11745 * mex.cc (mxArray::as_octave_value (mxArray *)): New static function.
11746 (call_mex, mexPutVariable, mexCallMATLAB,
11747 mxArray_cell::as_octave_value, mxArray_struct::as_octave_value):
11748 Use static version of as_octave_value here.
11749 (mxArray_sparse::mxArray_sparse (const mxArray_sparse&)):
11750 Check pr, ir, and jc before calling memcpy.
11751 (mxArray_number::mxArray_number): Check pr before calling memcpy
11753 * mxarray.h (mxArray::as_octave_value (mxArray *)): Provide decl.
11754 (mxArray::as_octave_value): Now protected.
11756 * file-io.cc (Ffeof, Fferror): Use DEFUNX instead of DEFUN.
11758 * mex.cc (xfree): New function.
11759 (mex::free): Use it.
11760 (mxArray_struct::~mxArray_struct, mxArray_cell::~mxArray_cell):
11761 Delete elements with delete, not mxDestroyArray.
11762 (mex::cleanup): Don't call mex::free or mex::free_value.
11763 (mex::free_value): Add debug warning.
11764 (mex::mark, mex::unmark): Fix debug warning.
11765 (call_mex): Use unwind_protect frame.
11766 (mexUnlock): Use iterator to remove item from mex_lock_count.
11768 * octave.cc (maximum_braindamage): Use disable_warning instead of
11769 bind_internal_variable to disable function-name-clash warning.
11770 * error.cc (disable_warning): No longer static.
11771 * error.h: Provide decl.
11773 2006-07-25 David Bateman <dbateman@free.fr>
11775 * mex.cc (mxArray_octave_value::get_class_id): Handle sparse.
11776 (class mxArray_sparse): Derive from mxArray_matlab, not
11778 (mxArray_sparse::as_octave_value): Implement function.
11779 * ov-bool-sparse.cc (octave_sparse_bool_matrix::as_mxArray):
11780 Implement function.
11781 * ov-cx-sparse.cc (octave_sparse_complex_matrix::as_mxArray):
11782 Implement function.
11783 * ov-re-sparse.cc (octave_sparse_matrix::as_mxArray):
11784 Implement function.
11786 2006-07-25 John W. Eaton <jwe@octave.org>
11788 * mex.cc (mxArray_struct::as_octave_value, call_mex,
11789 mexCallMATLAB, mxArray_cell::as_octave_value):
11790 Convert NULL mxArray* pointers to empty matrix values.
11791 (mxArray_octave_value:get_ir): Fix typo.
11793 2006-07-22 John W. Eaton <jwe@octave.org>
11795 * mxarray.h: New file.
11796 * mex.h, mexproto.h, mex.cc: New implementation of mxArray and MEX
11799 * ov.h (octave_value::mex_get_ir, octave_value::mex_get_jc):
11801 * ov-base.h (octave_base_value::mex_get_ir,
11802 octave_base_value::mex_get_jc): New virtual functions.
11803 * ov-base-sparse.h (octave_base_sparse<T>::mex_get_ir,
11804 octave_base_sparse<T>::mex_get_jc): New functions.
11806 * ov-intx.h (OCTAVE_VALUE_INT_SCALAR_T::as_mxArray,
11807 OCTAVE_VALUE_INT_MATRIX_T::as_mxArray): New functions.
11808 * ov-int8.h, ov-int16.h, ov-int32.h, ov-int64.h, ov-uint8.h,
11809 ov-uint16.h, ov-uint32.h, ov-uint64.h: Define OCTAVE_INT_MX_CLASS
11810 before including ov-intx.h. Undef it after.
11811 * ov-range.cc (octave_range::as_mxArray): New function.
11812 * ov-range.h: Provide decl.
11813 * ov-scalar.cc (octave_scalar::as_mxArray): New function.
11814 * ov-scalar.h: Provide decl.
11815 * ov-complex.cc (octave_complex::as_mxArray): New function.
11816 * ov-complex.h: Provide decl.
11817 * ov-re-mat.cc (octave_matrix::as_mxArray): New function.
11818 * ov-re-mat.h: Provide decl.
11819 * ov-cx-mat.cc (octave_complex_matrix::as_mxArray): New function.
11820 * ov-cx-mat.h: Provide decl.
11821 * ov-ch-mat.cc (octave_char_matrix::as_mxArray): New function.
11822 * ov-ch-mat.h: Provide decl.
11823 * ov-bool-mat.cc (octave_bool_matrix::as_mxArray): New function.
11824 * ov-bool-mat.h: Provide decl.
11825 * ov-bool.cc (octave_bool::as_mxArray): New function.
11826 * ov-bool.h: Provide decl.
11828 * ov-struct.h (octave_struct::numel): New function.
11830 * ls-mat5.cc (arrayclasstype): Use "MAT_FILE_" instead of "mx" as
11831 prefix for element names.
11833 * ov.h (octave_value::as_mxArray): New function.
11834 * ov-base.cc (octave_base_value::as_mxArray): New function.
11835 * ov-base.h: Provide decl.
11837 * ov.h (octave_value::mex_get_data): New function.
11838 * ov-base.h (octave_base_value::mex_get_data): New function.
11839 * ov-base-scalar.h (octave_base_scalar<ST>::mex_get_data): New function.
11840 * ov-base-matrix.h (octave_base_matrix<MT>::mex_get_data): New function.
11841 * ov-intx.h (OCTAVE_VALUE_INT_SCALAR_T::mex_get_data): New function.
11843 * ov.h (octave_value::nfields): New function.
11844 * ov-base.cc (octave_base_value::nfields): New virtual function.
11845 * ov-base.h: Provide decl.
11846 * ov-struct.h (octave_struct::nfields): New function.
11848 2006-07-19 John W. Eaton <jwe@octave.org>
11850 * OPERATORS/op-bm-bm.cc (oct_assignop_conv_and_assign): New function.
11851 (install_bm_bm_ops): Install it for various types.
11852 * OPERATORS/op-bm-b.cc (oct_assignop_conv_and_assign): New function.
11853 (install_bm_b_ops): Install it for various types.
11854 * ov-intx.h (OCTAVE_VALUE_INT_MATRIX_T::bool_array_value,
11855 OCTAVE_VALUE_INT_SCALAR_T::bool_array_value): New functions.
11856 * ov-range.h (octave_range::bool_array_value): New function.
11857 * ov-re-sparse.cc (octave_sparse_matrix::bool_array_value):
11859 * ov-re-sparse.h: Provide decl.
11860 * ov-re-mat.cc (octave_matrix::bool_array_value): New function.
11861 * ov-re-mat.h: Provide decl.
11863 * ov-base.cc (octave_base_value::numeric_assign):
11864 Avoid memory leak when converting LHS.
11866 2006-07-18 John W. Eaton <jwe@octave.org>
11868 * ov.h (octave_value::is_int8_type, octave_value::is_int16_type,
11869 octave_value::is_int32_type, octave_value::is_int64_type,
11870 octave_value::is_uint8_type, octave_value::is_uint16_type,
11871 octave_value::is_uint32_type, octave_value::is_uint64_type):
11873 * ov-base.h (octave_base_value::is_int8_type,
11874 octave_base_value::is_int16_type,
11875 octave_base_value::is_int32_type,
11876 octave_base_value::is_int64_type,
11877 octave_base_value::is_uint8_type,
11878 octave_base_value::is_uint16_type,
11879 octave_base_value::is_uint32_type,
11880 octave_base_value::is_uint64_type): New functions.
11881 * ov-int8.h, ov-int16.h, ov-int32.h, ov-int16.h, ov-uint8.h,
11882 ov-uint16.h, ov-uint32.h, ov-uint16.h: Define OCTAVE_BASE_INT_T.
11883 * ov-intx.h: Use OCTAVE_BASE_INT_T to define type-specific predicate.
11885 * ov.h (octave_value::is_double_type, octave_value::is_single_type):
11887 * ov-base.h (octave_base_value::is_double_type,
11888 octave_base_value::is_single_type): New functions.
11889 * ov-re-mat.h (octave_matrix::is_double_type): New function.
11890 * ov-cx-mat.h (octave_matrix::is_double_type): New function.
11891 * ov-scalar.h (octave_scalar::is_double_type): New function.
11892 * ov-complex.h (octave_complex::is_double_type): New function.
11893 * ov-range.h (octave_range::is_double_type): New function.
11894 * ov-re-sparse.h (octave_sparse_matrix::is_double_type): New function.
11895 * ov-cx-sparse.h (octave_sparse_complex_matrix::is_double_type):
11898 2006-07-15 John W. Eaton <jwe@octave.org>
11900 * ov-typeinfo.cc: Also instantiate arrays of assignany_ops.
11902 * oct-errno.cc.in (octave_errno::octave_errno): VALUE field in
11903 errno_struct no longer const.
11905 * DLD-FUNCTIONS/dispatch.cc (octave_dispatch::do_index_op):
11906 Declare resize_ok arg as bool, not int.
11907 Provide default value for resize_ok.
11909 2006-07-14 John W. Eaton <jwe@octave.org>
11911 * oct-stream.cc (do_write): Include explicit instantiations.
11913 * ov-str-mat.h (octave_char_matrix_sq_str::resize):
11914 Include fill arg to match base class.
11915 * ov-struct.h (octave_struct::resize): Likewise.
11917 * ov-base-mat.cc, ov-base-mat.h, ov-base-sparse.cc,
11918 ov-base-sparse.h, ov-base.cc, ov-base.h, ov-bool.cc,
11919 ov-bool.h, ov-complex.cc, ov-complex.h, ov-intx.h, ov-list.cc,
11920 ov-list.h, ov-range.cc, ov-range.h, ov-scalar.cc, ov-scalar.h,
11921 ov-str-mat.cc, ov-str-mat.h, ov.h (do_index_op):
11922 Declare resize_ok arg as bool, not int.
11923 Provide default value for resize_ok.
11925 * c-file-ptr-stream.h (c_file_ptr_stream::c_file_ptr_stream):
11928 2006-07-13 John W. Eaton <jwe@octave.org>
11930 * oct-map.h (Octave_map::del): Add missing std:: qualifier to use
11933 2006-07-07 John W. Eaton <jwe@octave.org>
11935 * ov.h (octave_value::is_bool_scalar): New function.
11936 * ov-base.h (octave_base_value::is_bool_scalar): New function.
11937 * ov-bool.h (octave_bool::is_bool_scalar): New function.
11939 * oct-map.cc (Octave_map::keys): Use assert.
11940 (Octave_map::assign): Avoid inserting new key in map unless
11941 assignment to cell succeeds.
11943 * oct-map.h (Octave_map::del): Only touch key_list if map contains key.
11944 Assert that key_list contains key.
11946 * oct-map.h (Octave_map::maybe_add_to_key_list): For efficiency,
11947 check map, not key_list. From Paul Kienzle <pkienzle@users.sf.net>.
11949 2006-07-06 John W. Eaton <jwe@octave.org>
11951 * DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Declare mrowsc volatile.
11953 * ov-struct.cc (octave_struct::print_raw): Print keys in key_list
11956 * oct-map.h (Octave_map::key_list): New data member.
11957 (Octave_map::maybe_add_to_key_list): New function.
11958 (Octave_map::key_list_iterator, Octave_map::const_key_list_iterator):
11960 (Octave_map::del): Also delete key from key_list.
11961 * oct-map.cc (Octave_map::keys): Compute return value from
11962 key_list instead of map.
11963 (Octave_map::assign, Octave_map::contents): Call maybe_add_to_key_list.
11964 * oct-map.h, oct-map.cc (Octave_map::Octave_map):
11965 Insert keys in key_list.
11967 * oct-map.h (Octave_map::Octave_map (const dim_vector&,
11968 const string_vector&)): New arg, key_list_arg.
11969 * oct-map.cc: Move definition here.
11971 2006-07-05 John W. Eaton <jwe@octave.org>
11973 * mex.cc (mexGetVariable): Rename from mexGetArray, swap arguments.
11974 (mexGetVariablePtr): Rename from mexGetArrayPtr, swap arguments.
11975 (mexErrMsgIdAndTxt, mexWarnMsgIdAndTxt): New functions.
11976 * mexproto.h: Provide decls.
11977 Include decls for as yet unsupported functions.
11978 * mex.h: Add enum for class ids.
11979 (mexGetArray): Define using mexGetVariable.
11980 (mexGetArrayPtr): Define using mexGetVariablePtr.
11982 2006-07-02 John W. Eaton <jwe@octave.org>
11984 * ov-str-mat.cc (CHAR_MATRIX_CONV): Omit "warn-" from label.
11985 * parse.y (maybe_warn_variable_switch_label): Likewise.
11987 2006-07-01 John W. Eaton <jwe@octave.org>
11989 * parse.y (finish_cell): Use finish_matrix to do constant folding.
11991 2006-06-30 John W. Eaton <jwe@octave.org>
11993 * ov-base.cc (octave_base_value::numeric_assign):
11994 Avoid memory leak when converting LHS.
11996 * oct-hist.cc (do_history, initialize_history, Fhistory_file):
11997 Don't perform tilde expansion on history file name.
11999 * syscalls.cc (Flstat, Fstat): Don't perform tilde expansion on arg.
12000 * input.cc (Fread_readline_init_file): Likewise.
12001 * dirfns.cc (Fcd, Freaddir): Likewise.
12003 * load-path.cc (genpath): Don't perform tilde expansion on name.
12004 (load_path::do_add): Don't warn about moving "." to front of list.
12006 2006-06-28 John W. Eaton <jwe@octave.org>
12008 * load-path.cc (Faddpath): Don't treat "." specially here.
12009 Don't check directory status here.
12010 (Fpath): Handle all args. Don't treat "." specially here.
12011 (Faddpath, Frmpath): Delete unused variable xpath.
12012 (load_path::do_add): New function.
12013 (load_path::do_prepend, load_path::do_append): Use it.
12014 (load_path::do_remove): Really prevent removal of ".".
12015 (load_path::do_clear): Clearing doesn't remove ".".
12016 (load_path::append, load_path::prepend, load_path::do_append,
12017 load_path::do_prepend): New arg, warn.
12019 * load-path.h: Fix decls.
12021 * DLD-FUNCTIONS/regexp.cc (octregexp_list):
12022 Avoid bug in older versions of g++.
12024 2006-06-27 John W. Eaton <jwe@octave.org>
12026 * Makefile.in (clean): Also remove $(DLD_OBJ).
12028 * sighandlers.cc (install_signal_handlers): Don't handle SIGPROF.
12029 From Geoffrey Knauth <geoff@knauth.org>.
12031 2006-06-25 John W. Eaton <jwe@octave.org>
12033 * mk-pkg-add: Avoid apparently non-portable sed patterns.
12035 2006-06-21 John W. Eaton <jwe@octave.org>
12037 * variables.cc (do_who): Handle mex.
12039 * symtab.cc (SYMBOL_DEF::type_as_string, SYMBOL_DEF::which,
12040 symbol_table::clear_functions, table::clear_function,
12041 symbol_table::clear_function_pattern):
12043 * symtab.h (symbol_record::is_mex_function,
12044 symbol_record::symbol_def::is_mex_function): New functions.
12045 (symbol_record::TYPE): New value, MEX_FUNCTION.
12046 (symbol_record::is_function, symbol_table::user_function_name_list,
12047 SYMTAB_ALL_TYPES): Handle MEX_FUNCTION.
12049 * ov-fcn.h (octave_function::octave_function):
12050 Provide default for doc string arg.
12052 * defun.cc (install_mex_function): New function.
12053 * defun-int.h: Provide decl.
12055 * ov-builtin.cc (any_arg_is_magic_colon): Delete.
12056 (octave_builtin::do_multi_index_op): Call has_magic_colon method
12057 for args instead of any_arg_is_magic_colon.
12059 * ov-base.h (octave_base_value::is_mex_function): New function.
12060 * ov.h (octave_value::is_mex_function): New function.
12062 * ov-mex-fcn.h, ov-mex-fcn.cc: New files.
12064 * parse.y (load_fcn_from_file): Also handle .mex files.
12066 * dynamic-ld.cc (octave_dynamic_loader::load_oct): Rename from load.
12067 (octave_dynamic_loader::do_load_oct): Rename from do_load.
12068 * dynamic-ld.h: Fix decls.
12070 * utils.cc (mex_file_in_path): New function.
12071 * utils.h: Provide decl.
12073 * variables.cc (symbol_out_of_date): Also handle mex files.
12075 * load-path.cc (load_path::dir_info::get_file_list,
12076 load_path::dir_info::get_private_function_map,
12077 load_path::do_find_fcn, load_path::add_to_fcn_map,
12078 load_path::do_display): Also handle mex files.
12079 * load-path.h (load_path::find_mex_file): New static function.
12080 (load_path::MEX_FILE): New static data member.
12081 (load_path::do_find_fcn): By default, also look for mex files.
12083 * matrix.h, mex.h, mex.cc: New files from Octave Forge
12084 * mexproto.h: New file, extracted from mex.h.
12085 * Makefile.in: Add them to the appropriate lists.
12087 2006-06-20 John W. Eaton <jwe@octave.org>
12089 * ov-re-mat.cc (octave_matrix::convert_to_str_internal):
12090 Don't lose empty dimensions on conversion to char.
12092 * strfns.cc (Fstrcmp): Handle comparison of cellstr and empty string.
12094 2006-06-16 John W. Eaton <jwe@octave.org>
12096 * parse.y (%union): New type, anon_fcn_handle_type.
12097 (anon_fcn_handle): Now anon_fcn_handle_type, not tree_constant_type.
12098 (make_anon_fcn_handle): Return tree_anon_fcn_handle, not tree_constant.
12100 * comment-list.cc (octave_comment_list::dup): New function.
12101 * comment-list.h: Provide decl.
12103 * pt-cmd.cc (tree_no_op_command::dup): New function.
12104 * pt-cmd.h: Provide decl.
12105 (tree_command::dup): New pure virtual function.
12107 * pt-loop.cc (tree_while_command::dup, tree_do_until_command::dup,
12108 tree_simple_for_command::dup, tree_complex_for_command::dup):
12110 * pt-loop.h: Provide decls.
12112 * pt-jump.cc (tree_break_command::dup, tree_continue_command::dup,
12113 tree_return_command::dup): New functions.
12114 * pt-jump.h: Provide decls.
12116 * pt-except.cc (tree_try_catch_command::dup,
12117 tree_unwind_protect_command::dup): New functions.
12118 * pt-except.h: Provide decls.
12120 * pt-select.cc (tree_if_clause::dup, tree_if_command_list::dup,
12121 tree_if_command::dup, tree_switch_case::dup,
12122 tree_switch_case_list::dup, tree_switch_command::dup):
12124 * pt-select.h: Provide decls.
12126 * pt-decl.cc (tree_decl_elt::dup, tree_decl_init_list::dup,
12127 tree_global_command::dup, tree_static_command::dup): New functions.
12128 * pt-decl.h: Provide decls.
12130 * pt-exp.h (tree_expression::copy_base): New function.
12131 (tree_expression::dup): New pure virtual function.
12133 * pt-fcn-handle.cc, pt-fcn-handle.h (tree_anon_fcn_handle): New class.
12135 * pt-fcn-handle.cc (tree_function_handle::dup): New function.
12136 * pt-fcn-handle.h: Provide decl.
12138 * pt-colon.cc (tree_colon_expression::dup): New function.
12139 * pt-colon.h: Provide decl.
12140 (tree_colon_expression::tree_colon_expression (tree_expression *,
12141 tree_expression *, tree_expression *, int, int)): New constructor.
12143 * pt-const.cc (tree_constant::dup): New function.
12144 (tree_constant::tree_constant (const octave_value&, const
12145 std::string&, int, int)): New constructor.
12146 * pt-const.h: Provide decls.
12148 * pt-idx.cc (tree_index_expression::dup): New functoin.
12149 (tree_index_expression::tree_index_expression (int, int)):
12151 * pt-idx.h: Provide decls.
12153 * pt-arg-list.cc (tree_argument_list::dup): New function.
12154 * pt-arg-list.h: Provide decl.
12156 * pt-id.cc (tree_identifier::dup): New function.
12157 * pt-id.h: Provide decl.
12159 * pt-cell.cc (tree_cell::dup): New function.
12160 * pt-cell.h: Provide decl.
12162 * pt-mat.cc (tree_matrix::dup): New function.
12163 * pt-mat.h: Provide decl.
12165 * pt-assign.cc (tree_simple_assignment::dup,
12166 tree_multi_assignment::dup): New functions.
12167 * pt-assign.h: Provide decls.
12169 * pt-binop.cc (tree_binary_expression::dup,
12170 tree_boolean_expression::dup): New functions.
12171 * pt-binop.h: Provide decls.
12173 * pt-unop.cc (tree_prefix_expression::dup,
12174 tree_postfix_expression::dup): New functions.
12175 * pt-unop.h: Provide decls.
12177 * pt-stmt.cc (tree_statement::dup, tree_statement_list::dup):
12179 * pt-stmt.h: Provide decls.
12181 * pt-misc.cc (tree_parameter_list::dup,
12182 tree_return_list::dup): New functions.
12183 * pt-misc.h: Provide decls.
12185 * symtab.cc (symbol_table::dup, symbol_table::inherit,
12186 symbol_record:is_automatic_variable): New functions.
12187 * symtab.h: Provide decls.
12188 (symbol_record::automatic_variable): New data member.
12189 (symbol_record::symbol_record): Initialize it.
12190 (symbol_record::mark_as_automatic_variable): New function.
12192 * pt-walk.h (tree_walker::visit_anon_fcn_handle):
12193 New pure virtual function.
12194 * pt-pr-code.cc (tree_print_code::visit_anon_fcn_handle): New function.
12195 * pt-pr-code.h: Provide decl.
12196 * pt-bp.cc (tree_breakpoint::visit_anon_fcn_handle): New function.
12197 * pt-bp.h: Provide decl.
12198 * pt-check.cc (tree_checker::visit_anon_fcn_handle): New function.
12199 * pt-check.h: Provide decl.
12201 2006-06-13 John W. Eaton <jwe@octave.org>
12203 * pt-stmt.cc (tree_statement_list::eval): Revise previous change
12204 to preserve return-last-value-computed semantics.
12206 * DLD-FUNCTIONS/fsolve.cc (hybrd_info_to_fsolve_info):
12207 Warn about invalid values of INFO from MINPACK instead of calling
12210 * ov-usr-fcn.cc (octave_user_function::do_multi_index_op):
12211 Don't assign values returned by evaluation of cmd_list to
12212 temporary variable. Delete unused variable last_computed_value.
12214 * pt-stmt.cc (tree_statement_list::eval):
12215 Clear retval before each statement is evaluated.
12217 2006-06-12 John W. Eaton <jwe@octave.org>
12219 * unwind-prot.h (unwind_protect_fptr): New macro.
12220 * load-path.cc (load_path::do_set): Use it instead of
12221 unwind_protect_ptr when protecting add_hook function pointer.
12222 * dynamic-ld.cc (octave_dynamic_loader::do_load): Use FCN_PTR_CAST
12223 here instead of reinterpret_cast.
12225 2006-06-09 John W. Eaton <jwe@octave.org>
12227 * version.h (OCTAVE_VERSION): Now 2.9.6+.
12229 2006-06-09 John W. Eaton <jwe@octave.org>
12231 * version.h (OCTAVE_VERSION): Now 2.9.6.
12232 (OCTAVE_API_VERSION): Now api-v19.
12233 (OCTAVE_RELEASE_DATE): Now 2006-06-09.
12235 * ov-cell.cc (cell::save_hdf5): Use leading zeros to keep elements
12236 correctly sorted in the HDF file.
12237 From Stephen Fegan <sfegan@astro.ucla.edu>.
12239 2006-06-08 John W. Eaton <jwe@octave.org>
12241 * ov-usr-fcn.cc (function::do_multi_index_op): Append contents of
12242 varargout to ret_list before calling convert_to_const_vector.
12244 * pt-arg-list.cc (tree_argument_list::convert_to_const_vector):
12245 No need to handle all_va_args here.
12247 * ov-va-args.h, ov-va-args.cc: Delete files.
12248 * Makefile.in (OV_INCLUDES, OV_SRC): Delete from the lists.
12250 * ov.cc (install_types): Don't register octave_all_va_args type.
12251 * ov.h, ov.cc (octave_value::octave_value (octave_value::all_va_args)):
12253 * ov.h (octave_value::is_all_va_args): Delete.
12254 (octave_value::enum all_va_args): Delete.
12256 * pt-pr-code.cc (tree_print_code::visit_octave_user_function_header):
12257 Print "varargout" and "varargin" instead of "...".
12259 * pt-misc.h, pt-misc.cc (tree_parameter_list::convert_to_const_vector):
12260 Arg is now const Cell& instead of tree_va_return_list*.
12262 * ov-usr-fcn.h, ov-usr-fcn.cc (octave_user_function::vr_list,
12263 octave_user_function::curr_va_arg_number):
12264 Delete variables and all uses.
12265 (octave_function::octave_va_start, octave_function::octave_va_arg,
12266 octave_function::octave_vr_val, octave_function::has_varargout):
12267 Delete functions and all uses.
12269 * ov-fcn.h (octave_function::octave_va_start,
12270 octave_function::octave_va_arg, octave_function::octave_vr_val,
12271 octave_function::has_varargout): Delete.
12273 * ov-usr-fcn.cc (Fva_arg, Fva_start, Fvr_val): Delete.
12275 * lex.l ({EL}): Don't handle "..." as varargin or varargout.
12276 * octave.gperf (all_va_args, ALL_VA_ARGS, all_va_args_kw): Delete.
12277 * parse.y (ALL_VA_ARGS): Delete token and all uses.
12279 * defaults.h.in (OCTAVE_DATAROOTDIR): Substitute here.
12280 * toplev.cc (octave_config_info): Add datarootdir to the struct.
12282 2006-06-07 John W. Eaton <jwe@octave.org>
12284 * ov-cell.cc (octave_cell::subsasgn): Handle c-s list object on
12285 RHS if last index is '{'.
12286 * pt-assign.cc (tree_multi_assignment::rvalue): Compute all LHS
12287 lvalues before evaluating RHS. If LHS lvalue expects more than
12288 one output, pass octave_cs_list object to assign method.
12289 * pt-idx.cc (tree_index_expression::lvalue): Compute expected
12290 number of values if '{' index appears last.
12291 * pt-arg-list.cc (tree_argument_list::lvalue_list): New function.
12292 * pt-arg-list.h (tree_argument_list::lvalue_list): Provide decl.
12293 * oct-lvalue.h (octave_lvalue::nel): New data member.
12294 (octave_lvalue::numel): New functions
12295 * oct-obj.cc (octave_value_list::has_magic_colon): New function.
12296 * oct-obj.h (octave_value_list::has_magic_colon): Provide decl.
12297 * pt-arg-list.cc (tree_argument_list::nargout_count): Delete function.
12298 * pt-arg-list.h (tree_argument_list::nargout_count): Delete decl.
12300 2006-06-06 John W. Eaton <jwe@octave.org>
12302 * sighandlers.cc (generic_sig_handler, sigint_handler):
12303 Use strsignal instead of accessing sys_siglist directly.
12304 * siglist.h: Use HAVE_DECL_SYS_SIGLIST instead of SYS_SIGLIST_DECLARED.
12305 * siglist.c: Update sys_siglist.
12306 (init_signals, strsignal): New functions.
12307 * octave.cc (octave_main): Call init_signals here.
12309 * toplev.cc (Foctave_config_info): Delete LIBPLPLOT from struct.
12311 2006-06-05 John W. Eaton <jwe@octave.org>
12313 * pt-assign.cc (Vprint_rhs_assign_val): Delete variable.
12314 (Fprint_rhs_assign_val): Delete function.
12315 tree_simple_assignment::rvalue, tree_multi_assignment::rvalue):
12316 No special case for Vprint_rhs_assign_val.
12318 2006-06-02 John W. Eaton <jwe@octave.org>
12320 * pt-arg-list.h (tree_argument_list::mark_as_simple_assign_lhs,
12321 tree_argument_list::is_simple_assign_lhs): New functions.
12322 (tree_argument_list::simple_assign_lhs): New data member.
12323 * parse.y (assign_lhs): Classify LHS here.
12324 (make_assign_op): Create simple or multi assign op based on
12325 classification of LHS, not its length.
12327 2006-06-01 John W. Eaton <jwe@octave.org>
12329 * Makefile.in (DLD_XSRC): Add __pchip_deriv__.cc to the list.
12331 2006-06-01 David Bateman <dbateman@free.fr>
12333 * DLD-FUNCTIONS/__pchip_deriv__.cc: New file.
12335 2006-05-31 John W. Eaton <jwe@octave.org>
12337 * load-path.h (load_path::set_command_line_path): Make it
12340 2006-05-26 John W. Eaton <jwe@octave.org>
12342 * load-path.cc (genpath, maybe_add_path_elts, Fgenpath, Frehash,
12343 Fpath, Fpathdef): Move here from defaults.cc.
12344 * load-path.cc, load-path.h: New files.
12345 * Makefile.in (INCLUDES, DIST_SRC): Add them to the lists.
12346 * help.cc (make_name_list, simple_help): Use load_path instead of
12347 octave_fcn_file_name_cache.
12348 (Flookfor): Use load_path instead of Vload_path_dir_path.
12349 * octave.cc (octave_main): Likewise.
12350 * parse.y (load_fcn_from_file): Likewise.
12351 * utils.cc (Ffile_in_loadpath, file_in_path, fcn_file_in_path,
12352 oct_file_in_path): Likewise.
12353 * variables.cc (symbol_exist, symbol_out_of_date): Likewise.
12354 * DLD-FUNCTIONS/fftw_wisdom.cc (Ffftw_wisdom): Likewise.
12355 * utils.cc (Ffind_first_of_in_loadpath): Delete.
12356 * input.cc (octave_gets): Call load_path::update here.
12357 * dirfns.cc (octave_change_to_directory): Likewise.
12358 * defaults.cc (VLOADPATH, VDEFAULT_LOADPATH, Vload_path_dir_path,
12359 maybe_add_or_del_packages, update_load_path_dir_path,
12360 execute_default_pkg_add_files, set_load_path): Delete.
12361 * defaults.h.in (Vload_path_dir_path,
12362 execute_default_pkg_add_files, maybe_add_default_load_path,
12363 set_load_path): Delete decls.
12365 * fn-cache.h, fn-cache.cc: Delete.
12366 * Makefile.in (INCLUDES, DIST_SRC): Remove them from the lists.
12368 * input.cc (octave_gets): Only update Vlast_prompt_time if we are
12369 interactive and actually printing a prompt. Don't print prompt if
12370 reading startup files or command line files. Initialize
12371 Vlast_prompt_time to 0.
12373 * pr-output.cc (set_format): Always include space for sign.
12375 2006-05-23 John W. Eaton <jwe@octave.org>
12377 * load-save.cc (Fsave): Use tellp instead of pubseekoff to
12378 determine whether we are at beginning of file.
12380 * ov-intx.h (OCTAVE_VALUE_INT_SCALAR_T::increment,
12381 OCTAVE_VALUE_INT_SCALAR_T::decrement,
12382 OCTAVE_VALUE_INT_MATRIX_T::increment,
12383 OCTAVE_VALUE_INT_MATRIX_T::decrement): New functions.
12384 * OPERATORS/op-int.h (OCTAVE_INSTALL_M_INT_UNOPS,
12385 OCTAVE_INSTALL_S_INT_UNOPS, OCTAVE_M_INT_UNOPS,
12386 OCTAVE_S_INT_UNOPS): Uncomment increment and decrement ops.
12388 2006-05-19 John W. Eaton <jwe@octave.org>
12390 * symtab.cc (SYMBOL_DEF::document): If definition is a function,
12391 also pass doc string to function object.
12392 * ov-fcn.h (octave_function::document): New function.
12393 * defun.cc (print_usage (octave_function *)): New function.
12394 (print_usage (void)): New function.
12395 (print_usage (const std::string&)): Provide for backward
12396 compatibility. Ignore arg.
12397 (Fprint_usage): Don't accept arg.
12398 * defun-int.h (print_usage (void)): Provide decl.
12399 (print_usage (const std::string&)): Tag with GCC_ATTR_DEPRECATED.
12401 2006-05-04 David Bateman <dbateman@free.fr>
12403 * DLD-FUNCTIONS/conv2.cc: New file from Octave Forge.
12404 * Makefile.in (DLD_XSRC): Add it to the list
12406 2006-05-17 Bill Denney <bill@givebillmoney.com>
12408 * help.cc (keywords): Improve and Texinfoize.
12410 2006-05-17 John W. Eaton <jwe@octave.org>
12412 * symtab.cc (Vwhos_line_format): Show class instead of type.
12413 (symbol_table::parse_whos_line_format):
12414 Use 't' for "Type" and 'c' for "Class".
12415 (symbol_record::print_symbol_info_line): Likewise.
12416 (maybe_list_cmp_fcn): Fix casts.
12418 2006-05-11 John W. Eaton <jwe@octave.org>
12420 * octave.cc (IMAGE_PATH_OPTION): New macro.
12421 (usage_string, verbose_usage): Include --image-path option.
12422 (long_opts): Include --image-path.
12423 (octave_main): Handle IMAGE_PATH_OPTION.
12425 * toplev.cc (Foctave_config_info): Delete fcnfilepath, imagepath,
12426 localfcnfilepath, and localoctfilepath from the struct.
12427 * defaults.h.in (OCTAVE_FCNFILEPATH, OCTAVE_IMAGEPATH,
12428 OCTAVE_LOCALFCNFILEPATH, OCTAVE_LOCALOCTFILEPATH): Delete variables.
12430 * octave.cc (octave_main): Call set_exec_path and set_load_path
12431 instead of bind_internal_variable.
12433 * defaults.cc (Fpathdef): Rename from FDEFAULT_LOADPATH.
12434 Don't allow default path to be set.
12435 (Fpath): Rename from FLOADPATH. Make Matlab-compatible.
12436 (update_load_path_dir_path): No need to pass VDEFAULT_LOADPATH to
12437 dir_path constructor now.
12438 (update_exec_path, FDEFAULT_EXEC_PATH,
12439 set_default_default_exec_path, set_default_exec_path,
12440 maybe_add_default_load_path): Delete functions.
12441 (VDEFAULT_EXEC_PATH): Delete variable.
12442 (FEXEC_PATH): Leading and trailing colons no longer special.
12443 (set_exec_path, set_load_path, set_image_path,
12444 maybe_add_path_elts): New functions.
12445 (install_defaults): Call set_exec_path and set_load_path instead
12446 of set_default_exec_path and set_default_path. Don't call
12447 set_default_default_exec_path. Do call set_image_path.
12448 * defaults.cc (genpath, Fgenpath): New functions.
12449 (Vlocal_ver_oct_file_dir, Vlocal_api_oct_file_dir,
12450 Vlocal_oct_file_dir, Vlocal_ver_fcn_file_dir,
12451 Vlocal_api_fcn_file_dir, Vlocal_fcn_file_dir, Vimage_dir):
12453 (set_default_local_ver_oct_file_dir,
12454 set_default_local_api_oct_file_dir,
12455 set_default_local_oct_file_dir,
12456 set_default_local_ver_fcn_file_dir,
12457 set_default_local_api_fcn_file_dir,
12458 set_default_local_fcn_file_dir, set_default_image_dir):
12460 (install_defaults): Call them.
12461 * defaults.h.in (set_exec_path, set_load_path, set_image_path,
12462 Vlocal_ver_oct_file_dir, Vlocal_api_oct_file_dir,
12463 Vlocal_oct_file_dir, Vlocal_ver_fcn_file_dir,
12464 Vlocal_api_fcn_file_dir, Vlocal_fcn_file_dir,
12465 Vlocal_fcn_file_dir, Vimage_dir): Provide decls.
12467 2006-05-10 John W. Eaton <jwe@octave.org>
12469 * ov-cell.cc (Fcellstr): Trim trailing blanks.
12470 * Cell.h (Cell::Cell (const string_vector&)): New arg, TRIM.
12472 * oct-hist.cc (initialize_history, Fhistory_size):
12473 Also call command_history::set_size here.
12475 * defun.cc (Fprint_usage): New function.
12476 * help.cc (display_usage_text): New function.
12478 2006-05-09 Keith Goodman <kwgoodman@gmail.com>
12480 * DLD-FUNCTIONS/rand.cc: Doc string fix.
12482 2006-05-09 Jorge Barros de Abreu <ficmatin01@solar.com.br>
12484 * data.cc (FInf, FNaN): Fix typo in doc string.
12486 2006-05-08 John W. Eaton <jwe@octave.org>
12488 * Makefile.in (DEFUN_PATTERN): Match DEFUNX_DLD.
12489 * mkbuiltins: Handle XDEFUNX_DLD_INTERNAL.
12490 * mkgendoc: Likewise.
12491 * mk-pkg-add: Likewise. Do all the matching with sed.
12492 * defun-int.h (DEFINE_FUNX_INSTALLER_FUN, DEFINE_FUNX_INSTALLER_FUN2,
12493 DEFINE_FUNX_INSTALLER_FUN3): New macros.
12494 (DEFINE_FUN_INSTALLER_FUN3): Define using DEFINE_FUNX_INSTALLER_FUN3.
12495 (DEFUNX_DLD_INTERNAL): New macro.
12496 * defun-dld.h (DEFUNX_DLD): New macro.
12498 * DLD-FUNCTIONS/__gnuplot_raw__.l: Mark __gnuplot_set__ as a
12499 command, not a rawcommand.
12501 * load-save.cc: No need to handle built-in variables.
12502 * help.cc (simple_help): No need to handle built-in variables.
12504 * variables.cc (is_builtin_variable, builtin_string_variable,
12505 builtin_real_scalar_variable, builtin_any_variable):
12507 (Fexist, Fdocument, do_who, Fwho, link_to_builtin_or_function):
12508 No need to handle built-in variables.
12509 * variables.h (is_builtin_variable, builtin_string_variable,
12510 builtin_real_scalar_variable, builtin_any_variable): Delete decls.
12512 * symtab.h (symbol_record::symbol_def::is_builtin_variable,
12513 symbol_record::is_builtin_variable): Delete.
12514 (symbol_record::TYPE): Remove BUILTIN_VARIABLE from enum.
12515 (symbol_record::symbol_def::is_variable, SYMTAB_ALL_TYPES,
12516 SYMTAB_VARIABLES): No need to handle built-in variables now.
12517 (symbol_record::define_builtin_variable,
12518 symbol_record::link_to_builtin_variable): Delete decls.
12519 * symtab.cc (record::define, SYMBOL_DEF::type,
12520 SYMBOL_DEF::type_as_string): No need to handle built-in variables.
12521 (symbol_record::define_builtin_variable): Delete.
12522 (symbol_record::variable_reference): No need to attemp to link to
12525 * utils.cc (check_preference, warn_old_style_preference): Delete.
12526 * utils.h (check_preference): Delete decl.
12528 * defun-int.h: Delete all DEFVAR macros.
12530 * Makefile.in, mkbuiltins: No need for VAR_FILES.
12532 * parse.y (current_script_file_name): Delete all uses.
12533 (clear_current_script_file_name): Delete function.
12535 * variables.cc (symbols_of_variables): Delete DEFVAR and function.
12536 (bind_ans): Lookup ans in curr_sym_tab, not fbi_sym_tab.
12537 SR is no longer static, so we insert value in local scope.
12539 * defun.cc (bind_builtin_variable): Delete function.
12540 * defun-int.h: Delete decl.
12542 * defaults.cc (fftw_wisdom_program): Rename from fftw_wisdom_prog.
12544 (VDEFAULT_LOADPATH): Rename from Vdefault_load_path. Change all uses.
12545 (VLOADPATH): Rename from Vload_path. Change all uses.
12546 (VDEFAULT_EXECPATH): Rename from Vdefault_exec_path. Change all uses.
12547 (VEXECPATH): Rename from Vexec_path. Change all uses.
12548 (VEDITOR): Rename from Veditor. Change all uses.
12549 (Ffftw_wisdom_program, FDEFAULT_LOADPATH, FLOADPATH,
12550 FDEFAULT_EXEC_PATH, FEXEC_PATH, FEDITOR, FIMAGEPATH): New functions.
12551 (fftw_wisdom_program, default_load_path, loadpath,
12552 default_exec_path, exec_path, editor, image_path): Delete functions.
12553 (symbols_of_defaults): Delete DEFVARs and function.
12555 * pr-output.cc (set_output_prec_and_fw): Set Voutput_precision and
12556 Voutput_max_field_width directly instead of calling
12557 bind_builtin_variable.
12559 * octave.cc (octave_main, maximum_braindamage):
12560 Call bind_internal_variable instead of bind_builtin_variable.
12562 * pager.cc (Fmore): Set Vpage_screen_output directly instead of
12563 calling bind_builtin_variable.
12565 * error.cc (Fwarning): Set Vdebug_on_warning directly instead of
12566 calling bind_builtin_variable.
12568 * error.cc (initialize_warning_options): Now static.
12569 (disable_warning, initialize_default_warning_state): New functions.
12571 * error.h (initialize_warning_options): Delete decl.
12572 (initialize_default_warning_state): Provide decl.
12573 * octave.cc (octave_main): Call initialize_default_warning_state
12574 instead initialize_warning_options.
12576 * lex.l (warn_matlab_incompatible, warn_separator_insert,
12577 warn_single_quote_string): Delete functions.
12578 (symbols_of_lex): Delete DEFVARS.
12579 (Vwarn_matlab_incompatible, Vwarn_separator_insert,
12580 Vwarn_single_quote_string): Delete variables.
12581 (maybe_warn_separator_insert, gripe_single_quote_string,
12582 gripe_matlab_incompatible): Call warning_with_id instead of warning.
12584 * variables.h (SET_NONEMPTY_INTERNAL_STRING_VARIABLE,
12585 SET_INTERNAL_VARIABLE_WITH_LIMITS): New macros.
12587 * ls-oct-ascii.cc (Fsave_precision): New function.
12588 (save_precision): Delete function.
12589 (symbols_of_ls_oct_ascii): Delete DEFVAR and function.
12591 * oct-hist.cc (initialize_history): New function.
12592 * oct-hist.h: Provide decl.
12593 * octave.cc (octave_main): Call initialize_history instead of
12594 command_history::read.
12596 * oct-hist.cc (Fhistory_size, Fhistory_file,
12597 Fhistory_timestamp_format_string, Fsaving_history): New functions.
12598 (history_size, history_file, history_timestamp_format_string,
12599 saving_history): Delete functions.
12600 (symbols_of_oct_hist): Delete DEFVARs and function.
12602 * pt-mat.cc (Fstring_fill_char): New function.
12603 (string_fill_char): Delete function.
12604 (symbols_of_pt_mat): Delete DEFVAR and function.
12606 * variables.cc (Fignore_function_time_stamp, ans): New functions.
12607 (ignore_function_time_stamp): Delete function.
12608 (symbols_of_variables): Delete DEFVARs and function.
12610 * oct-procbuf.cc: (Vkluge_procbuf_delay): Delete variable.
12611 (octave_procbuf::open): Never delay after fork.
12612 (kluge_procbuf_delay): Delete function.
12613 (symbols_of_oct_procbuf): Delete DEFVAR and function.
12615 * dirfns.cc (Fconfirm_recursive_rmdir): New function.
12616 (confirm_recursive_rmdir): Delete function.
12617 (symbols_of_dirfns): Delete DEFVAR and function.
12619 * error.cc (initialize_warning_options): Now extern.
12620 Rename from init_warning_options.
12621 * error.h: Provide decl.
12622 * octave.cc (octave_main): Call it here.
12624 * error.cc (Fbeep_on_error, Fdebug_on_error, Fdebug_on_warning):
12626 (beep_on_error, debug_on_error, debug_on_warning): Delete Functions.
12627 (symbols_of_error): Delete DEFVARs and function.
12629 * help.cc (Finfo_file, Finfo_program, Fmakeinfo_program,
12630 Fsuppress_verbose_help_message): New function.
12631 (info_file, info_program, makeinfo_program,
12632 suppress_verbose_help_message): Delete function.
12633 (symbols_of_help): Delete DEFVARs and function.
12634 (Vinfo_program): Rename from Vinfo_prog. Change all uses.
12636 * input.cc (FPS1, FPS2, FPS4, Fcompletion_append_char,
12637 Fecho_executing_commands): New functions.
12638 (ps1, ps2, ps4, completion_append_char, echo_executing_commands):
12640 (symbols_of_input): Delete DEFVARs and function.
12641 (VPS1, VPS2, VPS4): Rename from Vps1, Vps2, Vps4. Change all uses.
12642 (Fecho): Set Vecho_executing_commands directly.
12644 * load-save.cc (crash_dumps_octave_core, Fdefault_save_options,
12645 Foctave_core_file_limit, Foctave_core_file_name,
12646 Foctave_core_file_options, Fsave_header_format_string):
12648 (crash_dumps_octave_core, default_save_options,
12649 octave_core_file_limit, octave_core_file_name,
12650 octave_core_file_options, save_header_format_string):
12652 (symbols_of_load_save): Delete DEFVARs and function.
12654 * ov-base.cc (Fprint_answer_id_name, Fsilent_functions): New functions.
12655 (print_answer_id_name, silent_functions): Delete functions.
12656 (symbols_of_ov_base): Delete DEFVARs and function.
12658 * ov-usr-fcn.cc (Fmax_recursion_depth): New function.
12659 (max_recursion_depth): Delete function.
12660 (symbols_of_ov_usr_fcn): Delete DEFVAR for max_recursion_depth.
12663 * pager.cc (Fpage_output_immediately, Fpage_screen_output, FPAGER):
12665 (page_output_immediately, page_screen_output, pager_binary):
12667 (symbols_of_pager): Delete DEFVARs and function.
12668 (VPAGER): Rename from Vpager_binary. Change all uses.
12670 * pr-output.cc (Ffixed_point_format, Fprint_empty_dimensions,
12671 Fsplit_long_rows, Foutput_max_field_width, Foutput_precision,
12672 Fstruct_levels_to_print): New functions.
12673 (fixed_point_format, print_empty_dimensions, split_long_rows,
12674 output_max_field_width, output_precision, struct_levels_to_print):
12676 (symbols_of_pr_output): Delete DEFVARs and function.
12678 * pt-assign.cc (Fprint_rhs_assign_val): New function.
12679 (print_rhs_assign_val): Delete function.
12680 (symbols_of_pt_assign): Delete DEFVAR. Delete function.
12682 * sighandlers.cc (Fdebug_on_interrupt, Fsighup_dumps_octave_core,
12683 Fsigterm_dumps_octave_core): New functions.
12684 (debug_on_interrupt, sighup_dumps_octave_core,
12685 sigterm_dumps_octave_core): Delete functions.
12686 (symbols_of_sighanlders): Delete DEFVARs. Delete function.
12688 * symtab.cc (Vdebug_symtab_lookups): Now bool.
12689 (Fdebug_symtab_lookups, Fwhos_line_format,
12690 Fvariables_can_hide_functions): New functions.
12691 (debug_symtab_lookups, whos_line_format,
12692 variables_can_hide_functions): Delete functions.
12693 (symbols_of_symtab): Delete DEFVARs and function.
12695 2006-05-04 David Bateman <dbateman@free.fr>
12697 * DLD-FUNCTIONS/sqqr (Fdmperm): Allow compilation with versions
12698 v2.0.0 of CXSparse or later.
12700 2006-05-04 John W. Eaton <jwe@octave.org>
12702 * variables.cc (set_internal_variable): Move here from
12703 DLD-FUNCTIONS/__gnuplot_raw__.l.
12704 * variables.h (SET_INTERNAL_VARIABLE): Likewise.
12705 (set_internal_variable): Provide decls.
12707 * DLD-FUNCTIONS/__gnuplot_raw__.l: Convert all DEFVARs to DEFUN_DLDs.
12708 (gnuplot::init): Delete.
12709 (gnuplot::gnuplot): Don't call init here.
12710 (set_internal_variable): New functions.
12711 (SET_INTERNAL_VARIABLE): New macro.
12713 * Makefile.in: Undo changes of 2006-03-16.
12714 * DLD-FUNCTINS/__gnuplot_raw__.l: Move here from __gnuplot_raw__.l.
12715 Undo changes of 2006-03-16.
12717 2006-05-03 David Bateman <dbateman@free.fr>
12719 * ov-base-mat.h: Add caching of matrix type, and code to supply
12720 and copy matrix type.
12721 * ov-bool-mat.h: Add caching to constructor.
12722 * ov-re-mat.h: ditto.
12723 * ov-cx-mat.h: ditto.
12724 * ov.cc: Add to the BoolMatrix, Matrix and the ComplexMatrix
12725 octave_value constructors, the ability to specify the matrix type.
12726 * ov.h: Adapt declaration of above constructors.
12727 (MatrixType matrix_type(void) const, MatrixType matrix_type (const
12728 MatrixType&)): New functions for probing and setting matrix type.
12729 * ov-base.cc (virtual MatrixType matrix_type(void) const, virtual
12730 MatrixType matrix_type (const MatrixType&)): New default functions