3 #include "config_value.hpp"
4 #include "config_mergeable.hpp"
6 #include <unordered_map>
25 virtual std::shared_ptr<const config>
to_config()
const;
31 virtual shared_object with_value(
path raw_path, shared_value
value)
const = 0;
32 virtual shared_object with_value(std::string key, shared_value
value)
const = 0;
52 virtual std::vector<std::string>
key_set()
const = 0;
55 using iterator = std::unordered_map<std::string, shared_value>::const_iterator;
56 virtual bool is_empty()
const = 0;
57 virtual size_t size()
const = 0;
58 virtual shared_value operator[](std::string
const& key)
const = 0;
59 virtual shared_value get(std::string
const& key)
const = 0;
60 virtual iterator begin()
const = 0;
61 virtual iterator end()
const = 0;
64 shared_value peek_path(
path desired_path)
const;
65 shared_value peek_assuming_resolved(std::string
const& key,
path original_path)
const;
67 virtual shared_object new_copy(resolve_status
const& status, shared_origin origin)
const = 0;
68 shared_value new_copy(shared_origin origin)
const override;
70 shared_value construct_delayed_merge(shared_origin origin, std::vector<shared_value> stack)
const override;
72 virtual std::unordered_map<std::string, shared_value>
const& entry_set()
const = 0;
73 virtual shared_object without_path(
path raw_path)
const = 0;
74 virtual shared_object with_only_path(
path raw_path)
const = 0;
75 virtual shared_object with_only_path_or_null(
path raw_path)
const = 0;
78 static shared_origin merge_origins(std::vector<shared_value>
const& stack);