Utility functions for formatting string values
authorTeemu Murtola <teemu.murtola@gmail.com>
Sun, 26 Mar 2017 11:30:25 +0000 (14:30 +0300)
committerAleksei Iupinov <a.yupinov@gmail.com>
Tue, 4 Apr 2017 11:26:36 +0000 (13:26 +0200)
Add functions to convert various values to strings to strconvert.h, and
use these in a few places for consistency.  Move a related function from
stringutil.h as well to the same location.

Change-Id: Iac9e1574c3571e26011a32598d51bd3349d33329

src/gromacs/correlationfunctions/autocorr.cpp
src/gromacs/gmxpreprocess/vsite_parm.cpp
src/gromacs/math/vecdump.cpp
src/gromacs/mdlib/forcerec.cpp
src/gromacs/mdtypes/inputrec.cpp
src/gromacs/options/basicoptions.cpp
src/gromacs/topology/topology.cpp
src/gromacs/utility/compare.cpp
src/gromacs/utility/strconvert.h
src/gromacs/utility/stringutil.h
src/testutils/cmdlinetest.cpp

index d851184d3bed0c9b5b6c169a2c00a99ff0929d25..22b1ad04c79c049b8f5a49f80410e85a067123b6 100644 (file)
@@ -64,7 +64,7 @@
 #include "gromacs/utility/futil.h"
 #include "gromacs/utility/real.h"
 #include "gromacs/utility/smalloc.h"
-#include "gromacs/utility/stringutil.h"
+#include "gromacs/utility/strconvert.h"
 
 /*! \brief Shortcut macro to select modes. */
 #define MODE(x) ((mode & (x)) == (x))
index 47aa1f1b45b1bd10f245389df1014ecf9fc2b8fb..1b9ea7770a401f6383b43b0ab989c5b179f3ff11 100644 (file)
@@ -59,7 +59,7 @@
 #include "gromacs/utility/fatalerror.h"
 #include "gromacs/utility/gmxassert.h"
 #include "gromacs/utility/smalloc.h"
-#include "gromacs/utility/stringutil.h"
+#include "gromacs/utility/strconvert.h"
 
 typedef struct {
     t_iatom  a[4];
index ea70c75805a81bd36ebc4109d4d0c9abb4168cc5..b97f64f3c31236bb67a3cac53aca91defb6604d8 100644 (file)
@@ -42,7 +42,7 @@
 #include <cstdlib>
 
 #include "gromacs/math/vec.h"
-#include "gromacs/utility/stringutil.h"
+#include "gromacs/utility/strconvert.h"
 #include "gromacs/utility/txtdump.h"
 
 void pr_ivec(FILE *fp, int indent, const char *title, const int vec[], int n, gmx_bool bShowNumbers)
index 40fee0bdce9d91d789ed2a50e759fc12fc5132cd..4815eb0a15c1dd283dd63ef6ad5dcb99079fc814 100644 (file)
@@ -96,7 +96,7 @@
 #include "gromacs/utility/logger.h"
 #include "gromacs/utility/pleasecite.h"
 #include "gromacs/utility/smalloc.h"
-#include "gromacs/utility/stringutil.h"
+#include "gromacs/utility/strconvert.h"
 
 #include "nbnxn_gpu_jit_support.h"
 
index 808fa1977f0735345510a41ca9a01125f869503d..028582d1883c1a959cad9696b890c9087a82142d 100644 (file)
@@ -55,7 +55,7 @@
 #include "gromacs/utility/keyvaluetree.h"
 #include "gromacs/utility/smalloc.h"
 #include "gromacs/utility/snprintf.h"
-#include "gromacs/utility/stringutil.h"
+#include "gromacs/utility/strconvert.h"
 #include "gromacs/utility/textwriter.h"
 #include "gromacs/utility/txtdump.h"
 
index 31f9ceb7b82240e0528f7aa352a30b906395f94b..57e691f74f0dfb08aebb7eed27a937d5d569c241 100644 (file)
@@ -182,7 +182,7 @@ BooleanOption::createStorage(const OptionManagerContainer & /*managers*/) const
 
 std::string IntegerOptionStorage::formatSingleValue(const int &value) const
 {
-    return formatString("%d", value);
+    return toString(value);
 }
 
 void IntegerOptionStorage::initConverter(ConverterType *converter)
@@ -224,7 +224,7 @@ IntegerOption::createStorage(const OptionManagerContainer & /*managers*/) const
 
 std::string Int64OptionStorage::formatSingleValue(const gmx_int64_t &value) const
 {
-    return formatString("%" GMX_PRId64, value);
+    return toString(value);
 }
 
 void Int64OptionStorage::initConverter(ConverterType *converter)
@@ -268,7 +268,7 @@ std::string DoubleOptionStorage::typeString() const
 
 std::string DoubleOptionStorage::formatSingleValue(const double &value) const
 {
-    return formatString("%g", value / factor_);
+    return toString(value / factor_);
 }
 
 void DoubleOptionStorage::initConverter(ConverterType *converter)
@@ -361,7 +361,7 @@ std::string FloatOptionStorage::typeString() const
 
 std::string FloatOptionStorage::formatSingleValue(const float &value) const
 {
-    return formatString("%g", value / factor_);
+    return toString(value / factor_);
 }
 
 void FloatOptionStorage::initConverter(ConverterType *converter)
index 29e04753394062963d6a8e707435dca993070684..f194f23af7b13c95a605a101126dab0e879ae84b 100644 (file)
@@ -49,7 +49,7 @@
 #include "gromacs/topology/symtab.h"
 #include "gromacs/utility/compare.h"
 #include "gromacs/utility/smalloc.h"
-#include "gromacs/utility/stringutil.h"
+#include "gromacs/utility/strconvert.h"
 #include "gromacs/utility/txtdump.h"
 
 const char *gtypes[egcNR+1] = {
index f4ac6a74ec3576466d49f8b96efb2e8d20884afa..3f170b59e9cc5f8f5b9104d536d55ea844bfad48 100644 (file)
@@ -44,7 +44,7 @@
 #include <cstdio>
 #include <cstring>
 
-#include "gromacs/utility/stringutil.h"
+#include "gromacs/utility/strconvert.h"
 
 void cmp_int(FILE *fp, const char *s, int index, int i1, int i2)
 {
index 8275e3212580964c6dde8d302bc7550053886903..4b6f13c91354e16bf97b844c418a2d1571cde24d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2016, by the GROMACS development team, led by
+ * Copyright (c) 2016,2017, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
  */
 /*! \libinternal \file
  * \brief
- * Declares common utility functions for conversions from strings.
+ * Declares common utility functions for conversions to and from strings.
  *
  * \author Teemu Murtola <teemu.murtola@gmail.com>
+ * \author Mark Abraham <mark.j.abraham@gmail.com>
  * \inlibraryapi
  * \ingroup module_utility
  */
@@ -46,6 +47,7 @@
 #include <string>
 
 #include "gromacs/utility/basedefinitions.h"
+#include "gromacs/utility/stringutil.h"
 
 namespace gmx
 {
@@ -134,6 +136,49 @@ float fromString<float>(const char *str) { return floatFromString(str); }
 template <> inline
 double fromString<double>(const char *str) { return doubleFromString(str); }
 
+/*! \brief
+ * Converts a boolean to a "true"/"false" string.
+ *
+ * Does not throw.
+ */
+static inline const char *boolToString(bool value)
+{
+    return value ? "true" : "false";
+}
+/*! \brief
+ * Returns a string containing the value of \c t.
+ *
+ * \throws std::bad_alloc if out of memory.
+ */
+static inline std::string intToString(int t)
+{
+    return formatString("%d", t);
+}
+//! \copydoc intToString(int)
+static inline std::string int64ToString(gmx_int64_t t)
+{
+    return formatString("%" GMX_PRId64, t);
+}
+//! \copydoc intToString(int)
+static inline std::string doubleToString(double t)
+{
+    return formatString("%g", t);
+}
+
+/*! \name
+ * Overloads for converting a value of a given type to a string.
+ *
+ * \throws std::bad_alloc if out of memory.
+ * \{
+ */
+static inline std::string toString(bool t) { return boolToString(t); }
+static inline std::string toString(int t) { return intToString(t); }
+static inline std::string toString(gmx_int64_t t) { return int64ToString(t); }
+static inline std::string toString(float t) { return doubleToString(t); }
+static inline std::string toString(double t) { return doubleToString(t); }
+static inline std::string toString(std::string t) { return t; }
+//! \}
+
 //! \}
 //! \endcond
 
index b8961bb383c95fd6cdaaedf5cd32fe1ad5baeb99..2c0be63baa9c37d52b6a027d2fbbde9be65d0fa6 100644 (file)
@@ -320,16 +320,6 @@ std::string joinStrings(const char *const (&array)[count], const char *separator
     return joinStrings(array, array + count, separator);
 }
 
-/*! \brief
- * Converts a boolean to a "true"/"false" string.
- *
- * Does not throw.
- */
-static inline const char *boolToString(bool value)
-{
-    return value ? "true" : "false";
-}
-
 /*! \brief
  * Splits a string to whitespace separated tokens.
  *
index 1f79ee3486ed62a45596041b045721f91a5ce595..ca6804b570259c399abfd93d5c00b755e971ddf0 100644 (file)
@@ -57,6 +57,7 @@
 #include "gromacs/utility/arrayref.h"
 #include "gromacs/utility/filestream.h"
 #include "gromacs/utility/gmxassert.h"
+#include "gromacs/utility/strconvert.h"
 #include "gromacs/utility/stringstream.h"
 #include "gromacs/utility/stringutil.h"
 #include "gromacs/utility/textreader.h"
@@ -159,20 +160,6 @@ void CommandLine::append(const char *arg)
     impl_->argc_ = static_cast<int>(newSize);
 }
 
-namespace
-{
-
-//! Helper function for converting values to strings
-template <typename T>
-std::string value2string(T value)
-{
-    std::stringstream ss;
-    ss << value;
-    return ss.str();
-}
-
-}       // namespace
-
 void CommandLine::addOption(const char *name)
 {
     append(name);
@@ -192,13 +179,13 @@ void CommandLine::addOption(const char *name, const std::string &value)
 void CommandLine::addOption(const char *name, int value)
 {
     append(name);
-    append(value2string(value));
+    append(gmx::toString(value));
 }
 
 void CommandLine::addOption(const char *name, double value)
 {
     append(name);
-    append(value2string(value));
+    append(gmx::toString(value));
 }
 
 void CommandLine::merge(const CommandLine &args)