strbuffer: use static initializer instead of variadic constructor
This commit is contained in:
@@ -306,30 +306,30 @@ bool Configuration::read(const std::string &config_path)
|
|||||||
new_header_second_line, "{{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}", adjust_and_validate_format
|
new_header_second_line, "{{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}", adjust_and_validate_format
|
||||||
));
|
));
|
||||||
p.add("now_playing_prefix", buffer(
|
p.add("now_playing_prefix", buffer(
|
||||||
now_playing_prefix, NC::Buffer(NC::Format::Bold), [this](NC::Buffer buf) {
|
now_playing_prefix, NC::Buffer::init(NC::Format::Bold), [this](NC::Buffer buf) {
|
||||||
now_playing_prefix_length = wideLength(ToWString(buf.str()));
|
now_playing_prefix_length = wideLength(ToWString(buf.str()));
|
||||||
return buf;
|
return buf;
|
||||||
}));
|
}));
|
||||||
p.add("now_playing_suffix", buffer(
|
p.add("now_playing_suffix", buffer(
|
||||||
now_playing_suffix, NC::Buffer(NC::Format::NoBold), [this](NC::Buffer buf) {
|
now_playing_suffix, NC::Buffer::init(NC::Format::NoBold), [this](NC::Buffer buf) {
|
||||||
now_playing_suffix_length = wideLength(ToWString(buf.str()));
|
now_playing_suffix_length = wideLength(ToWString(buf.str()));
|
||||||
return buf;
|
return buf;
|
||||||
}));
|
}));
|
||||||
p.add("browser_playlist_prefix", buffer(
|
p.add("browser_playlist_prefix", buffer(
|
||||||
browser_playlist_prefix, NC::Buffer(NC::Color::Red, "playlist", NC::Color::End, ' '), id_()
|
browser_playlist_prefix, NC::Buffer::init(NC::Color::Red, "playlist", NC::Color::End, ' '), id_()
|
||||||
));
|
));
|
||||||
p.add("selected_item_prefix", buffer(
|
p.add("selected_item_prefix", buffer(
|
||||||
selected_item_prefix, NC::Buffer(NC::Color::Magenta), [this](NC::Buffer buf) {
|
selected_item_prefix, NC::Buffer::init(NC::Color::Magenta), [this](NC::Buffer buf) {
|
||||||
selected_item_prefix_length = wideLength(ToWString(buf.str()));
|
selected_item_prefix_length = wideLength(ToWString(buf.str()));
|
||||||
return buf;
|
return buf;
|
||||||
}));
|
}));
|
||||||
p.add("selected_item_suffix", buffer(
|
p.add("selected_item_suffix", buffer(
|
||||||
selected_item_suffix, NC::Buffer(NC::Color::End), [this](NC::Buffer buf) {
|
selected_item_suffix, NC::Buffer::init(NC::Color::End), [this](NC::Buffer buf) {
|
||||||
selected_item_suffix_length = wideLength(ToWString(buf.str()));
|
selected_item_suffix_length = wideLength(ToWString(buf.str()));
|
||||||
return buf;
|
return buf;
|
||||||
}));
|
}));
|
||||||
p.add("modified_item_prefix", buffer(
|
p.add("modified_item_prefix", buffer(
|
||||||
modified_item_prefix, NC::Buffer(NC::Color::Green, "> ", NC::Color::End), id_()
|
modified_item_prefix, NC::Buffer::init(NC::Color::Green, "> ", NC::Color::End), id_()
|
||||||
));
|
));
|
||||||
p.add("song_window_title_format", assign_default<std::string>(
|
p.add("song_window_title_format", assign_default<std::string>(
|
||||||
song_window_title_format, "{%a - }{%t}|{%f}", adjust_and_validate_format
|
song_window_title_format, "{%a - }{%t}|{%f}", adjust_and_validate_format
|
||||||
|
|||||||
@@ -90,12 +90,6 @@ public:
|
|||||||
typedef std::basic_string<CharT> StringType;
|
typedef std::basic_string<CharT> StringType;
|
||||||
typedef std::set<Property> Properties;
|
typedef std::set<Property> Properties;
|
||||||
|
|
||||||
template <typename... Args>
|
|
||||||
BasicBuffer(Args&&... args)
|
|
||||||
{
|
|
||||||
construct(std::forward<Args>(args)...);
|
|
||||||
}
|
|
||||||
|
|
||||||
const StringType &str() const { return m_string; }
|
const StringType &str() const { return m_string; }
|
||||||
const Properties &properties() const { return m_properties; }
|
const Properties &properties() const { return m_properties; }
|
||||||
|
|
||||||
@@ -187,6 +181,16 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// static variadic initializer. used instead of a proper constructor because
|
||||||
|
// it's too polymorphic and would end up invoked as a copy/move constructor.
|
||||||
|
template <typename... Args>
|
||||||
|
static BasicBuffer init(Args&&... args)
|
||||||
|
{
|
||||||
|
BasicBuffer result;
|
||||||
|
result.construct(std::forward<Args>(args)...);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void construct() { }
|
void construct() { }
|
||||||
template <typename ArgT, typename... Args>
|
template <typename ArgT, typename... Args>
|
||||||
|
|||||||
Reference in New Issue
Block a user