benchmark
1.6.1
Toggle main menu visibility
Loading...
Searching...
No Matches
string_util.h
1
#ifndef BENCHMARK_STRING_UTIL_H_
2
#define BENCHMARK_STRING_UTIL_H_
3
4
#include <sstream>
5
#include <string>
6
#include <utility>
7
8
#include "internal_macros.h"
9
10
namespace
benchmark {
11
12
void
AppendHumanReadable(
int
n, std::string* str);
13
14
std::string HumanReadableNumber(
double
n,
double
one_k = 1024.0);
15
16
#if defined(__MINGW32__)
17
__attribute__((format(__MINGW_PRINTF_FORMAT, 1, 2)))
18
#elif defined(__GNUC__)
19
__attribute__((format(printf, 1, 2)))
20
#endif
21
std::string
22
StrFormat(
const
char
* format, ...);
23
24
inline
std::ostream& StrCatImp(std::ostream& out) BENCHMARK_NOEXCEPT {
25
return
out;
26
}
27
28
template
<
class
First,
class
... Rest>
29
inline
std::ostream& StrCatImp(std::ostream& out, First&& f, Rest&&... rest) {
30
out << std::forward<First>(f);
31
return
StrCatImp(out, std::forward<Rest>(rest)...);
32
}
33
34
template
<
class
... Args>
35
inline
std::string StrCat(Args&&... args) {
36
std::ostringstream ss;
37
StrCatImp(ss, std::forward<Args>(args)...);
38
return
ss.str();
39
}
40
41
std::vector<std::string> StrSplit(
const
std::string& str,
char
delim);
42
43
// Disable lint checking for this block since it re-implements C functions.
44
// NOLINTBEGIN
45
#ifdef BENCHMARK_STL_ANDROID_GNUSTL
46
/*
47
* GNU STL in Android NDK lacks support for some C++11 functions, including
48
* stoul, stoi, stod. We reimplement them here using C functions strtoul,
49
* strtol, strtod. Note that reimplemented functions are in benchmark::
50
* namespace, not std:: namespace.
51
*/
52
unsigned
long
stoul(
const
std::string& str,
size_t
* pos =
nullptr
,
53
int
base = 10);
54
int
stoi(
const
std::string& str,
size_t
* pos =
nullptr
,
int
base = 10);
55
double
stod(
const
std::string& str,
size_t
* pos =
nullptr
);
56
#else
57
using
std::stod;
// NOLINT(misc-unused-using-decls)
58
using
std::stoi;
// NOLINT(misc-unused-using-decls)
59
using
std::stoul;
// NOLINT(misc-unused-using-decls)
60
#endif
61
// NOLINTEND
62
63
}
// end namespace benchmark
64
65
#endif
// BENCHMARK_STRING_UTIL_H_
src
string_util.h
Generated by
1.17.0