Commit af33a9f4 authored by Max Kellermann's avatar Max Kellermann

config/Block: allow moving name and value

parent e9a45708
...@@ -40,9 +40,11 @@ struct BlockParam { ...@@ -40,9 +40,11 @@ struct BlockParam {
*/ */
mutable bool used = false; mutable bool used = false;
template<typename N, typename V>
gcc_nonnull_all gcc_nonnull_all
BlockParam(const char *_name, const char *_value, int _line=-1) BlockParam(N &&_name, V &&_value, int _line=-1) noexcept
:name(_name), value(_value), line(_line) {} :name(std::forward<N>(_name)), value(std::forward<V>(_value)),
line(_line) {}
int GetIntValue() const; int GetIntValue() const;
...@@ -92,10 +94,12 @@ struct ConfigBlock { ...@@ -92,10 +94,12 @@ struct ConfigBlock {
return block_params.empty(); return block_params.empty();
} }
template<typename N, typename V>
gcc_nonnull_all gcc_nonnull_all
void AddBlockParam(const char *_name, const char *_value, void AddBlockParam(N &&_name, V &&_value, int _line=-1) noexcept {
int _line=-1) { block_params.emplace_back(std::forward<N>(_name),
block_params.emplace_back(_name, _value, _line); std::forward<V>(_value),
_line);
} }
gcc_nonnull_all gcc_pure gcc_nonnull_all gcc_pure
......
...@@ -43,7 +43,7 @@ CreateConfiguredDatabase(EventLoop &main_event_loop, EventLoop &io_event_loop, ...@@ -43,7 +43,7 @@ CreateConfiguredDatabase(EventLoop &main_event_loop, EventLoop &io_event_loop,
listener, *param); listener, *param);
else if (path != nullptr) { else if (path != nullptr) {
ConfigBlock block(path->line); ConfigBlock block(path->line);
block.AddBlockParam("path", path->value.c_str(), path->line); block.AddBlockParam("path", path->value, path->line);
return DatabaseGlobalInit(main_event_loop, io_event_loop, return DatabaseGlobalInit(main_event_loop, io_event_loop,
listener, block); listener, block);
} else { } else {
...@@ -54,12 +54,12 @@ CreateConfiguredDatabase(EventLoop &main_event_loop, EventLoop &io_event_loop, ...@@ -54,12 +54,12 @@ CreateConfiguredDatabase(EventLoop &main_event_loop, EventLoop &io_event_loop,
return nullptr; return nullptr;
const auto db_file = cache_dir / Path::FromFS(PATH_LITERAL("mpd.db")); const auto db_file = cache_dir / Path::FromFS(PATH_LITERAL("mpd.db"));
const auto db_file_utf8 = db_file.ToUTF8(); auto db_file_utf8 = db_file.ToUTF8();
if (db_file_utf8.empty()) if (db_file_utf8.empty())
return nullptr; return nullptr;
ConfigBlock block; ConfigBlock block;
block.AddBlockParam("path", db_file_utf8.c_str(), -1); block.AddBlockParam("path", std::move(db_file_utf8), -1);
return DatabaseGlobalInit(main_event_loop, io_event_loop, return DatabaseGlobalInit(main_event_loop, io_event_loop,
listener, block); listener, block);
} }
......
...@@ -135,7 +135,7 @@ try { ...@@ -135,7 +135,7 @@ try {
const auto *path = config_get_param(ConfigOption::DB_FILE); const auto *path = config_get_param(ConfigOption::DB_FILE);
ConfigBlock block(path != nullptr ? path->line : -1); ConfigBlock block(path != nullptr ? path->line : -1);
if (path != nullptr) if (path != nullptr)
block.AddBlockParam("path", path->value.c_str(), path->line); block.AddBlockParam("path", path->value, path->line);
Database *db = plugin->create(init.GetEventLoop(), Database *db = plugin->create(init.GetEventLoop(),
init.GetEventLoop(), init.GetEventLoop(),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment