changeset 17510:7542f4496974

eliminate some macros in version.h * version.cc: New file. * Makefile.am (DIST_SRC, liboctinterp_la_SOURCES): Add it to the lists. * version.cc, version.in.h (octave_www_statement, octave_contrib_statement, octave_bugs_statement, octave_name_version_and_copyright, octave_name_version_copyright_copying_and_warranty, octave_name_version_copyright_copying_warranty_and_bugs, octave_startup_message): New functions. * version.cc (octave_warranty_statement, format_url): New static functions. * version.in.h (OCTAVE_API_VERSION_NUMBER, OCTAVE_NAME_AND_VERSION, OCTAVE_CONFIG_STATEMENT, OCTAVE_COPYING_STATEMENT, X_OCTAVE_WARRANTY_STATEMENT, OCTAVE_WARRANTY_STATEMENT, OCTAVE_WWW_STATEMENT, OCTAVE_CONTRIB_STATEMENT OCTAVE_BUGS_STATEMENT OCTAVE_NAME_VERSION_AND_COPYRIGHT, OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY, X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY, X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS, OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS, OCTAVE_STARTUP_MESSAGE): Delete macros. Change all uses to new functions.
author John W. Eaton <jwe@octave.org>
date Sat, 28 Sep 2013 15:04:14 -0400
parents d0fa3568eb5d
children 2298f8c7c615
files libgui/src/main-window.cc libinterp/Makefile.am libinterp/corefcn/toplev.cc libinterp/octave.cc libinterp/version.cc libinterp/version.in.h
diffstat 6 files changed, 160 insertions(+), 62 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/main-window.cc	Thu Sep 26 15:28:33 2013 -0400
+++ b/libgui/src/main-window.cc	Sat Sep 28 15:04:14 2013 -0400
@@ -542,9 +542,11 @@
 void
 main_window::show_about_octave (void)
 {
-  QString message = OCTAVE_STARTUP_MESSAGE;
+  std::string message
+    = octave_name_version_copyright_copying_warranty_and_bugs (true);
 
-  QMessageBox::about (this, tr ("About Octave"), message);
+  QMessageBox::about (this, tr ("About Octave"),
+                      QString::fromStdString (message));
 }
 
 void
--- a/libinterp/Makefile.am	Thu Sep 26 15:28:33 2013 -0400
+++ b/libinterp/Makefile.am	Sat Sep 28 15:04:14 2013 -0400
@@ -124,6 +124,7 @@
 
 DIST_SRC = \
   octave.cc \
+  version.cc \
   $(OCTAVE_VALUE_SRC) \
   $(PARSE_TREE_SRC) \
   $(PARSER_SRC) \
@@ -154,6 +155,7 @@
 
 liboctinterp_la_SOURCES = \
   octave.cc \
+  version.cc \
   $(OPERATORS_SRC) \
   $(TEMPLATE_INST_SRC)
 
--- a/libinterp/corefcn/toplev.cc	Thu Sep 26 15:28:33 2013 -0400
+++ b/libinterp/corefcn/toplev.cc	Sat Sep 28 15:04:14 2013 -0400
@@ -810,8 +810,7 @@
 {
   octave_value_list retval;
 
-  octave_stdout << "\n" \
-    OCTAVE_NAME_VERSION_AND_COPYRIGHT "\n\
+  octave_stdout << "\n" << octave_name_version_and_copyright () << "\n\
 \n\
 GNU Octave free software; you can redistribute it and/or modify\n\
 it under the terms of the GNU General Public License as published by\n\
--- a/libinterp/octave.cc	Thu Sep 26 15:28:33 2013 -0400
+++ b/libinterp/octave.cc	Sat Sep 28 15:04:14 2013 -0400
@@ -516,7 +516,8 @@
 static void
 verbose_usage (void)
 {
-  std::cout << OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY "\n\
+  std::cout << octave_name_version_copyright_copying_and_warranty ()
+            << "\n\
 \n\
 Usage: octave [options] [FILE]\n\
 \n\
@@ -556,11 +557,12 @@
   FILE                    Execute commands from FILE.  Exit when done\n\
                           unless --persist is also specified.\n\
 \n"
-OCTAVE_WWW_STATEMENT "\n\
-\n"
-OCTAVE_CONTRIB_STATEMENT "\n\
-\n"
-OCTAVE_BUGS_STATEMENT "\n";
+            << octave_www_statement ()
+            << "\n\n"
+            << octave_contrib_statement ()
+            << "\n\n"
+            << octave_bugs_statement ()
+            << "\n";
 
   exit (0);
 }
@@ -577,7 +579,8 @@
 static void
 print_version_and_exit (void)
 {
-  std::cout << OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS "\n";
+  std::cout << octave_name_version_copyright_copying_warranty_and_bugs ()
+            << "\n";
   exit (0);
 }
 
@@ -941,7 +944,7 @@
 octave_execute_interpreter (void)
 {
   if (! inhibit_startup_message)
-    std::cout << OCTAVE_STARTUP_MESSAGE "\n" << std::endl;
+    std::cout << octave_startup_message () << "\n" << std::endl;
 
   execute_startup_files ();
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libinterp/version.cc	Sat Sep 28 15:04:14 2013 -0400
@@ -0,0 +1,131 @@
+/*
+
+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;
+}
--- a/libinterp/version.in.h	Thu Sep 26 15:28:33 2013 -0400
+++ b/libinterp/version.in.h	Sat Sep 28 15:04:14 2013 -0400
@@ -26,67 +26,28 @@
 
 #define OCTAVE_VERSION %OCTAVE_VERSION%
 
-#define OCTAVE_API_VERSION_NUMBER %OCTAVE_API_VERSION_NUMBER%
-
 #define OCTAVE_API_VERSION %OCTAVE_API_VERSION%
 
 #define OCTAVE_RELEASE_DATE %OCTAVE_RELEASE_DATE%
 
 #define OCTAVE_COPYRIGHT %OCTAVE_COPYRIGHT%
 
-// This is the first line printed by --version.  The GNU coding
-// standards say that the version number should follow the last space
-// on the line.
-
-#define OCTAVE_NAME_AND_VERSION "GNU Octave, version " OCTAVE_VERSION
+extern std::string octave_www_statement (bool html = false);
 
-#define OCTAVE_CONFIG_STATEMENT \
-  "Octave was configured for \"" OCTAVE_CANONICAL_HOST_TYPE "\"."
-
-#define OCTAVE_COPYING_STATEMENT \
-  "This is free software; see the source code for copying conditions."
+extern std::string octave_contrib_statement (bool html = false);
 
-#define X_OCTAVE_WARRANTY_STATEMENT(ARG) \
-  "There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or\n\
-FITNESS FOR A PARTICULAR PURPOSE." ARG
-
-#define OCTAVE_WARRANTY_STATEMENT \
-  X_OCTAVE_WARRANTY_STATEMENT ("")
+extern std::string octave_bugs_statement (bool html = false);
 
-#define OCTAVE_WWW_STATEMENT \
-  "Additional information about Octave is available at http://www.octave.org."
-
-#define OCTAVE_CONTRIB_STATEMENT \
-  "Please contribute if you find this software useful.\n\
-For more information, visit http://www.octave.org/get-involved.html"
+extern std::string octave_name_version_and_copyright (void);
 
-#define OCTAVE_BUGS_STATEMENT \
-  "Read http://www.octave.org/bugs.html to learn how to submit bug reports."
-
-#define OCTAVE_NAME_VERSION_AND_COPYRIGHT \
-  OCTAVE_NAME_AND_VERSION "\n" \
-  OCTAVE_COPYRIGHT
-
-#define OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY \
-  X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY("") \
+extern std::string
+octave_name_version_copyright_copying_and_warranty
+  (bool html = false, const std::string& extra_info = std::string ());
 
-#define X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY(ARG) \
-  OCTAVE_NAME_VERSION_AND_COPYRIGHT "\n" \
-  OCTAVE_COPYING_STATEMENT "\n" \
-  X_OCTAVE_WARRANTY_STATEMENT (ARG) "\n\n" \
-  OCTAVE_CONFIG_STATEMENT
+extern std::string
+octave_name_version_copyright_copying_warranty_and_bugs
+  (bool html = false, const std::string& extra_info = std::string ());
 
-#define X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS(ARG) \
-  X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY(ARG) "\n\n" \
-  OCTAVE_WWW_STATEMENT "\n\n" \
-  OCTAVE_CONTRIB_STATEMENT "\n\n" \
-  OCTAVE_BUGS_STATEMENT
+extern std::string octave_startup_message (bool html = false);
 
-#define OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS \
-  X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS ("")
-
-#define OCTAVE_STARTUP_MESSAGE \
-  X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS \
-    ("  For details, type 'warranty'.") "\n\n" \
-  "For information about changes from previous versions, type 'news'."
 #endif