IniFile: Make Section's string constructor instances take strings by value

As the name is immediately stored into a class member, a move here is a
better choice.

This also moves the constructor implementations into the cpp file to
avoid an otherwise unnecessary inclusion in the header. This is also
likely a better choice as Section contains several non-trivial members,
so this would avoid potentially inlining a bunch of setup and teardown
code related to them as a side-benefit.
This commit is contained in:
Lioncash 2017-03-22 18:19:53 -04:00
parent 99adc73383
commit 46d74a7760
2 changed files with 8 additions and 2 deletions

View File

@ -39,6 +39,12 @@ void IniFile::ParseLine(const std::string& line, std::string* keyOut, std::strin
const std::string& IniFile::NULL_STRING = ""; const std::string& IniFile::NULL_STRING = "";
IniFile::Section::Section() = default;
IniFile::Section::Section(std::string name_) : name{std::move(name_)}
{
}
void IniFile::Section::Set(const std::string& key, const std::string& newValue) void IniFile::Section::Set(const std::string& key, const std::string& newValue)
{ {
auto it = values.find(key); auto it = values.find(key);

View File

@ -29,8 +29,8 @@ public:
friend class IniFile; friend class IniFile;
public: public:
Section() {} Section();
explicit Section(const std::string& name_) : name(name_) {} explicit Section(std::string name_);
bool Exists(const std::string& key) const; bool Exists(const std::string& key) const;
bool Delete(const std::string& key); bool Delete(const std::string& key);