diff options
Diffstat (limited to 'src/common/PropertyTree.cpp')
-rw-r--r-- | src/common/PropertyTree.cpp | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/src/common/PropertyTree.cpp b/src/common/PropertyTree.cpp deleted file mode 100644 index b587becb..00000000 --- a/src/common/PropertyTree.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "cru/common/PropertyTree.h" -#include <unordered_map> -#include "cru/common/Exception.h" - -namespace cru { -String PropertySubTreeRef::CombineKey(StringView left, StringView right) { - return PropertyTree::CombineKey(left, right); -} - -PropertySubTreeRef::PropertySubTreeRef(PropertyTree* tree, String path) - : tree_(tree), path_(std::move(path)) { - Expects(tree); -} - -PropertySubTreeRef PropertySubTreeRef::GetParent() const { - for (Index i = path_.size() - 1; i >= 0; i--) { - if (path_[i] == '.') { - return PropertySubTreeRef(tree_, path_.substr(0, i)); - } - } - - return PropertySubTreeRef(tree_, {}); -} - -PropertySubTreeRef PropertySubTreeRef::GetChild(const String& key) const { - return PropertySubTreeRef(tree_, CombineKey(path_, key)); -} - -String PropertySubTreeRef::GetValue(const String& key) const { - return tree_->GetValue(CombineKey(path_, key)); -} - -void PropertySubTreeRef::SetValue(const String& key, String value) { - tree_->SetValue(CombineKey(path_, key), std::move(value)); -} - -void PropertySubTreeRef::DeleteValue(const String& key) { - tree_->DeleteValue(CombineKey(path_, key)); -} - -String PropertyTree::CombineKey(StringView left, StringView right) { - return String(left) + String(left.empty() ? u"" : u".") + String(right); -} - -PropertyTree::PropertyTree(std::unordered_map<String, String> values) - : values_(std::move(values)) {} - -String PropertyTree::GetValue(const String& key) const { - auto it = values_.find(key); - if (it == values_.end()) { - throw Exception(u"Property tree has no value."); - } - return it->second; -} - -void PropertyTree::SetValue(const String& key, String value) { - values_[key] = std::move(value); -} - -void PropertyTree::DeleteValue(const String& key) { - auto it = values_.find(key); - if (it != values_.end()) { - values_.erase(it); - } -} - -PropertySubTreeRef PropertyTree::GetSubTreeRef(const String& path) { - return PropertySubTreeRef(this, path); -} - -} // namespace cru |