Param.h

Classes

Param -- A simple keyword/value pair with internal help Strings. (full description)

class Param

Interface

Public Members
Param()
Param (const String& key, const String& value, const String& help, const String& type, const String& range, const String& unit)
Param (const Param&)
~Param()
Param& operator= (const Param&)
Bool operator== (const Param&) const
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)
Double getDouble (Bool do_prompt=False) const
Block<Double> getDoubleArray (Bool do_prompt=False) const
Int getInt (Bool do_prompt=False) const
Block<Int> getIntArray (Bool do_prompt=False) const
const String& getString (Bool do_prompt=False) const
Block<String> getStringArray (Bool do_prompt=False) const
Bool getBool (Bool do_prompt=False) const
const String& get() const
const String& getHelp() const
const String& getKey() const
String keyVal() const
const String& getType() const
const String& getRange() const
const String& getUnit() const
Bool put (const String& a_value)
void setSystem (Bool val)
Bool isSystem() const
void setIndex (Int inx)
Int getIndex() const

Description

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
Programs:
Tests:

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.

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.

Example

    // 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++);
    

Motivation

The Param class was an early attempt at keywords within AIPS++. They have become obsolete but hang on due to their relationship with the Input class.

To Do

Member Description

Param()

constructors and destructor default constructor

Param (const String& key, const String& value, const String& help, const String& type, const String& range, const String& unit)

normal constructor with optional value and help strings

Param (const Param&)

copy constructor

~Param()

destructor

Param& operator= (const Param&)

assignment operator

Bool operator== (const Param&) const

Equality comparitor

Warning This function ALWAYS returns false. I have no idea why it was designed to do this.

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)

I/O operators

Double getDouble (Bool do_prompt=False) const

get a double parameter value; prompt if switch is TRUE

Block<Double> getDoubleArray (Bool do_prompt=False) const

get a Block parameter value; prompt if switch is TRUE

Int getInt (Bool do_prompt=False) const

get an Int parameter value; prompt if switch is TRUE

Block<Int> getIntArray (Bool do_prompt=False) const

get an Block parameter value; prompt if switch is TRUE

const String& getString (Bool do_prompt=False) const

get a String parameter value; prompt if switch is TRUE

Block<String> getStringArray (Bool do_prompt=False) const

get a Block parameter value; prompt if switch is TRUE

Bool getBool (Bool do_prompt=False) const

get a Boolean parameter value; prompt if switch is TRUE

const String& get() const

get parameter value as a string

const String& getHelp() const

get parameter help string

const String& getKey() const

get parameter name

String keyVal() const

get the string `key = value' for the parameter

const String& getType() const

get the type of a parameter

const String& getRange() const

get the valid range of a parameter

const String& getUnit() const

get the units of a parameter

Bool put (const String& a_value)

set new parameter value; return FALSE if invalid value

void setSystem (Bool val)

set a parameter as a system parameter

Bool isSystem() const

check if a parameter is a system parameter

void setIndex (Int inx)

set an index for a program parameter

Int getIndex() const

get the index of a parameter