Mercurial > octave-dspies
view libinterp/version.cc @ 18650:491b0adfec95
compatibility fixes for printf integer format specifiers
Attempt to handle automatic conversion from integer floating point
format in a way that is more compatible with Matlab behavior,
including working properly for 64-bit integer values.
* ov-base-diag.cc, ov-base-diag.h, ov-base-scalar.cc,
ov-base-scalar.h, ov-base-sparse.cc, ov-base-sparse.h, ov-perm.cc,
ov-perm.h, ov-range.cc, ov-range.h:
Provide fast_elem_extract member function.
* oct-stream.cc, oct-stream.h
(printf_format_list::process_conversion): Ignore modifiers for integer
formats.
(printf_value_cache::curr_val): Store octave_value instead of NDArray.
(printf_value_cache::data): Delete.
(printf_value_cache::have_data): New member variable.
(printf_value_cache::get_next_value): Rename from double_value, return
individual value as an octave_value object instead of a double.
(is_nan_or_inf, ok_for_signed_int_conv, ok_for_unsigned_int_conv,
switch_to_g_format): New static functions.
(DO_DOUBLE_CONV_1, DO_DOUBLE_CONV): Delete macros.
(octave_base_stream::do_numeric_printf_conv): New function.
(octave_base_stream::do_printf): Move code for handling numeric
formats to do_numeric_printf_conv.
* datestr.m: Round value for %d format.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 15 Apr 2014 14:12:56 -0400 |
parents | 175b392e91fe |
children |
line wrap: on
line source
/* Copyright (C) 2013 John W. Eaton This file is part of Octave. Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see <http://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <string> #include "defaults.h" #include "version.h" static std::string octave_warranty_statement (const std::string& extra_info = std::string ()) { return "There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or\n\ FITNESS FOR A PARTICULAR PURPOSE." + extra_info; } static std::string format_url (bool html, const std::string& url) { return html ? "<a href=\"" + url + "\">" + url + "</a>" : url; } std::string octave_www_statement (bool html) { return "Additional information about Octave is available at " + format_url (html, "http://www.octave.org."); } std::string octave_contrib_statement (bool html) { return "Please contribute if you find this software useful.\n\ For more information, visit " + format_url (html, "http://www.octave.org/get-involved.html"); } std::string octave_bugs_statement (bool html) { return "Read " + format_url (html, "http://www.octave.org/bugs.html") + " to learn how to submit bug reports."; } std::string octave_name_version_and_copyright (void) { // The GNU coding standards say that on the first line printed by // --version, the version number should follow the last space on the // line. return "GNU Octave, version " OCTAVE_VERSION "\n" OCTAVE_COPYRIGHT; } std::string octave_name_version_copyright_copying_and_warranty (bool html, const std::string& extra_info) { std::string br = html ? "<br>\n" : "\n"; std::string sep = html ? "\n</p>\n<p>\n" : "\n\n"; return octave_name_version_and_copyright () + br + "This is free software; see the source code for copying conditions." + br + octave_warranty_statement (extra_info) + sep + "Octave was configured for \"" OCTAVE_CANONICAL_HOST_TYPE "\"."; } std::string octave_name_version_copyright_copying_warranty_and_bugs (bool html, const std::string& extra_info) { std::string sep = html ? "\n</p>\n<p>\n" : "\n\n"; std::string msg; if (html) msg = "<p>\n"; msg += octave_name_version_copyright_copying_and_warranty (html, extra_info) + sep + octave_www_statement (html) + sep + octave_contrib_statement (html) + sep + octave_bugs_statement (html) + (html ? "\n</p>" : ""); return msg; } std::string octave_startup_message (bool html) { std::string msg = octave_name_version_copyright_copying_warranty_and_bugs (html, " For details, type 'warranty'."); msg += (html ? "<p>\n" : "\n"); msg += "For information about changes from previous versions, type 'news'."; msg += (html ? "\n</p>" : ""); return msg; }