mirror of
https://github.com/apple/foundationdb.git
synced 2025-05-26 01:10:04 +08:00
Merge pull request #5226 from apple/anoyes/assert-literal-string
Static assert that LiteralStringRef arg is literal string
This commit is contained in:
commit
059ff9b9ad
@ -1401,25 +1401,22 @@ struct RedwoodMetrics {
|
|||||||
metrics = {};
|
metrics = {};
|
||||||
if (!buildFillPctSketch.isValid() ||
|
if (!buildFillPctSketch.isValid() ||
|
||||||
buildFillPctSketch->name() != ("buildFillPct:" + std::to_string(levelCounter))) {
|
buildFillPctSketch->name() != ("buildFillPct:" + std::to_string(levelCounter))) {
|
||||||
buildFillPctSketch = Histogram::getHistogram(LiteralStringRef("buildFillPct"),
|
std::string levelCounterStr = std::to_string(levelCounter);
|
||||||
LiteralStringRef(std::to_string(levelCounter).c_str()),
|
buildFillPctSketch = Histogram::getHistogram(
|
||||||
Histogram::Unit::percentage);
|
LiteralStringRef("buildFillPct"), StringRef(levelCounterStr), Histogram::Unit::percentage);
|
||||||
modifyFillPctSketch = Histogram::getHistogram(LiteralStringRef("modifyFillPct"),
|
modifyFillPctSketch = Histogram::getHistogram(
|
||||||
LiteralStringRef(std::to_string(levelCounter).c_str()),
|
LiteralStringRef("modifyFillPct"), StringRef(levelCounterStr), Histogram::Unit::percentage);
|
||||||
Histogram::Unit::percentage);
|
buildStoredPctSketch = Histogram::getHistogram(
|
||||||
buildStoredPctSketch = Histogram::getHistogram(LiteralStringRef("buildStoredPct"),
|
LiteralStringRef("buildStoredPct"), StringRef(levelCounterStr), Histogram::Unit::percentage);
|
||||||
LiteralStringRef(std::to_string(levelCounter).c_str()),
|
modifyStoredPctSketch = Histogram::getHistogram(
|
||||||
Histogram::Unit::percentage);
|
LiteralStringRef("modifyStoredPct"), StringRef(levelCounterStr), Histogram::Unit::percentage);
|
||||||
modifyStoredPctSketch = Histogram::getHistogram(LiteralStringRef("modifyStoredPct"),
|
|
||||||
LiteralStringRef(std::to_string(levelCounter).c_str()),
|
|
||||||
Histogram::Unit::percentage);
|
|
||||||
buildItemCountSketch = Histogram::getHistogram(LiteralStringRef("buildItemCount"),
|
buildItemCountSketch = Histogram::getHistogram(LiteralStringRef("buildItemCount"),
|
||||||
LiteralStringRef(std::to_string(levelCounter).c_str()),
|
StringRef(levelCounterStr),
|
||||||
Histogram::Unit::count,
|
Histogram::Unit::count,
|
||||||
0,
|
0,
|
||||||
maxRecordCount);
|
maxRecordCount);
|
||||||
modifyItemCountSketch = Histogram::getHistogram(LiteralStringRef("modifyItemCount"),
|
modifyItemCountSketch = Histogram::getHistogram(LiteralStringRef("modifyItemCount"),
|
||||||
LiteralStringRef(std::to_string(levelCounter).c_str()),
|
StringRef(levelCounterStr),
|
||||||
Histogram::Unit::count,
|
Histogram::Unit::count,
|
||||||
0,
|
0,
|
||||||
maxRecordCount);
|
maxRecordCount);
|
||||||
|
10
flow/Arena.h
10
flow/Arena.h
@ -662,7 +662,15 @@ struct Traceable<Standalone<T>> : std::conditional<Traceable<T>::value, std::tru
|
|||||||
static std::string toString(const Standalone<T>& value) { return Traceable<T>::toString(value); }
|
static std::string toString(const Standalone<T>& value) { return Traceable<T>::toString(value); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LiteralStringRef(str) StringRef((const uint8_t*)(str), sizeof((str)) - 1)
|
namespace literal_string_ref {
|
||||||
|
template <class T, int Size>
|
||||||
|
StringRef LiteralStringRefHelper(const char* str) {
|
||||||
|
static_assert(std::is_same_v<T, const char(&)[Size]>, "Argument to LiteralStringRef must be a literal string");
|
||||||
|
return StringRef(reinterpret_cast<const uint8_t*>(str), Size - 1);
|
||||||
|
}
|
||||||
|
} // namespace literal_string_ref
|
||||||
|
#define LiteralStringRef(str) literal_string_ref::LiteralStringRefHelper<decltype(str), sizeof(str)>(str)
|
||||||
|
|
||||||
inline StringRef operator"" _sr(const char* str, size_t size) {
|
inline StringRef operator"" _sr(const char* str, size_t size) {
|
||||||
return StringRef(reinterpret_cast<const uint8_t*>(str), size);
|
return StringRef(reinterpret_cast<const uint8_t*>(str), size);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user