提交 5eb79c23 编写于 作者: V Vitaly Baranov

Cast "const char *" to StringRef is now implicit and constexpr.

上级 598b373b
......@@ -27,17 +27,17 @@ struct StringRef
size_t size = 0;
template <typename CharT, typename = std::enable_if_t<sizeof(CharT) == 1>>
StringRef(const CharT * data_, size_t size_) : data(reinterpret_cast<const char *>(data_)), size(size_) {}
constexpr StringRef(const CharT * data_, size_t size_) : data(reinterpret_cast<const char *>(data_)), size(size_) {}
StringRef(const std::string & s) : data(s.data()), size(s.size()) {}
StringRef(const std::string_view & s) : data(s.data()), size(s.size()) {}
explicit StringRef(const char * data_) : data(data_), size(strlen(data_)) {}
StringRef() = default;
constexpr StringRef(const std::string_view & s) : data(s.data()), size(s.size()) {}
constexpr StringRef(const char * data_) : StringRef(std::string_view{data_}) {}
constexpr StringRef() = default;
std::string toString() const { return std::string(data, size); }
explicit operator std::string() const { return toString(); }
explicit operator std::string_view() const { return {data, size}; }
constexpr explicit operator std::string_view() const { return {data, size}; }
};
using StringRefs = std::vector<StringRef>;
......
......@@ -239,11 +239,6 @@ inline void writeFloatText(T x, WriteBuffer & buf)
}
inline void writeString(const String & s, WriteBuffer & buf)
{
buf.write(s.data(), s.size());
}
inline void writeString(const char * data, size_t size, WriteBuffer & buf)
{
buf.write(data, size);
......
......@@ -947,7 +947,7 @@ void Context::setSettings(const Settings & settings_)
}
void Context::setSetting(const String & name, const String & value)
void Context::setSetting(const StringRef & name, const String & value)
{
auto lock = getLock();
if (name == "profile")
......@@ -962,7 +962,7 @@ void Context::setSetting(const String & name, const String & value)
}
void Context::setSetting(const String & name, const Field & value)
void Context::setSetting(const StringRef & name, const Field & value)
{
auto lock = getLock();
if (name == "profile")
......
......@@ -344,8 +344,8 @@ public:
void setSettings(const Settings & settings_);
/// Set settings by name.
void setSetting(const String & name, const String & value);
void setSetting(const String & name, const Field & value);
void setSetting(const StringRef & name, const String & value);
void setSetting(const StringRef & name, const Field & value);
void applySettingChange(const SettingChange & change);
void applySettingsChanges(const SettingsChanges & changes);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册