12 using Item = PropertyItem;
17 Properties(const Properties& _other) = default;
18 Properties(Properties&& _other) = default;
19 Properties(std::vector<Item>&& _items);
20 Properties& operator=(const Properties& _other) = default;
21 Properties& operator=(Properties&& _other);
23 const Value& get(const std::string& key) const;
29 bool contains(const std::string& key) const;
31 bool getNumber(const std::string& key, double& value) const;
33 double getNumber(const std::string& key) const;
35 bool getString(const std::string& key, std::string& value) const;
37 const std::string& getString(const std::string& key) const;
39 std::string asString(const Value& value) const;
41 std::string getAsString(const std::string& key) const;
43 bool getAsString(const std::string& key, std::string& value) const;
45 std::string toJson() const;
47 void set(std::string key, std::string value);
48 void set(std::string key, double value);
50 void setSorted(std::vector<Item>&& _items);
52 // template <typename... Args> void set(std::string key, Args&&... args) {
53 // props.emplace_back(std::move(key), Value{std::forward<Args>(args)...});
57 const std::vector<Item>& items() const { return props; }
61 static bool keyComparator(const std::string& a, const std::string& b) {
62 if (a.size() == b.size()) {
65 return a.size() < b.size();
69 std::vector<Item> props;