forked from AliceO2Group/AliceO2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConfigurationOptionsRetriever.cxx
More file actions
54 lines (46 loc) · 1.78 KB
/
ConfigurationOptionsRetriever.cxx
File metadata and controls
54 lines (46 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
#include "ConfigurationOptionsRetriever.h"
#include "Configuration/ConfigurationInterface.h"
#include "Framework/ConfigParamSpec.h"
#include "PropertyTreeHelpers.h"
#define BOOST_BIND_GLOBAL_PLACEHOLDERS
#include <boost/program_options.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <string>
#include <vector>
#include <iostream>
using namespace o2::framework;
using namespace o2::configuration;
namespace bpo = boost::program_options;
namespace bpt = boost::property_tree;
namespace o2::framework
{
ConfigurationOptionsRetriever::ConfigurationOptionsRetriever(ConfigurationInterface* cfg,
std::string const& mainKey)
: mCfg{cfg},
mMainKey{mainKey}
{
}
void ConfigurationOptionsRetriever::update(std::vector<ConfigParamSpec> const& schema,
boost::property_tree::ptree& store,
boost::property_tree::ptree& provenance)
{
boost::property_tree::ptree in;
try {
in = mCfg->getRecursive(mMainKey);
} catch (...) {
in.clear();
}
PropertyTreeHelpers::populate(schema, store, in, provenance, "configuration:" + mMainKey);
}
} // namespace o2::framework