From 57729683b69033b2a611f6d2fcd3ae812d3d6f0a Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 18 Jul 2018 11:21:59 +0200 Subject: [PATCH] config/Data: pass new items by rvalue reference --- src/config/Data.cxx | 12 ++++++------ src/config/Data.hxx | 6 ++---- src/config/File.cxx | 12 +++++------- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/config/Data.cxx b/src/config/Data.cxx index 22f8f399d..2188ef804 100644 --- a/src/config/Data.cxx +++ b/src/config/Data.cxx @@ -56,9 +56,9 @@ Append(std::forward_list &list, T &&src) void ConfigData::AddParam(ConfigOption option, - std::unique_ptr param) noexcept + ConfigParam &¶m) noexcept { - Append(GetParamList(option), std::move(*param)); + Append(GetParamList(option), std::move(param)); } const char * @@ -144,9 +144,9 @@ ConfigData::GetBool(ConfigOption option, bool default_value) const ConfigBlock & ConfigData::AddBlock(ConfigBlockOption option, - std::unique_ptr block) noexcept + ConfigBlock &&block) noexcept { - return *Append(GetBlockList(option), std::move(*block)); + return *Append(GetBlockList(option), std::move(block)); } const ConfigBlock * @@ -172,8 +172,8 @@ ConfigData::MakeBlock(ConfigBlockOption option, { auto *block = const_cast(FindBlock(option, key, value)); if (block == nullptr) { - auto new_block = std::make_unique(); - new_block->AddBlockParam(key, value); + ConfigBlock new_block; + new_block.AddBlockParam(key, value); block = &AddBlock(option, std::move(new_block)); } diff --git a/src/config/Data.hxx b/src/config/Data.hxx index 2a0cc87e7..3e0495ad3 100644 --- a/src/config/Data.hxx +++ b/src/config/Data.hxx @@ -27,7 +27,6 @@ #include #include #include -#include struct ConfigParam; struct ConfigBlock; @@ -47,8 +46,7 @@ struct ConfigData { return params[size_t(option)]; } - void AddParam(ConfigOption option, - std::unique_ptr param) noexcept; + void AddParam(ConfigOption option, ConfigParam &¶m) noexcept; gcc_pure const ConfigParam *GetParam(ConfigOption option) const noexcept { @@ -102,7 +100,7 @@ struct ConfigData { } ConfigBlock &AddBlock(ConfigBlockOption option, - std::unique_ptr block) noexcept; + ConfigBlock &&block) noexcept; gcc_pure const ConfigBlock *GetBlock(ConfigBlockOption option) const noexcept { diff --git a/src/config/File.cxx b/src/config/File.cxx index 7610cecf9..29c073f3b 100644 --- a/src/config/File.cxx +++ b/src/config/File.cxx @@ -32,8 +32,6 @@ #include "fs/io/BufferedReader.hxx" #include "Log.hxx" -#include - #include static constexpr char CONF_COMMENT = '#'; @@ -74,10 +72,10 @@ config_read_name_value(ConfigBlock &block, char *input, unsigned line) block.AddBlockParam(name, std::move(value), line); } -static std::unique_ptr +static ConfigBlock config_read_block(BufferedReader &reader) { - std::unique_ptr block(new ConfigBlock(reader.GetLineNumber())); + ConfigBlock block(reader.GetLineNumber()); while (true) { char *line = reader.ReadLine(); @@ -101,7 +99,7 @@ config_read_block(BufferedReader &reader) /* parse name and value */ - config_read_name_value(*block, line, + config_read_name_value(block, line, reader.GetLineNumber()); } } @@ -150,8 +148,8 @@ ReadConfigParam(ConfigData &config_data, BufferedReader &reader, /* now parse the block or the value */ - config_data.AddParam(o, std::make_unique(ExpectValueAndEnd(tokenizer), - reader.GetLineNumber())); + config_data.AddParam(o, ConfigParam(ExpectValueAndEnd(tokenizer), + reader.GetLineNumber())); } static void