EPANET  3.0
EPANET Development Project
utilities.h
Go to the documentation of this file.
1 /* EPANET 3
2  *
3  * Copyright (c) 2016 Open Water Analytics
4  * Distributed under the MIT License (see the LICENSE file for details).
5  *
6  */
7 
10 
11 #ifndef UTILITIES_H_
12 #define UTILITIES_H_
13 
14 #include <string>
15 #include <sstream>
16 #include <vector>
17 
20 
21 class Utilities
22 {
23  public:
24 
26  template<class Seq> static void purge(Seq& c)
27  {
28  typename Seq::iterator i;
29  for (i = c.begin(); i != c.end(); i++) delete *i;
30  c.clear();
31  }
32 
34  static bool getTmpFileName(std::string& fname);
35 
37  static std::string getFileName(const std::string s);
38 
40  static std::string upperCase(const std::string& s);
41 
43  static int findMatch(const std::string& s, const char* slist[]);
44 
46  static int findFullMatch(const std::string& s, const char* slist[]);
47 
49  static bool match(const std::string& s1, const std::string& s2);
50 
52  static int getSeconds(const std::string& strTime, const std::string& strUnits);
53 
55  static void removeQuotes(std::string& s);
56 
58  static std::string getTime(int seconds);
59 
61  static int sign(double x)
62  { return (x < 0 ? -1 : 1); }
63 
65  static void split(std::vector<std::string>& tokens, const std::string& str);
66  static std::vector<std::string> split(const std::string& str);
67 
69  template <typename T>
70  static std::string to_string(T const& value)
71  {
72  std::stringstream sstr;
73  sstr << value;
74  return sstr.str();
75  }
76 
78  template <typename T>
79  static bool parseNumber(const std::string& s, T &x)
80  {
81  std::stringstream ss(s);
82  ss >> x;
83  return !ss.fail();
84  }
85 
86 };
87 
88 #endif
static int sign(double x)
Returns the sign of a number (-1 or +1)
Definition: utilities.h:61
static std::string to_string(T const &value)
Converts a number to a string.
Definition: utilities.h:70
static int findFullMatch(const std::string &s, const char *slist[])
Matches full string with those in a list.
Definition: utilities.cpp:125
Utility functions used throughout EPANET.
Definition: utilities.h:21
static void purge(Seq &c)
Template function to purge the contents of a container class.
Definition: utilities.h:26
static std::string getTime(int seconds)
Converts number of seconds into hr:min:sec string.
Definition: utilities.cpp:227
static int findMatch(const std::string &s, const char *slist[])
Matches a string with those in a list (case insensitive).
Definition: utilities.cpp:109
static bool getTmpFileName(std::string &fname)
Generates the name of a temporary file.
Definition: utilities.cpp:34
static std::string upperCase(const std::string &s)
Converts a string to upper case.
Definition: utilities.cpp:96
static bool match(const std::string &s1, const std::string &s2)
Checks if one string is a leading substring of another (case insensitive).
Definition: utilities.cpp:140
static std::string getFileName(const std::string s)
Extracts a file name from a full path.
Definition: utilities.cpp:56
static void removeQuotes(std::string &s)
Removes double quotes that surround a string.
Definition: utilities.cpp:164
static bool parseNumber(const std::string &s, T &x)
Converts a numeric string into a floating point value.
Definition: utilities.h:79
static int getSeconds(const std::string &strTime, const std::string &strUnits)
Converts a string representation of time into a number of seconds.
Definition: utilities.cpp:177
static void split(std::vector< std::string > &tokens, const std::string &str)
Splits a string into tokens separated by whitespace.