Home | History | Annotate | Download | only in src
      1 #ifndef BENCHMARK_STRING_UTIL_H_
      2 #define BENCHMARK_STRING_UTIL_H_
      3 
      4 #include <sstream>
      5 #include <string>
      6 #include <utility>
      7 #include "internal_macros.h"
      8 
      9 namespace benchmark {
     10 
     11 void AppendHumanReadable(int n, std::string* str);
     12 
     13 std::string HumanReadableNumber(double n);
     14 
     15 std::string StringPrintF(const char* format, ...);
     16 
     17 inline std::ostream& StringCatImp(std::ostream& out) BENCHMARK_NOEXCEPT {
     18   return out;
     19 }
     20 
     21 template <class First, class... Rest>
     22 inline std::ostream& StringCatImp(std::ostream& out, First&& f,
     23                                   Rest&&... rest) {
     24   out << std::forward<First>(f);
     25   return StringCatImp(out, std::forward<Rest>(rest)...);
     26 }
     27 
     28 template <class... Args>
     29 inline std::string StrCat(Args&&... args) {
     30   std::ostringstream ss;
     31   StringCatImp(ss, std::forward<Args>(args)...);
     32   return ss.str();
     33 }
     34 
     35 void ReplaceAll(std::string* str, const std::string& from,
     36                 const std::string& to);
     37 
     38 }  // end namespace benchmark
     39 
     40 #endif  // BENCHMARK_STRING_UTIL_H_
     41