From eb8274580a8e9bc5432ea12158ba043dce76672d Mon Sep 17 00:00:00 2001
From: Ger van Diepen <diepen@astron.nl>
Date: Tue, 3 Mar 2009 12:02:27 +0000
Subject: [PATCH] bug 1314: Added documentation

---
 LCS/pyparameterset/src/__init__.py       |  87 +++++++++++++++-
 LCS/pyparameterset/src/pyparameterset.cc | 122 ++++++++++++++++-------
 2 files changed, 171 insertions(+), 38 deletions(-)

diff --git a/LCS/pyparameterset/src/__init__.py b/LCS/pyparameterset/src/__init__.py
index 2d46d56844a..4a454d9ee3a 100755
--- a/LCS/pyparameterset/src/__init__.py
+++ b/LCS/pyparameterset/src/__init__.py
@@ -29,18 +29,38 @@ class parametervalue(ParameterValue):
     """
 
     def __init__(self, value, trim=True):
+        """ Create the parametervalue object.
+
+        value
+          The parameter value as a string.
+        trim
+          True = remove leading/trailing whitespace from value.
+
+          """
         ParameterValue.__init__ (self, value, trim);
 
     def __str__(self):
+        """Get the full parameter value."""
         return self.get()
 
 
+
+
 class parameterset(PyParameterSet):
     """
     The Python interface to ParameterSet
     """
 
     def __init__(self, filename=None, caseInsensitive=False):
+        """Create a parameterset object.
+
+        filename
+          If a filename is given, the object is filled from that parset file.
+          If a bool is given, it is treated as argument caseInsensitive.
+        caseInsensitive
+          True = parameter names are case insensitive
+
+        """
         if filename==None:
             PyParameterSet.__init__ (self, caseInsensitive);
         elif isinstance(filename, bool):
@@ -48,10 +68,30 @@ class parameterset(PyParameterSet):
         else:
             PyParameterSet.__init__ (self, filename, caseInsensitive);
 
+    def __len__(self):
+        """Get the number of parameters."""
+        return self.size()
+
     def __getitem__(self, key):
-        return self.get (key)
+        """Get the parametervalue object of a parameter."""
+        return self._get (key)
+
+    def get(self, key):
+        """Get the parametervalue object of a parameter."""
+        return self._get (key)
 
     def getBoolVector(self, key, default=None, expandable=False):
+        """Get the value as a list of boolean values.
+
+        key
+          Parameter name
+        default
+          Default value to be used if parameter is undefined.
+          If None is given, an exception is raised if undefined.
+        expandable
+          True = ranges and repeats (.. and *) are expanded first.
+
+        """
         if default==None:
             return self._getBoolVector1 (key, expandable)
         if isinstance(default, bool):
@@ -59,6 +99,17 @@ class parameterset(PyParameterSet):
         return self._getBoolVector2 (key, default, expandable)
 
     def getIntVector(self, key, default=None, expandable=False):
+        """Get the value as a list of integer values.
+
+        key
+          Parameter name
+        default
+          Default value to be used if parameter is undefined.
+          If None is given, an exception is raised if undefined.
+        expandable
+          True = ranges and repeats (.. and *) are expanded first.
+
+        """
         if default==None:
             return self._getIntVector1 (key, expandable)
         if isinstance(default, bool):
@@ -66,6 +117,17 @@ class parameterset(PyParameterSet):
         return self._getIntVector2 (key, default, expandable)
 
     def getFloatVector(self, key, default=None, expandable=False):
+        """Get the value as a list of floating point values.
+
+        key
+          Parameter name
+        default
+          Default value to be used if parameter is undefined.
+          If None is given, an exception is raised if undefined.
+        expandable
+          True = ranges and repeats (.. and *) are expanded first.
+
+        """
         if default==None:
             return self._getFloatVector1 (key, expandable)
         if isinstance(default, bool):
@@ -73,6 +135,17 @@ class parameterset(PyParameterSet):
         return self._getFloatVector2 (key, default, expandable)
 
     def getDoubleVector(self, key, default=None, expandable=False):
+        """Get the value as a list of floating point values.
+
+        key
+          Parameter name
+        default
+          Default value to be used if parameter is undefined.
+          If None is given, an exception is raised if undefined.
+        expandable
+          True = ranges and repeats (.. and *) are expanded first.
+
+        """
         if default==None:
             return self._getDoubleVector1 (key, expandable)
         if isinstance(default, bool):
@@ -80,8 +153,20 @@ class parameterset(PyParameterSet):
         return self._getDoubleVector2 (key, default, expandable)
 
     def getStringVector(self, key, default=None, expandable=False):
+        """Get the value as a list of string values.
+
+        key
+          Parameter name
+        default
+          Default value to be used if parameter is undefined.
+          If None is given, an exception is raised if undefined.
+        expandable
+          True = ranges and repeats (.. and *) are expanded first.
+
+        """
         if default==None:
             return self._getStringVector1 (key, expandable)
         if isinstance(default, bool):
             return self._getStringVector1 (key, default)
         return self._getStringVector2 (key, default, expandable)
+
diff --git a/LCS/pyparameterset/src/pyparameterset.cc b/LCS/pyparameterset/src/pyparameterset.cc
index fb9509d5769..353657bfb01 100644
--- a/LCS/pyparameterset/src/pyparameterset.cc
+++ b/LCS/pyparameterset/src/pyparameterset.cc
@@ -112,20 +112,34 @@ namespace LOFAR {
                             init<std::string, bool>())
 
       .def ("get",      &ParameterValue::get,
-            return_value_policy < copy_const_reference> ())
-      .def ("expand",   &ParameterValue::expand)
-      .def ("isVector", &ParameterValue::isVector)
-      .def ("getVector", &ParameterValue::getVector)
-      .def ("getBool",   &ParameterValue::getBool)
-      .def ("getInt",    &ParameterValue::getInt)
-      .def ("getFloat",  &ParameterValue::getFloat)
-      .def ("getDouble", &ParameterValue::getDouble)
-      .def ("getString", &ParameterValue::getString)
-      .def ("getBoolVector",   &ParameterValue::getBoolVector)
-      .def ("getIntVector",    &ParameterValue::getIntVector)
-      .def ("getFloatVector",  &ParameterValue::getFloatVector)
-      .def ("getDoubleVector", &ParameterValue::getDoubleVector)
-      .def ("getStringVector", &ParameterValue::getStringVector)
+            return_value_policy < copy_const_reference> (),
+            "Get the original value.")
+      .def ("expand",   &ParameterValue::expand,
+            "Expand possible range and repeat values (using .. and *)")
+      .def ("isVector", &ParameterValue::isVector,
+            "Test if the value contains a vector (if enclosed in [])")
+      .def ("getVector", &ParameterValue::getVector,
+            "Split the vector into its part and return as a list.")
+      .def ("getBool",   &ParameterValue::getBool,
+            "Get the value as a boolean value.")
+      .def ("getInt",    &ParameterValue::getInt,
+            "Get the value as an integer value.")
+      .def ("getFloat",  &ParameterValue::getFloat,
+            "Get the value as a floating point value.")
+      .def ("getDouble",  &ParameterValue::getDouble,
+            "Get the value as a floating point value.")
+      .def ("getString", &ParameterValue::getString,
+            "Get the value as a string value (quotes are removed).")
+      .def ("getBoolVector",   &ParameterValue::getBoolVector,
+            "Get the value vector as a list of boolean values.")
+      .def ("getIntVector",    &ParameterValue::getIntVector,
+            "Get the value vector as a list of integer values.")
+      .def ("getFloatVector",  &ParameterValue::getFloatVector,
+            "Get the value vector as a list of floating point values.")
+      .def ("getDoubleVector",  &ParameterValue::getDoubleVector,
+            "Get the value vector as a list of floating point values.")
+      .def ("getStringVector", &ParameterValue::getStringVector,
+            "Get the value vector as a list of strings (quotes are removed).")
       ;
   }
 
@@ -136,62 +150,96 @@ namespace LOFAR {
     class_<PyParameterSet> ("PyParameterSet")
       .def (init<bool>())
       .def (init<std::string, bool>())
-
       .def ("version", &PyParameterSet::version,
-            (boost::python::arg("type")="other"))
-      .def ("size", &ParameterSet::size)
-      .def ("__len__", &ParameterSet::size)
+            (boost::python::arg("type")="other"),
+            "Get the software version.")
+      .def ("size", &ParameterSet::size,
+            "Get the number of parameters.")
+      .def ("__len__", &ParameterSet::size,
+            "Get the number of parameters.")
       .def ("makeSubset", &ParameterSet::makeSubset,
  	    (boost::python::arg("baseKey"),
-             boost::python::arg("prefix")=""))
+             boost::python::arg("prefix")=""),
+            "Return a subset as a new parameterset object.\n"
+            "\n"
+            "baseKey\n"
+            "  The leading part of the parameter name denoting the subset.\n"
+            "  A trailing period has to be given.\n"
+            "prefix\n"
+            "  The baseKey parameter name part is replaced by the prefix.\n"
+            "\n"
+            "For example::\n"
+            "\n"
+            "  newps = ps.makeSubset ('p1,p2,', 'pr.')\n"
+            "\n"
+            "creates a subset of all keys starting with `p`1.p2.` and replaces\n"
+            "that prefix by `pr.`.\n"
+            )
       .def ("subtractSubset", &ParameterSet::subtractSubset,
- 	    (boost::python::arg("baseKey")))
+ 	    (boost::python::arg("baseKey")),
+            "Remove all parameters starting with the baseKey.")
       .def ("adoptFile", &ParameterSet::adoptFile,
  	    (boost::python::arg("filename"),
- 	     boost::python::arg("prefix")=""))
+ 	     boost::python::arg("prefix")=""),
+            "Add the parameters in the parset file with the given prefix.")
       .def ("writeFile", &ParameterSet::writeFile,
  	    (boost::python::arg("filename"),
-             boost::python::arg("append")=false))
+             boost::python::arg("append")=false),
+            "Write the parameterset into a parset file with the given name.")
       .def ("add", fadd,
  	    (boost::python::arg("key"),
-             boost::python::arg("value")))
+             boost::python::arg("value")),
+            "Add a parameter key/value pair.")
       .def ("replace", freplace,
  	    (boost::python::arg("key"),
-             boost::python::arg("value")))
+             boost::python::arg("value")),
+            "Replace the value of a parameter.")
       .def ("remove", &ParameterSet::remove,
  	    (boost::python::arg("key")))
-      .def ("clear", &ParameterSet::clear)
+      .def ("clear", &ParameterSet::clear,
+            "Clear this parameterset object.")
       .def ("isDefined", &ParameterSet::isDefined,
- 	    (boost::python::arg("key")))
-      .def ("get", &ParameterSet::get,
+ 	    (boost::python::arg("key")),
+            "Does a parameter with the given name exist? ")
+      .def ("_get", &ParameterSet::get,
             return_value_policy < copy_const_reference> (),
  	    (boost::python::arg("key")))
 
       .def ("getBool", fgetbool1,
-            (boost::python::arg("key")))
+            (boost::python::arg("key")),
+            "Get a boolean parameter value. Exception if undefined.")
       .def ("getBool", fgetbool2,
             (boost::python::arg("key"),
-             boost::python::arg("default")))
+             boost::python::arg("default")),
+            "Get a boolean parameter value. Use default if undefined.")
       .def ("getInt", fgetint1,
-            (boost::python::arg("key")))
+            (boost::python::arg("key")),
+            "Get an integer parameter value. Exception if undefined.")
       .def ("getInt", fgetint2,
             (boost::python::arg("key"),
-             boost::python::arg("default")))
+             boost::python::arg("default")),
+            "Get an integer parameter value. Use default if undefined.")
       .def ("getFloat", fgetfloat1,
-            (boost::python::arg("key")))
+            (boost::python::arg("key")),
+            "Get a floating point parameter value. Exception if undefined.")
       .def ("getFloat", fgetfloat2,
             (boost::python::arg("key"),
-             boost::python::arg("default")))
+             boost::python::arg("default")),
+            "Get a floating point parameter value. Use default if undefined.")
       .def ("getDouble", fgetdouble1,
-            (boost::python::arg("key")))
+            (boost::python::arg("key")),
+            "Get a floating point parameter value. Exception if undefined.")
       .def ("getDouble", fgetdouble2,
             (boost::python::arg("key"),
-             boost::python::arg("default")))
+             boost::python::arg("default")),
+            "Get a floating point parameter value. Use default if undefined.")
       .def ("getString", fgetstring1,
-            (boost::python::arg("key")))
+            (boost::python::arg("key")),
+            "Get a string parameter value. Exception if undefined.")
       .def ("getString", fgetstring2,
             (boost::python::arg("key"),
-             boost::python::arg("default")))
+             boost::python::arg("default")),
+            "Get a string parameter value. Use default if undefined.")
 
       .def ("_getBoolVector1", fgetvecbool1,
             (boost::python::arg("key"),
-- 
GitLab