Loading...
Searching...
No Matches
casacore::Aipsrc Class Reference
casa package (libcasa_casa) » System_module

More...

`#include <Aipsrc.h>`

## Static Public Member Functions

static Bool | find (String &value, const String &keyword)
static Bool | findNoHome (String &value, const String &keyword)
static Bool | find (uInt &value, const String &keyword, Int Nname, const String tname[])
| These finds check a (possible) value of the keyword against a list of coded values provided, and return an index into the list (N if not found).
static Bool | find (uInt &value, const String &keyword, const Vector< String > &tname)
static Bool | find (String &value, const String &keyword, const String &default_value)
| This find usually saves you some lines of code, since you can supply the default you want to use when no such keyword is defined.
static Bool | findNoHome (String &value, const String &keyword, const String &default_value)
static Bool | find (uInt &value, const String &keyword, Int Nname, const String tname[], const String &default_value)
static Bool | find (uInt &value, const String &keyword, const Vector< String > &tname, const String &default_value)
static Bool | findDir (String &foundDir, const String &lastPart="", const Vector< String > &prepends=Vector< String >(), const Vector< String > &appends=Vector< String >(), Bool useStds=True)
| Sets foundDir to the first /firstPart/lastPart path that it finds present on the system, where /firstPart comes from, in order, this list: contents of prepends.
static uInt | registerRC (const String &keyword, const String &default_value)
| Functions to register keywords for later use in get() and set().
static uInt | registerRC (const String &keyword, Int Nname, const String tname[], const String &default_value)
static uInt | registerRC (const String &keyword, const Vector< String > &tname, const String &default_value)
static const String & | get (uInt keyword)
| Gets are like find, but using registered integers rather than names.
static const uInt & | get (uInt &code, uInt keyword)
| get for code
static void | set (uInt keyword, const String &default_value)
| Sets allow registered values to be set.
static void | set (uInt keyword, Int Nname, const String tname[], const String &default_value)
static void | set (uInt keyword, const Vector< String > &tname, const String &default_value)
static void | save (uInt keyword)
| Save a registered keyword value to $HOME/.aipsrc.
static void | save (uInt keyword, const String tname[])
static void | save (uInt keyword, const Vector< String > &tname)
static void | setAipsPath (const String &path=String())
| Set an AIPSPATH that should be used in stead of a global AIPSPATH.
static const String & | aipsRoot ()
| Returns the appropriate Casacore or system variable values.
static const String & | aipsArch ()
static const String & | aipsSite ()
static const String & | aipsHost ()
static const String & | aipsHome ()
| Returns: ~/aips++.
static void | reRead ()
| The reRead() function will reinitialise the static maps and read the aipsrc files again.
static Double | lastRead ()
static const Block< String > & | values ()
| The following functions return the full lists of available data.
static const Block< String > & | patterns ()
static void | show (ostream &oStream)
| The following show() function, useful for debugging, outputs all keyword/value pairs found.
static void | show ()
| Prints all info on cout.
static uInt | genRestore (Vector< String > &namlst, Vector< String > &vallst, const String &fileList)
| The following set is a general set of functions.
static void | genSave (Vector< String > &namlst, Vector< String > &vallst, const String &fnam)
| Save the names/values in file.
static void | genSet (Vector< String > &namlst, Vector< String > &vallst, const String &nam, const String &val)
| Set (new or overwrite) keyword/value pair.
static Bool | genUnSet (Vector< String > &namlst, Vector< String > &vallst, const String &nam)
| Remove a keyword from list (False if not in list).
static Bool | genGet (String &val, Vector< String > &namlst, Vector< String > &vallst, const String &nam)
| Get the value of a keyword.

## Static Protected Member Functions

static Bool | find (String &value, const String &keyword, uInt start)
| Actual find function.
static Bool | findNoParse (String &value, const String &keyword, uInt start)
| Actual find function to use during parse() without recursing into parse().
static uInt | registerRC (const String &keyword, std::vector< String > &nlst)
| The registration function.
static void | save (const String keyword, const String val)
| Actual saving.

## Private Member Functions

| Aipsrc ()=delete
| ~Aipsrc ()=delete

## Static Private Member Functions

static void | parse ()
| Read in the aipsrc files.
static void | doParse (String &fileList)
static uInt | genParse (Block< String > &keywordPattern, Block< String > &keywordValue, uInt &fileEnd, const String &fileList)
| The following parse function can be used for any list of files.
static Bool | matchKeyword (uInt &where, const String &keyword, uInt start)
| Locate the right keyword in the static maps.
static void | fillAips ()
| Fill in root, arch, site, host and home.

## Static Private Attributes

static std::once_flag | theirCallOnceFlag
| Object to ensure safe multi-threaded lazy single initialization.
static Double | lastParse
| Last time data was (re)read.
static Block< String > | keywordValue
| List of values belonging to keywords found.
static Block< String > | keywordPattern
| List of patterns deducted from names.
static uInt | fileEnd
| The start of the non-home values.
static String | extAipsPath
| The possibly set external AIPSPATH.
static String | root
| AIPSROOT.
static String | arch
| AIPSARCH.
static String | site
| AIPSSITE.
static String | host
| AIPSHOST.
static String | home
| AIPSHOME.
static String | uhome
| HOME.
static Bool | filled
| Indicate above filled.
static std::vector< String > | string_values_
| String register list.
static std::vector< String > | string_names_
static std::vector< uInt > | coded_values_
static std::vector< String > | coded_names_

## Detailed Description

Class to read the casa general resource files

### Intended use:

Public interface

### Review Status

Reviewed By:
  wyoung
Date Reviewed:
  1996/11/25
Test programs:
  tAipsrc

### Prerequisite

- None

### Etymology

A class for getting values from the casa resource files

### Synopsis

The static Aipsrc class can get information from the casa resource files. It has the same functionality as getrc (c program used for Casacore installation scripts).
In addition it acts as a central clearing house between system and software by providing functionality to obtain Casacore system parameters (like AIPSPATH elements), and the possibility of storing system wide information provided by a class for reference by other classes.
The format of a line in a resource file is:

# Line starting with an # in column 1 is a comment (as is an empty line)
keyword: value
keyword: value
casacore::value
NewDelAllocator< T > NewDelAllocator< T >::value
Definition Allocator.h:369

The keyword (starting at first non-blank) consists in general of keyword fields separated by periods:

printer.ps.page
measures.precession.d_interval
measures.nutation.d_interval

and, by preference, in lower case (but search is case sensitive) with an _ as word-parts separator.
The keyword and value are separated by a :. The value is the string from the first non-whitespace character after the separator to the end of the line. Interpretation of the string is in general the program's responsibility, but special find() calls (see below) exist to aid.
Any part of the keyword string can be replaced by a wildcard * to indicate all values with that structure (e.g. *.d_interval would indicate in the example above both the precession and the nutation d_interval.
A match between a keyword to be found and a keyword in the resource files will be the first match (taking wildcards into account) encountered in the search through the resource files. The resource files to be looked at can be defined in the environment variable CASARCFILES. If undefined, the resource files searched are (in the given order):

~/.casarc
~/.casa/rc
~/.aipsrc
$AIPSROOT/.aipsrc
$AIPSHOST/aipsrc
$AIPSSITE/aipsrc
$AIPSARCH/aipsrc

It is not an error for any of the aipsrc files to be absent or empty. However, it is an error if HOME has not been set: an exception will occur. AIPSPATH will in general be read from the global environment variables, but can, before any other Aipsrc related call, be set with the setAipsPath() call.
If AIPSPATH is not set in either way, it is set to the home directory.

The basic interaction with the class is with the static keyword match function

Bool Aipsrc::find(String &result, const String &keyword)
casacore::Aipsrc::find
static Bool find(String &value, const String &keyword)
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40

A set of

Bool AipsrcValue::find(Type &result, const String &keyword,...)
casacore::AipsrcValue::find
static Bool find(T &value, const String &keyword)
The find() functions will, given a keyword, return the value of a matched keyword found in the files.

are available to interpret the string value found. (see AipsrcValue).
All the find functions have the ability to set a default if there is no match, while also unit conversion is possible.
The Bool return indicates if the keyword was found, and, in the case of the interpretative finds, if an 'important' format error was found (e.g. '+12a' will be accepted as a Double, with a result of '12', since the standard double conversion in >> will produce this result.)
Caution: The search keyword (unlike the file keyword) has no wildcards; The real name should, of course, be looked for;
To aid in other places, the following (static) methods are available to get the requested information (derived from HOME and AIPSPATH, computer system information and/or aipsrc keywords):

- const String &Aipsrc::aipsRoot()
- const String &Aipsrc::aipsArch()
- const String &Aipsrc::aipsSite()
- const String &Aipsrc::aipsHost()
- const String &Aipsrc::aipsHome()

Other, numeric, system information can be found in AipsrcValue.

Given an AIPSPATH of

/epp/aips++ sun4sol_gnu epping norma

aipsSite will return

/epp/aips++/sun4sol_gnu/epping

.

The basic find above reacts with the aipsrc files available. If regular access is necessary (e.g. a lot of routines have to check independently a certain integration time limit), keywords can be registered to enable:

- fast access with integer code, rather than string
- ability to set values from programs if no aipsrc information given (a dynamic default)
- update the $HOME/.aipsrc keyword/value list with save()

Tip: The registered value is never equal to zero, hence a zero value can be used to check if registration is done; Also, registering the same keyword twice is safe, and will produce the same value;
When saving a keyword/value pair in $HOME/.aipsrc, the old version is saved in $HOME/.aipsrc.old, before the keyword/value pair is prepended to the file. A limited number of edits of the same keyword is preserved only (default 5, changeable with the user.aipsrc.edit.keep keyword.

### Example

String printerPage; // result of keyword find
if(!Aipsrc::find(printerPage, "printer.ps.page")) { // look for keyword match
printerPage = "notSet";
};

A more convenient way of accomplishing the same result is:

Aipsrc::find(printerPage, "printer.ps.page", "notSet");

Here the final argument is the default to use if the keyword is not found at all.
If you often want to know, dynamically, the current 'printer.ps.page' value, you could do something like:

static uInt pp = Aipsrc::registerRC("printer.ps.page", "noSet");
String printerPage = Aipsrc::get(pp);
// Processing, and maybe somewhere else:
Aipsrc::set(pp, "nowSet");
//..\.
printerPage = Aipsrc::get(pp);
// and save it to the <tt>$HOME/.aipsrc</tt> list
Aipsrc::save(pp);
casacore::Aipsrc::set
static void set(uInt keyword, const String &default_value)
Sets allow registered values to be set.
casacore::Aipsrc::registerRC
static uInt registerRC(const String &keyword, const String &default_value)
Functions to register keywords for later use in get() and set().
casacore::Aipsrc::get
static const String & get(uInt keyword)
Gets are like find, but using registered integers rather than names.
casacore::Aipsrc::save
static void save(uInt keyword)
Save a registered keyword value to $HOME/.aipsrc.
casacore::uInt
unsigned int uInt
Definition aipstype.h:49

### Motivation

Programs need a way to interact with the aipsrc files.

### Thrown Exceptions

- AipsError if the environment variables HOME and/or AIPSPATH not set.

Definition at line 217 of file Aipsrc.h.

## Constructor & Destructor Documentation

## Aipsrc()

casacore::Aipsrc::Aipsrc | ( |  | ) |

private delete

## ~Aipsrc()

casacore::Aipsrc::~Aipsrc | ( |  | ) |

private delete

## Member Function Documentation

## aipsArch()

const String & casacore::Aipsrc::aipsArch | ( |  | ) |

static

## aipsHome()

const String & casacore::Aipsrc::aipsHome | ( |  | ) |

static

Returns: ~/aips++.

## aipsHost()

const String & casacore::Aipsrc::aipsHost | ( |  | ) |

static

## aipsRoot()

const String & casacore::Aipsrc::aipsRoot | ( |  | ) |

static

Returns the appropriate Casacore or system variable values.

## aipsSite()

const String & casacore::Aipsrc::aipsSite | ( |  | ) |

static

## doParse()

void casacore::Aipsrc::doParse | ( | String & | fileList | ) |

static private

## fillAips()

void casacore::Aipsrc::fillAips | ( |  | ) |

static private

Fill in root, arch, site, host and home.

## find() [1/7]

Bool casacore::Aipsrc::find | ( | String & | value,
|  | const String & | keyword )

static

### Thrown Exceptions

- AipsError if HOME environment variable not set

The find() functions will, given a keyword, return the value with a matched keyword found in the files. If no match found the function will be False. The findNoHome() emulates the -i switch of getrc by bypassing the ~/.aipsrc file.

References casacore::NewDelAllocator< T >::value.

## find() [2/7]

Bool casacore::Aipsrc::find | ( | String & | value,
|  | const String & | keyword,
|  | const String & | default_value )

static

This find usually saves you some lines of code, since you can supply the default you want to use when no such keyword is defined.

If the return value is False, the keyword was not found and the default was used.

References casacore::NewDelAllocator< T >::value.

## find() [3/7]

Bool casacore::Aipsrc::find | ( | String & | value,
|  | const String & | keyword,
|  | uInt | start )

static protected

Actual find function.

References casacore::NewDelAllocator< T >::value.

## find() [4/7]

Bool casacore::Aipsrc::find | ( | uInt & | value,
|  | const String & | keyword,
|  | const Vector< String > & | tname )

static

References casacore::NewDelAllocator< T >::value.

## find() [5/7]

Bool casacore::Aipsrc::find | ( | uInt & | value,
|  | const String & | keyword,
|  | const Vector< String > & | tname,
|  | const String & | default_value )

static

References casacore::NewDelAllocator< T >::value.

## find() [6/7]

Bool casacore::Aipsrc::find | ( | uInt & | value,
|  | const String & | keyword,
|  | Int | Nname,
|  | const String | tname[] )

static

These finds check a (possible) value of the keyword against a list of coded values provided, and return an index into the list (N if not found).

Matching is minimax, case insensitive. Always better to use the one with default. return is False if no keyword or no match.

References casacore::NewDelAllocator< T >::value.

## find() [7/7]

Bool casacore::Aipsrc::find | ( | uInt & | value,
|  | const String & | keyword,
|  | Int | Nname,
|  | const String | tname[],
|  | const String & | default_value )

static

References casacore::NewDelAllocator< T >::value.

## findDir()

Bool casacore::Aipsrc::findDir | ( | String & | foundDir,
|  | const String & | lastPart = "",
|  | const Vector< String > & | prepends = Vector< String >(),
|  | const Vector< String > & | appends = Vector< String >(),
|  | Bool | useStds = True )

static

Sets foundDir to the first /firstPart/lastPart path that it finds present on the system, where /firstPart comes from, in order, this list: contents of prepends.

- useStd ? (., aipsHome(), aipsRoot()) : ()
- contents of appends

References casacore::True.

## findNoHome() [1/2]

Bool casacore::Aipsrc::findNoHome | ( | String & | value,
|  | const String & | keyword )

static

References casacore::NewDelAllocator< T >::value.

## findNoHome() [2/2]

Bool casacore::Aipsrc::findNoHome | ( | String & | value,
|  | const String & | keyword,
|  | const String & | default_value )

static

References casacore::NewDelAllocator< T >::value.

## findNoParse()

Bool casacore::Aipsrc::findNoParse | ( | String & | value,
|  | const String & | keyword,
|  | uInt | start )

static protected

Actual find function to use during parse() without recursing into parse().

References casacore::NewDelAllocator< T >::value.

## genGet()

Bool casacore::Aipsrc::genGet | ( | String & | val,
|  | Vector< String > & | namlst,
|  | Vector< String > & | vallst,
|  | const String & | nam )

static

Get the value of a keyword.

## genParse()

uInt casacore::Aipsrc::genParse | ( | Block< String > & | keywordPattern,
|  | Block< String > & | keywordValue,
|  | uInt & | fileEnd,
|  | const String & | fileList )

static private

The following parse function can be used for any list of files.

It will return the list of Patterns and values found, and the last keyword number of first file in list.

References fileEnd, keywordPattern, and keywordValue.

## genRestore()

uInt casacore::Aipsrc::genRestore | ( | Vector< String > & | namlst,
|  | Vector< String > & | vallst,
|  | const String & | fileList )

static

The following set is a general set of functions.

Read aipsrc type files (without wildcards), and return the unique names and values in the Vector arguments. The return value is number of names.

## genSave()

void casacore::Aipsrc::genSave | ( | Vector< String > & | namlst,
|  | Vector< String > & | vallst,
|  | const String & | fnam )

static

Save the names/values in file.

## genSet()

void casacore::Aipsrc::genSet | ( | Vector< String > & | namlst,
|  | Vector< String > & | vallst,
|  | const String & | nam,
|  | const String & | val )

static

Set (new or overwrite) keyword/value pair.

## genUnSet()

Bool casacore::Aipsrc::genUnSet | ( | Vector< String > & | namlst,
|  | Vector< String > & | vallst,
|  | const String & | nam )

static

Remove a keyword from list (False if not in list).

## get() [1/2]

const uInt & casacore::Aipsrc::get | ( | uInt & | code,
|  | uInt | keyword )

static

get for code

## get() [2/2]

const String & casacore::Aipsrc::get | ( | uInt | keyword | ) |

static

Gets are like find, but using registered integers rather than names.

## lastRead()

Double casacore::Aipsrc::lastRead | ( |  | ) |

static

## matchKeyword()

Bool casacore::Aipsrc::matchKeyword | ( | uInt & | where,
|  | const String & | keyword,
|  | uInt | start )

static private

Locate the right keyword in the static maps.

## parse()

void casacore::Aipsrc::parse | ( |  | ) |

static private

Read in the aipsrc files.

Always called using theirCallOnce (except for reRead()).

## patterns()

const Block< String > & casacore::Aipsrc::patterns | ( |  | ) |

static

## registerRC() [1/4]

uInt casacore::Aipsrc::registerRC | ( | const String & | keyword,
|  | const String & | default_value )

static

Functions to register keywords for later use in get() and set().

The returned value is the index for get() and set().

## registerRC() [2/4]

uInt casacore::Aipsrc::registerRC | ( | const String & | keyword,
|  | const Vector< String > & | tname,
|  | const String & | default_value )

static

## registerRC() [3/4]

uInt casacore::Aipsrc::registerRC | ( | const String & | keyword,
|  | Int | Nname,
|  | const String | tname[],
|  | const String & | default_value )

static

## registerRC() [4/4]

uInt casacore::Aipsrc::registerRC | ( | const String & | keyword,
|  | std::vector< String > & | nlst )

static protected

The registration function.

## reRead()

void casacore::Aipsrc::reRead | ( |  | ) |

static

The reRead() function will reinitialise the static maps and read the aipsrc files again.

It could be useful in some interactive circumstances. Note: Calling reRead() while using the static maps is not (thread-)safe. (Getting it right is a lot of work, but why apply settings while processing?) Note: casa_measures MeasTable.cc reads its iau2000_reg and iau2000a_reg upon first uses. Those cached values are not re-read, but only influence what useIAU2000() and useIAU2000A() return.

lastRead() returns the time last reRead.

## save() [1/4]

void casacore::Aipsrc::save | ( | const String | keyword,
|  | const String | val )

static protected

Actual saving.

## save() [2/4]

void casacore::Aipsrc::save | ( | uInt | keyword | ) |

static

Save a registered keyword value to $HOME/.aipsrc.

## save() [3/4]

void casacore::Aipsrc::save | ( | uInt | keyword,
|  | const String | tname[] )

static

## save() [4/4]

void casacore::Aipsrc::save | ( | uInt | keyword,
|  | const Vector< String > & | tname )

static

## set() [1/3]

void casacore::Aipsrc::set | ( | uInt | keyword,
|  | const String & | default_value )

static

Sets allow registered values to be set.

## set() [2/3]

void casacore::Aipsrc::set | ( | uInt | keyword,
|  | const Vector< String > & | tname,
|  | const String & | default_value )

static

## set() [3/3]

void casacore::Aipsrc::set | ( | uInt | keyword,
|  | Int | Nname,
|  | const String | tname[],
|  | const String & | default_value )

static

## setAipsPath()

void casacore::Aipsrc::setAipsPath | ( | const String & | path = String() | ) |

static

Set an AIPSPATH that should be used in stead of a global AIPSPATH.

This call should be made before any Aipsrc related call. The AIPSPATH will have up to 4 fields (which can all be empty) giving the root, host, site and arch directory that will be searched for possible [.]aipsrc files.

## show() [1/2]

void casacore::Aipsrc::show | ( |  | ) |

static

Prints all info on cout.

## show() [2/2]

void casacore::Aipsrc::show | ( | ostream & | oStream | ) |

static

The following show() function, useful for debugging, outputs all keyword/value pairs found.

## values()

const Block< String > & casacore::Aipsrc::values | ( |  | ) |

static

The following functions return the full lists of available data.

They could be useful for debugging purposes.

## Member Data Documentation

## arch

String casacore::Aipsrc::arch

static private

AIPSARCH.

Definition at line 400 of file Aipsrc.h.

## coded_names_

std::vector<String> casacore::Aipsrc::coded_names_

static private

Definition at line 416 of file Aipsrc.h.

## coded_values_

std::vector<uInt> casacore::Aipsrc::coded_values_

static private

Definition at line 415 of file Aipsrc.h.

## extAipsPath

String casacore::Aipsrc::extAipsPath

static private

The possibly set external AIPSPATH.

Definition at line 396 of file Aipsrc.h.

## fileEnd

uInt casacore::Aipsrc::fileEnd

static private

The start of the non-home values.

Definition at line 394 of file Aipsrc.h.

Referenced by genParse().

## filled

Bool casacore::Aipsrc::filled

static private

Indicate above filled.

Definition at line 410 of file Aipsrc.h.

## home

String casacore::Aipsrc::home

static private

AIPSHOME.

Definition at line 406 of file Aipsrc.h.

## host

String casacore::Aipsrc::host

static private

AIPSHOST.

Definition at line 404 of file Aipsrc.h.

## keywordPattern

Block<String> casacore::Aipsrc::keywordPattern

static private

List of patterns deducted from names.

Definition at line 392 of file Aipsrc.h.

Referenced by genParse().

## keywordValue

Block<String> casacore::Aipsrc::keywordValue

static private

List of values belonging to keywords found.

Definition at line 390 of file Aipsrc.h.

Referenced by genParse().

## lastParse

Double casacore::Aipsrc::lastParse

static private

Last time data was (re)read.

Definition at line 388 of file Aipsrc.h.

## root

String casacore::Aipsrc::root

static private

AIPSROOT.

Definition at line 398 of file Aipsrc.h.

## site

String casacore::Aipsrc::site

static private

AIPSSITE.

Definition at line 402 of file Aipsrc.h.

## string_names_

std::vector<String> casacore::Aipsrc::string_names_

static private

Definition at line 414 of file Aipsrc.h.

## string_values_

std::vector<String> casacore::Aipsrc::string_values_

static private

String register list.

Definition at line 413 of file Aipsrc.h.

## theirCallOnceFlag

std::once_flag casacore::Aipsrc::theirCallOnceFlag

static private

Object to ensure safe multi-threaded lazy single initialization.

Definition at line 386 of file Aipsrc.h.

## uhome

String casacore::Aipsrc::uhome

static private

HOME.

Definition at line 408 of file Aipsrc.h.

The documentation for this class was generated from the following file:

- casa/System/Aipsrc.h