/usr/include/casacore/casa/Inputs/Param.h is in casacore-dev 2.2.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | //# Param: A simple keyword/value pair with internal help Strings.
//# Copyright (C) 1993,1994,1995,1999,2000,2001
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: aips2-request@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
//#
//# $Id$
#ifndef CASA_PARAM_H
#define CASA_PARAM_H
#include <casacore/casa/aips.h>
#include <casacore/casa/Containers/Block.h>
#include <casacore/casa/BasicSL/String.h>
#include <casacore/casa/IO/AipsIO.h>
#include <casacore/casa/stdlib.h>
#include <casacore/casa/string.h> // need things like strlen() and such
//# Forward declarations
#include <casacore/casa/iosfwd.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
// <summary>
// A simple keyword/value pair with internal help Strings.
// </summary>
// <use visibility=local>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tParam.cc" demos="">
//</reviewed>
// <prerequisite>
// <li> none noted
// </prerequisite>
//
// <etymology>
// The Param class name is a shortening of "parameter" and is indicative of
// the class being designed as a keyword/value pair relating to command line
// arguments. The existing Keyword class does a much better job for most
// other purposes.
// </etymology>
//
// <synopsis>
// The Param is constructed with all arguments being Strings. This is a
// reflection of the C-type command line argument method of passing
// an integer (argc or argument count) and an array of pointers to characters
// (argv or argument vector.) If "char* argv[]" is broken into its individual
// arguments they may be used to fill a Param. The constructor pairs up a
// "key" to a value. A help String argument is provided to assist in prompted
// filling of Param values. The expected return type may be entered as well
// as a range of potential values. Finally, the units of the value are also
// specified. The intent is to provide a well documented value and a "key"
// by which to "call" it.
//
// The "getWhatever" member functions of Param convert the internal Strings
// into the desired output data type. The Strings themselves may also be
// returned.
// </synopsis>
//
// <example>
// <srcblock>
// // we will create a Param which contains the boundary for an iteration loop.
// String key("IterBound");
// // give "IterBound" a default value
// String value("200");
// // a help String for prompting
// String help("The Boundary value for the chutzpah iterator.");
// // The expected return type is an integer
// String type("Int");
// // The range of "legal" values
// String range("10-10000");
// // the units of the value
// String unit("unitless"):
// // Now we may build our Param
// Param PleaseDontTouchMeThere(key, value, help, type, range, unit);
// // to retrieve the value we use the GetInt function
// for (Int i=0, i<PleaseDontTouchMeThere.getInt(); i++, chutzpah++);
// </srcblock></example>
//
// <motivation>
// The Param class was an early attempt at keywords within Casacore. They have
// become obsolete but hang on due to their relationship with the Input class.
// </motivation>
//
// <todo asof="Thu 1995/04/06 21:26:43 GMT">
// <li> fix the GetStringArray() function
// <li> convert from Block<T> to Array<T> as return values.
// <li> replace entirely with Casacore Keywords?
// </todo>
class Param
{
public:
// constructors and destructor
// default constructor
Param();
// normal constructor with optional value and help strings
Param (const String& key, const String& value, const String& help,
const String& type, const String& range, const String& unit);
// copy constructor
Param (const Param&);
// destructor
~Param();
// assignment operator
Param& operator= (const Param&);
// Equality comparitor.
// <note role=warning> This function ALWAYS returns
// false. I have no idea why it was designed to do this. </note>
Bool operator== (const Param&) const;
// I/O operators
//<group>
friend ostream& operator<< (ostream&, const Param& p);
friend istream& operator>> (istream&, Param& p);
friend AipsIO& operator<< (AipsIO&, const Param& p);
friend AipsIO& operator>> (AipsIO&, Param& p);
//</group>
// get a double parameter value; prompt if switch is TRUE
Double getDouble (Bool do_prompt=False) const;
// get a Block<double> parameter value; prompt if switch is TRUE
Block<Double> getDoubleArray (Bool do_prompt=False) const;
// get an Int parameter value; prompt if switch is TRUE
Int getInt (Bool do_prompt=False) const;
// get an Block<Int> parameter value; prompt if switch is TRUE
Block<Int> getIntArray (Bool do_prompt=False) const;
// get a String parameter value; prompt if switch is TRUE
const String& getString (Bool do_prompt=False) const;
// get a Block<String> parameter value; prompt if switch is TRUE
Block<String> getStringArray (Bool do_prompt=False) const;
// get a Boolean parameter value; prompt if switch is TRUE
Bool getBool (Bool do_prompt=False) const;
// get parameter value as a string
const String& get() const
{ return value; }
// get parameter help string
const String& getHelp() const
{ return help; }
// get parameter name
const String& getKey() const
{ return key; }
// get the string `key = value' for the parameter
String keyVal() const
{ return key + "=" + value; }
// get the type of a parameter
const String& getType() const
{ return type; }
// get the valid range of a parameter
const String& getRange() const
{ return range; }
// get the units of a parameter
const String& getUnit() const
{ return unit; }
// set new parameter value; return FALSE if invalid value
Bool put (const String& a_value);
// set a parameter as a system parameter
void setSystem (Bool val)
{ system = val; }
// check if a parameter is a system parameter
Bool isSystem() const
{ return system; }
// set an index for a program parameter
void setIndex (Int inx)
{ index = inx; }
// get the index of a parameter
Int getIndex() const
{ return index; }
private:
// parameter name
String key;
// parameter value
String value;
// help string
String help;
// type of parameter
String type;
// range/validity/pre-check
String range;
// optional unit associated with value
String unit;
// boolean data member which indicates the Param's key has a value.
Bool hasvalue;
// boolean data member which indicates the Param is system wide.
Bool system;
// index for program keywords (>=1)
Int index;
};
} //# NAMESPACE CASACORE - END
#endif
|