diff options
author | wwylele <wwylele@gmail.com> | 2017-01-20 21:30:11 +0200 |
---|---|---|
committer | wwylele <wwylele@gmail.com> | 2017-03-01 23:30:57 +0200 |
commit | 8a8c0f348b0da4fd91c846211ede568a1f0f11c8 (patch) | |
tree | f80158deb9edba170bf73ddfe93326d02976ad09 /src/common/param_package.h | |
parent | ad4097e75cdf37a8f9198c67aec2b160858347c0 (diff) |
Common: add ParamPackage
Diffstat (limited to 'src/common/param_package.h')
-rw-r--r-- | src/common/param_package.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/common/param_package.h b/src/common/param_package.h new file mode 100644 index 0000000000..c4c11b221b --- /dev/null +++ b/src/common/param_package.h @@ -0,0 +1,40 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <initializer_list> +#include <string> +#include <unordered_map> + +namespace Common { + +/// A string-based key-value container supporting serializing to and deserializing from a string +class ParamPackage { +public: + using DataType = std::unordered_map<std::string, std::string>; + + ParamPackage() = default; + explicit ParamPackage(const std::string& serialized); + ParamPackage(std::initializer_list<DataType::value_type> list); + ParamPackage(const ParamPackage& other) = default; + ParamPackage(ParamPackage&& other) = default; + + ParamPackage& operator=(const ParamPackage& other) = default; + ParamPackage& operator=(ParamPackage&& other) = default; + + std::string Serialize() const; + std::string Get(const std::string& key, const std::string& default_value) const; + int Get(const std::string& key, int default_value) const; + float Get(const std::string& key, float default_value) const; + void Set(const std::string& key, const std::string& value); + void Set(const std::string& key, int value); + void Set(const std::string& key, float value); + bool Has(const std::string& key) const; + +private: + DataType data; +}; + +} // namespace Common |