From 008076766d7609ee8e4326fe0d1d57f9fb1ce6a7 Mon Sep 17 00:00:00 2001 From: Ger van Diepen <diepen@astron.nl> Date: Tue, 28 Feb 2012 07:44:25 +0000 Subject: [PATCH] Task #3116 Added and tested ParameterSet functions getVector and getRecord --- LCS/Common/include/Common/ParameterSet.h | 13 +++++++++++++ LCS/Common/src/ParameterSet.cc | 21 ++++++++++++++------- LCS/Common/test/tParameterRecord.cc | 6 ++++++ LCS/Common/test/tParameterSet.cc | 1 + 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/LCS/Common/include/Common/ParameterSet.h b/LCS/Common/include/Common/ParameterSet.h index 807320ccfbb..24bedbfbcb6 100644 --- a/LCS/Common/include/Common/ParameterSet.h +++ b/LCS/Common/include/Common/ParameterSet.h @@ -217,6 +217,14 @@ public: // e.g: a.b.c.d.param=xxxx --> fullModuleName(b.c)-->a.b.c string fullModuleName(const string& shortName) const; + // Return the value of the key as a vector of values. + // This can only be done if the value is enclosed in square brackets. + vector<ParameterValue> getVector (const string& aKey) const; + + // Return the value of the key as a parameter record. + // This can only be done if the value is enclosed in curly braces. + ParameterRecord getRecord (const string& aKey) const; + // Return scalar value. // @{ bool getBool (const string& aKey) const; @@ -484,6 +492,11 @@ inline string ParameterSet::fullModuleName(const string& shortName) const return (itsSet->fullModuleName(shortName)); } +inline vector<ParameterValue> ParameterSet::getVector (const string& aKey) const +{ + return get(aKey).getVector(); +} + //# getBool(key) inline bool ParameterSet::getBool(const string& aKey) const { diff --git a/LCS/Common/src/ParameterSet.cc b/LCS/Common/src/ParameterSet.cc index 9af35b5936f..23378b640d5 100644 --- a/LCS/Common/src/ParameterSet.cc +++ b/LCS/Common/src/ParameterSet.cc @@ -25,6 +25,7 @@ #include <Common/ParameterSet.h> +#include <Common/ParameterRecord.h> #include <Common/LofarLogger.h> #include <Common/lofar_fstream.h> @@ -87,11 +88,11 @@ ParameterSet::ParameterSet(const ParameterSet& that) ParameterSet& ParameterSet::operator=(const ParameterSet& that) { - if (this != &that) { - unlink(); - itsSet = that.itsSet->incrCount(); - } - return (*this); + if (this != &that) { + unlink(); + itsSet = that.itsSet->incrCount(); + } + return (*this); } // @@ -109,13 +110,19 @@ void ParameterSet::unlink() } } + +ParameterRecord ParameterSet::getRecord (const string& aKey) const +{ + return get(aKey).getRecord(); +} + // // operator<< // std::ostream& operator<< (std::ostream& os, const ParameterSet &thePS) { - os << *thePS.itsSet; - return os; + os << *thePS.itsSet; + return os; } } // namespace LOFAR diff --git a/LCS/Common/test/tParameterRecord.cc b/LCS/Common/test/tParameterRecord.cc index 2631ee0df4f..6e1384301dc 100644 --- a/LCS/Common/test/tParameterRecord.cc +++ b/LCS/Common/test/tParameterRecord.cc @@ -66,6 +66,12 @@ void testNested() ASSERT (rec.getString("k2b") == "3"); ParameterValue pvkey (rec.get("key")); ASSERT (pvkey.isRecord()); + { + // Test ParameterSet::getRecord + ParameterRecord prkey (rec.getRecord("key")); + ASSERT (prkey.size() == 1); + ASSERT (prkey.isDefined("k1")); + } ParameterRecord prkey (pvkey.getRecord()); ParameterValue pvk1 (prkey.get("k1")); ASSERT (pvk1.isRecord()); diff --git a/LCS/Common/test/tParameterSet.cc b/LCS/Common/test/tParameterSet.cc index 0c8010e10a1..d473531adab 100644 --- a/LCS/Common/test/tParameterSet.cc +++ b/LCS/Common/test/tParameterSet.cc @@ -102,6 +102,7 @@ int doIt(KeyCompare::Mode mode) ASSERT(myPS.getTime("Time", 15) == 15); ASSERT(myPS.getTime("Time", 18000) == 18000); ASSERT(myPS["emptyvec"].getVector().size() == 0); + ASSERT(myPS.getVector("emptyvec").size() == 0); ASSERT(myPS.getUint32Vector("emptyvec").size() == 0); { -- GitLab