diff --git a/LCS/pyparameterset/src/__init__.py b/LCS/pyparameterset/src/__init__.py index 35dbeb9d1008142e9aed0803455a25041dc93662..51bac88f1dbba69620a2e76a1c9e9c9e735b8d93 100755 --- a/LCS/pyparameterset/src/__init__.py +++ b/LCS/pyparameterset/src/__init__.py @@ -76,6 +76,10 @@ class parameterset(PyParameterSet): """Get the parametervalue object of a parameter.""" return self._get (key) + def keys(self): + """Get a sorted list of all parameter names.""" + return self.keywords() + def get(self, key): """Get the parametervalue object of a parameter.""" return self._get (key) diff --git a/LCS/pyparameterset/src/pyparameterset.cc b/LCS/pyparameterset/src/pyparameterset.cc index 130f59b2e7044e999155a80f165f67f3cfc231c6..998dc9d8476b49123f7d8bcdf8751d936419c08c 100644 --- a/LCS/pyparameterset/src/pyparameterset.cc +++ b/LCS/pyparameterset/src/pyparameterset.cc @@ -54,6 +54,18 @@ namespace LOFAR { PyParameterSet makeSubset (const string& baseKey, const string& prefix) { return ParameterSet::makeSubset (baseKey, prefix); } + + // Return a sorted list of keywords. + vector<string> keywords() const + { + vector<string> result; + result.reserve (size()); + for (ParameterSet::const_iterator iter=begin(); iter!=end(); ++iter) { + result.push_back (iter->first); + } + std::sort (result.begin(), result.end()); + return result; + } }; // Define function pointers for overloaded functions to be able to tell @@ -161,6 +173,7 @@ namespace LOFAR { "Get the number of parameters.") .def ("__len__", &ParameterSet::size, "Get the number of parameters.") + .def ("keywords", &PyParameterSet::keywords) .def ("makeSubset", &PyParameterSet::makeSubset, (boost::python::arg("baseKey"), boost::python::arg("prefix")=""), diff --git a/LCS/pyparameterset/test/tpyparameterset.py b/LCS/pyparameterset/test/tpyparameterset.py index 3bc8777118042041c8051aea4338f80d8e5e3d73..0ed5eace3a2d864bb6235ce5cf44ed8e3b02a0a5 100644 --- a/LCS/pyparameterset/test/tpyparameterset.py +++ b/LCS/pyparameterset/test/tpyparameterset.py @@ -77,4 +77,5 @@ ps.add ("vecbool", "[true,false,true]") ps.add ("vec", "[1,2,3]") ps.add ("vecexp", "[1..3,5..10]") ps.add ("vecnest", "[[1..3,5*10],[5..10]]") +print ps.keys() checkps (ps) diff --git a/LCS/pyparameterset/test/tpyparameterset.stdout b/LCS/pyparameterset/test/tpyparameterset.stdout index 9ae10260061fd63828a2b6a7809097c5b1d40fb3..9cab053c842c5daf88929437c6f00f5e28ff29d0 100644 --- a/LCS/pyparameterset/test/tpyparameterset.stdout +++ b/LCS/pyparameterset/test/tpyparameterset.stdout @@ -38,6 +38,7 @@ True [1, 2, 3, 10, 10, 10, 10, 10] [5, 6, 7, 8, 9, 10] +['a.b', 'a.b.bool', 'a.b.c', 'a.b.double', 'a.b.lange_naam', 'e.g', 'egg', 'vec', 'vecbool', 'vecexp', 'vecnest'] False True 7