Skip to content

Commit fd877fa

Browse files
committed
ConfParam: minor improvements
- make sure provenance information is available before printing parameter - use std::string const& instead of std::string - print main parameter key in printouts
1 parent 497f40f commit fd877fa

3 files changed

Lines changed: 23 additions & 19 deletions

File tree

Common/Utils/include/CommonUtils/ConfigurableParam.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ class ConfigurableParam
274274
static EnumRegistry* sEnumRegistry;
275275

276276
void setRegisterMode(bool b) { sRegisterMode = b; }
277+
bool isInitialized() const { return sIsFullyInitialized; }
277278

278279
private:
279280
// static registry for implementations of this type

Common/Utils/include/CommonUtils/ConfigurableParamHelper.h

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ struct ParamDataMember {
3333
std::string value;
3434
std::string provenance;
3535

36-
std::string toString(bool showProv) const;
36+
std::string toString(std::string const& prefix, bool showProv) const;
3737
};
3838

3939
// ----------------------------------------------------------------
@@ -43,20 +43,20 @@ struct ParamDataMember {
4343
class _ParamHelper
4444
{
4545
private:
46-
static std::vector<ParamDataMember>* getDataMembersImpl(std::string mainkey, TClass* cl, void*,
46+
static std::vector<ParamDataMember>* getDataMembersImpl(std::string const& mainkey, TClass* cl, void*,
4747
std::map<std::string, ConfigurableParam::EParamProvenance> const* provmap);
4848

49-
static void fillKeyValuesImpl(std::string mainkey, TClass* cl, void*, boost::property_tree::ptree*,
49+
static void fillKeyValuesImpl(std::string const& mainkey, TClass* cl, void*, boost::property_tree::ptree*,
5050
std::map<std::string, std::pair<std::type_info const&, void*>>*,
5151
EnumRegistry*);
5252

5353
static void printWarning(std::type_info const&);
5454

55-
static void assignmentImpl(std::string mainkey, TClass* cl, void* to, void* from,
55+
static void assignmentImpl(std::string const& mainkey, TClass* cl, void* to, void* from,
5656
std::map<std::string, ConfigurableParam::EParamProvenance>* provmap);
5757

58-
static void outputMembersImpl(std::ostream& out, std::vector<ParamDataMember> const* members, bool showProv);
59-
static void printMembersImpl(std::vector<ParamDataMember> const* members, bool showProv);
58+
static void outputMembersImpl(std::ostream& out, std::string const& mainkey, std::vector<ParamDataMember> const* members, bool showProv);
59+
static void printMembersImpl(std::string const& mainkey, std::vector<ParamDataMember> const* members, bool showProv);
6060

6161
template <typename P>
6262
friend class ConfigurableParamHelper;
@@ -85,18 +85,21 @@ class ConfigurableParamHelper : virtual public ConfigurableParam
8585
// ----------------------------------------------------------------
8686

8787
// one of the key methods, using introspection to print itself
88-
void printKeyValues(bool showProv) const final
88+
void printKeyValues(bool showProv = true) const final
8989
{
90+
if (!isInitialized()) {
91+
initialize();
92+
}
9093
auto members = getDataMembers();
91-
_ParamHelper::printMembersImpl(members, showProv);
94+
_ParamHelper::printMembersImpl(getName(), members, showProv);
9295
}
9396

9497
// ----------------------------------------------------------------
9598

9699
void output(std::ostream& out) const final
97100
{
98101
auto members = getDataMembers();
99-
_ParamHelper::outputMembersImpl(out, members, true);
102+
_ParamHelper::outputMembersImpl(out, getName(), members, true);
100103
}
101104

102105
// ----------------------------------------------------------------

Common/Utils/src/ConfigurableParamHelper.cxx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ using namespace o2::conf;
3333

3434
// ----------------------------------------------------------------------
3535

36-
std::string ParamDataMember::toString(bool showProv) const
36+
std::string ParamDataMember::toString(std::string const& prefix, bool showProv) const
3737
{
3838
std::string nil = "<null>";
3939

4040
std::ostringstream out;
41-
out << name << " : " << value;
41+
out << prefix << "." << name << " : " << value;
4242

4343
if (showProv) {
4444
std::string prov = (provenance.compare("") == 0 ? nil : provenance);
@@ -51,7 +51,7 @@ std::string ParamDataMember::toString(bool showProv) const
5151

5252
std::ostream& operator<<(std::ostream& out, const ParamDataMember& pdm)
5353
{
54-
out << pdm.toString(false);
54+
out << pdm.toString("", false);
5555
return out;
5656
}
5757

@@ -159,7 +159,7 @@ const char* asString(TDataMember const& dm, char* pointer)
159159

160160
// ----------------------------------------------------------------------
161161

162-
std::vector<ParamDataMember>* _ParamHelper::getDataMembersImpl(std::string mainkey, TClass* cl, void* obj,
162+
std::vector<ParamDataMember>* _ParamHelper::getDataMembersImpl(std::string const& mainkey, TClass* cl, void* obj,
163163
std::map<std::string, ConfigurableParam::EParamProvenance> const* provmap)
164164
{
165165
std::vector<ParamDataMember>* members = new std::vector<ParamDataMember>;
@@ -251,7 +251,7 @@ std::type_info const& nameToTypeInfo(const char* tname, TDataType const* dt)
251251

252252
// ----------------------------------------------------------------------
253253

254-
void _ParamHelper::fillKeyValuesImpl(std::string mainkey, TClass* cl, void* obj, boost::property_tree::ptree* tree,
254+
void _ParamHelper::fillKeyValuesImpl(std::string const& mainkey, TClass* cl, void* obj, boost::property_tree::ptree* tree,
255255
std::map<std::string, std::pair<std::type_info const&, void*>>* keytostoragemap,
256256
EnumRegistry* enumRegistry)
257257
{
@@ -281,19 +281,19 @@ void _ParamHelper::fillKeyValuesImpl(std::string mainkey, TClass* cl, void* obj,
281281

282282
// ----------------------------------------------------------------------
283283

284-
void _ParamHelper::printMembersImpl(std::vector<ParamDataMember> const* members, bool showProv)
284+
void _ParamHelper::printMembersImpl(std::string const& mainkey, std::vector<ParamDataMember> const* members, bool showProv)
285285
{
286-
_ParamHelper::outputMembersImpl(std::cout, members, showProv);
286+
_ParamHelper::outputMembersImpl(std::cout, mainkey, members, showProv);
287287
}
288288

289-
void _ParamHelper::outputMembersImpl(std::ostream& out, std::vector<ParamDataMember> const* members, bool showProv)
289+
void _ParamHelper::outputMembersImpl(std::ostream& out, std::string const& mainkey, std::vector<ParamDataMember> const* members, bool showProv)
290290
{
291291
if (members == nullptr) {
292292
return;
293293
}
294294

295295
for (auto& member : *members) {
296-
out << member.toString(showProv);
296+
out << member.toString(mainkey, showProv);
297297
}
298298
}
299299

@@ -312,7 +312,7 @@ bool isMemblockDifferent(char const* block1, char const* block2, int sizeinbytes
312312

313313
// ----------------------------------------------------------------------
314314

315-
void _ParamHelper::assignmentImpl(std::string mainkey, TClass* cl, void* to, void* from,
315+
void _ParamHelper::assignmentImpl(std::string const& mainkey, TClass* cl, void* to, void* from,
316316
std::map<std::string, ConfigurableParam::EParamProvenance>* provmap)
317317
{
318318
auto assignifchanged = [to, from, &mainkey, provmap](const TDataMember* dm, int index, int size) {

0 commit comments

Comments
 (0)