2
* Copyright © 2017 Canonical Ltd.
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU Lesser General Public License version 3,
6
* as published by the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU Lesser General Public License for more details.
13
* You should have received a copy of the GNU Lesser General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16
* Authored by: Thomas Voß <thomas.voss@canonical.com>
19
#ifndef LOCATION_UTIL_SETTINGS_H_
20
#define LOCATION_UTIL_SETTINGS_H_
22
#include <location/optional.h>
23
#include <location/visibility.h>
25
#include <boost/property_tree/ptree.hpp>
37
class LOCATION_DLL_PUBLIC Source
40
explicit Source(const boost::property_tree::ptree& ptree = boost::property_tree::ptree{});
43
T get_value(const std::string& key, T&& value) const
45
if (auto v = get(key))
47
std::istringstream iss{*v};
55
Optional<std::string> get(const std::string& key) const;
57
boost::property_tree::ptree ptree;
60
} // namespace settings
62
} // namespace location
64
#endif // LOCATION_UTIL_SETTINGS_H_