casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
casacore::MUString Class Reference

Pointed String class to aid analysis of quantity strings. More...

#include <MUString.h>

Public Member Functions

 MUString ()
 Default constructor creates an empty string. More...
 MUString (const String &in)
 Create from String; setting pointer at start. More...
 MUString (const Char *in)
 MUString (char in)
 MUString (const MUString &other)
 Copy constructor; new pointer will be same as old. More...
MUStringoperator= (const MUString &other)
 Copy assignment; new pointer will be same as old. More...
 ~MUString ()
 Destructor. More...
String operator() ()
 Obtain remaining string (same as get()). More...
void push ()
 Save current pointer on internal stack. More...
void pop ()
 Restore pointer from stack (or set to start if stack empty) More...
void unpush ()
 Restore stack for one level. More...
void skipBlank ()
 Act on whitespace; adjusting pointer if skip. More...
Bool testBlank () const
Bool tSkipBlank ()
void skipSign ()
 Act on sign; return +1 or -1 depending on signs found (– == +) More...
Bool testSign () const
Bool tSkipSign ()
Int getSign ()
void skipInt ()
 Act on integer field. More...
Bool testInt () const
Bool tSkipInt ()
Int getInt ()
void skipuInt ()
Bool tSkipuInt ()
Bool testuInt () const
uInt getuInt ()
void skipDouble ()
 Act on Double field. More...
Bool testDouble () const
Bool tSkipDouble ()
Double getDouble ()
void skipChar (Int n=1)
 Act on character(s) More...
void skipChar (Char ch)
Bool tSkipChar (Char nc)
void skipCharNC (Char ch)
Bool tSkipCharNC (Char ch)
Bool tSkipOneChar (Char ch)
Bool tSkipOneCharNC (Char ch)
void skipChar (const Regex &ex)
Bool tSkipChar (const Regex &ex)
void skipAlpha ()
Bool tSkipAlpha ()
void skipNum ()
Bool tSkipNum ()
void skipAlphaNum ()
Bool tSkipAlphaNum ()
Bool testChar (Char ch) const
Bool testCharNC (Char ch) const
Bool testChar (const Regex &ex) const
Bool testAlpha () const
Bool testNum () const
Bool testAlphaNum () const
Char getChar ()
String getAlpha ()
String getAlphaNum ()
Bool testString (const Regex &ex) const
 Act on series of characters. More...
Bool testString (const String &ex) const
Bool testStringNC (const String &ex) const
Bool tSkipString (const Regex &ex)
Bool tSkipString (const String &ex)
Bool tSkipStringNC (const String &ex)
void skipString (const Regex &ex)
void skipString (const String &ex)
void skipStringNC (const String &ex)
String getString (const Regex &ex)
String getString (const String &ex)
String getStringNC (const String &ex)
Bool matchPair (Char nd)
 Match a pair of opening(at pointer)/closing characters (e.g. More...
Int freqChar (Char ch) const
 Get frequency of occurrence. More...
String get ()
 Get part of string. More...
String get (uInt st)
String get (uInt st, uInt nd)
Int getPtr () const
 Get pointer. More...
void setPtr (Int in=0)
 (Re-)set pointer More...
Bool eos () const
 test for end of string More...
Bool status () const
 Get status last get. More...
const StringlastGet () const
 Get String found at last get. More...

Static Public Member Functions

static uInt minimaxNC (const String &in, Int N_name, const String tname[])
 Do minimax check on list of Strings. More...
static uInt minimaxNC (const String &in, const Vector< String > &tname)

Private Member Functions

void adjustPtr (Int in)
 Member functions Make a new pointer between 0 and len inclusive. More...
Int initLast ()
 Initialise last settings; return pointer. More...
void setLast (Int st)
 Set last settings. More...

Private Attributes

String str

String value More...

uInt ptr
 0-based pointer into string More...
uInt len
 Length of string. More...
Block< uIntstack
 Pointer stack. More...
uInt stpt
 Pointer into stack. More...
Bool stat
 Status of last get. More...
String lget
 String found at last get. More...


ostream & operator<< (ostream &os, const MUString &in)
 Output String starting at pointer. More...

Detailed Description

Pointed String class to aid analysis of quantity strings.

Review Status

Reviewed By:
Date Reviewed:
Test programs:



From Measure Utility String


The MUString is a class with a String and an embedded pointer. It can be used to linearly analyse a string for its semantics. Imagine for instance a string that represents an angle. It could be formatted as [+-]hh:mm:ss.ttt or as [+-]hh[hH]mm[mM] or as [+-] or with .'s replaced with dms or as [+-]ddd.fff deg etc.
The available methods aid in analysing this string (see example).
The following analysis method classes are avaible:

The following types (X in the above list) are available

General string aids are available. The main one a minimax, caseless check of an input String against a vector: static uInt minimaxNC(String in, Int N_name, String name[]) and its vector equivalent: static uInt minimaxNC(String in, Vector<String> name). Success is indicated by a return value less than N_name or the vector length.


See MVAngle class for example background. The following example is the conversion of different input angle formats to a Quantity. A full blown example, but gives some idea of intricacies involved.

res = Quantity(0.0, "rad"); // result
MUString tmp(in); // Pointed non-const String
Double s = tmp.getSign(); // sign
tmp.push(); // Save position to rescan
Double r = tmp.getuInt(); // first field
Int tp = 0; // distributor
if (tmp.tSkipChar('.')) { // if more than one., dms format
Double r1 = tmp.getuInt();
if (tmp.tSkipChar('.')) {
r += r1/60.0 + tmp.getDouble()/3600.0;
tp = 4;
} else { // else value with units
tmp.pop(); // Reset position
r = tmp.getDouble();
} else if (tmp.tSkipCharNC('d')) { // dms
tp = 1;
} else if (tmp.tSkipCharNC('h')) { // hms
tp = 2;
} else if (tmp.tSkipChar(':')) { // hms
tp = 3;
switch (tp) {
case 0: {
UnitVal u; String us;
if (!MVAngle::unitString(u,us,tmp)) return False;
r *= s;
if (u == UnitVal::NODIM) { // check correct dimension
res = Quantity(r,"rad");
return True;
if (u == UnitVal::ANGLE) {
res = Quantity(r,us);
return True;
if (u == UnitVal::TIME) {
res = Quantity(Quantity(r/240.,us).getBaseValue(), "deg");
return True;
return False;
case 1:
case 2:
case 3: { // get remainder od ms and hms formats
Char tc = 'm';
if (tp == 3) tc = ':';
Double r1 = tmp.getuInt();
if (tmp.tSkipChar('.')) {
r += tmp.getDouble()/3600.;
} else if (tmp.tSkipCharNC(tc)) {
r += r1/60.0 + tmp.getDouble()/3600.;
} else {
r += r1/3600.0;
r *= s;
switch (tp) { // make correct units
case 1:
case 4:
res = Quantity(r,"deg");
case 2:
case 3:
res = Quantity(Quantity(r/240.,"h").getBaseValue(), "deg");
return True;


The class was written to be able to analyse an input string for its Quantum representation as value with units, or os a date/time or as an angle.

To Do

Definition at line 229 of file MUString.h.

Constructor & Destructor Documentation

casacore::MUString::MUString ( )

Default constructor creates an empty string.

casacore::MUString::MUString ( const String in)

Create from String; setting pointer at start.

casacore::MUString::MUString ( const Char in)
casacore::MUString::MUString ( char  in)
casacore::MUString::MUString ( const MUString other)

Copy constructor; new pointer will be same as old.

casacore::MUString::~MUString ( )


Member Function Documentation

void casacore::MUString::adjustPtr ( Int  in)

Member functions Make a new pointer between 0 and len inclusive.

Bool casacore::MUString::eos ( ) const

test for end of string

Int casacore::MUString::freqChar ( Char  ch) const

Get frequency of occurrence.

String casacore::MUString::get ( )

Get part of string.

String casacore::MUString::get ( uInt  st)
String casacore::MUString::get ( uInt  st,
uInt  nd 
String casacore::MUString::getAlpha ( )
String casacore::MUString::getAlphaNum ( )
Char casacore::MUString::getChar ( )
Double casacore::MUString::getDouble ( )
Int casacore::MUString::getInt ( )
Int casacore::MUString::getPtr ( ) const

Get pointer.

Int casacore::MUString::getSign ( )
String casacore::MUString::getString ( const Regex ex)
String casacore::MUString::getString ( const String ex)
String casacore::MUString::getStringNC ( const String ex)
uInt casacore::MUString::getuInt ( )
Int casacore::MUString::initLast ( )

Initialise last settings; return pointer.

const String& casacore::MUString::lastGet ( ) const

Get String found at last get.

Bool casacore::MUString::matchPair ( Char  nd)

Match a pair of opening(at pointer)/closing characters (e.g.

(and)). Return False if wrong semantics. The string between the pair (excluding them) will be put in Last. If false, the ptr will be as originally; if True it will point beyond the matched closing character

static uInt casacore::MUString::minimaxNC ( const String in,
Int  N_name,
const String  tname[] 

Do minimax check on list of Strings.

static uInt casacore::MUString::minimaxNC ( const String in,
const Vector< String > &  tname 
String casacore::MUString::operator() ( )

Obtain remaining string (same as get()).

MUString& casacore::MUString::operator= ( const MUString other)

Copy assignment; new pointer will be same as old.

void casacore::MUString::pop ( )

Restore pointer from stack (or set to start if stack empty)

void casacore::MUString::push ( )

Save current pointer on internal stack.

void casacore::MUString::setLast ( Int  st)

Set last settings.

void casacore::MUString::setPtr ( Int  in = 0)

(Re-)set pointer

void casacore::MUString::skipAlpha ( )
void casacore::MUString::skipAlphaNum ( )
void casacore::MUString::skipBlank ( )

Act on whitespace; adjusting pointer if skip.

void casacore::MUString::skipChar ( Int  n = 1)

Act on character(s)

void casacore::MUString::skipChar ( Char  ch)
void casacore::MUString::skipChar ( const Regex ex)
void casacore::MUString::skipCharNC ( Char  ch)
void casacore::MUString::skipDouble ( )

Act on Double field.

If no value 0 returned and False.

void casacore::MUString::skipInt ( )

Act on integer field.

If no integer found in 0 returned; and False

void casacore::MUString::skipNum ( )
void casacore::MUString::skipSign ( )

Act on sign; return +1 or -1 depending on signs found (– == +)

void casacore::MUString::skipString ( const Regex ex)
void casacore::MUString::skipString ( const String ex)
void casacore::MUString::skipStringNC ( const String ex)
void casacore::MUString::skipuInt ( )
Bool casacore::MUString::status ( ) const

Get status last get.

Bool casacore::MUString::testAlpha ( ) const
Bool casacore::MUString::testAlphaNum ( ) const
Bool casacore::MUString::testBlank ( ) const
Bool casacore::MUString::testChar ( Char  ch) const
Bool casacore::MUString::testChar ( const Regex ex) const
Bool casacore::MUString::testCharNC ( Char  ch) const
Bool casacore::MUString::testDouble ( ) const
Bool casacore::MUString::testInt ( ) const
Bool casacore::MUString::testNum ( ) const
Bool casacore::MUString::testSign ( ) const
Bool casacore::MUString::testString ( const Regex ex) const

Act on series of characters.

Bool casacore::MUString::testString ( const String ex) const
Bool casacore::MUString::testStringNC ( const String ex) const
Bool casacore::MUString::testuInt ( ) const
Bool casacore::MUString::tSkipAlpha ( )
Bool casacore::MUString::tSkipAlphaNum ( )
Bool casacore::MUString::tSkipBlank ( )
Bool casacore::MUString::tSkipChar ( Char  nc)
Bool casacore::MUString::tSkipChar ( const Regex ex)
Bool casacore::MUString::tSkipCharNC ( Char  ch)
Bool casacore::MUString::tSkipDouble ( )
Bool casacore::MUString::tSkipInt ( )
Bool casacore::MUString::tSkipNum ( )
Bool casacore::MUString::tSkipOneChar ( Char  ch)
Bool casacore::MUString::tSkipOneCharNC ( Char  ch)
Bool casacore::MUString::tSkipSign ( )
Bool casacore::MUString::tSkipString ( const Regex ex)
Bool casacore::MUString::tSkipString ( const String ex)
Bool casacore::MUString::tSkipStringNC ( const String ex)
Bool casacore::MUString::tSkipuInt ( )
void casacore::MUString::unpush ( )

Restore stack for one level.

Friends And Related Function Documentation

ostream& operator<< ( ostream &  os,
const MUString in 

Output String starting at pointer.

Member Data Documentation

uInt casacore::MUString::len

Length of string.

Definition at line 392 of file MUString.h.

String casacore::MUString::lget

String found at last get.

Definition at line 400 of file MUString.h.

uInt casacore::MUString::ptr

0-based pointer into string

Definition at line 390 of file MUString.h.

Block<uInt> casacore::MUString::stack

Pointer stack.

Definition at line 394 of file MUString.h.

Bool casacore::MUString::stat

Status of last get.

Definition at line 398 of file MUString.h.

uInt casacore::MUString::stpt

Pointer into stack.

Definition at line 396 of file MUString.h.

String casacore::MUString::str


String value

Definition at line 388 of file MUString.h.

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