OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
Classes | Typedefs | Enumerations | Functions | Variables
Expressions Namespace Reference

Representation objects and parsers for attribute expressions. More...

Classes

class  Scalar
 A scalar expression. More...
 
class  PtrToScalar
 A pointer to a scalar expression. More...
 
class  ArrayOfPtrs
 An array of pointers to scalar expressions. More...
 
class  OArray
 An array expression. More...
 
class  PtrToArray
 A pointer to an array expression. More...
 
class  SRefAttr
 An attribute defined as a reference to a scalar. More...
 
class  AAutomatic
 Object attribute with an `‘automatic’' array value. More...
 
class  ABinary
 An array expression with two array operands. More...
 
class  AColumn
 An array expression defined as a table column. More...
 
class  ADeferred
 Object attribute with a `‘deferred’' array value. More...
 
class  AList
 An array expression defined by a list of scalar expressions. More...
 
class  ARefExpr
 An expression defined as a reference to an array. More...
 
class  ARow
 An array expression defined as a table row. More...
 
class  ASUnary
 A scalar expression with one array operand. More...
 
class  ATable
 An array expression generated from a TABLE() function. More...
 
class  AUnary
 An array expression with one array operand. More...
 
class  AValue
 Object attribute with a constant array value. More...
 
class  Indexer
 A scalar expression to retrieve an indexed component from an array. More...
 
class  SAutomatic
 Object attribute with an `‘automatic’' scalar value. More...
 
class  SBinary
 A scalar expression with two scalar operands. More...
 
class  SCell
 A scalar expression referring to a table cell. More...
 
class  SConstant
 A scalar constant expression. More...
 
class  SDeferred
 Object attribute with a `‘deferred’' scalar value. More...
 
class  SHash
 A scalar expression. More...
 
class  SNull
 A scalar expression without operands. More...
 
class  SRefExpr
 An expression defined as a reference to a scalar. More...
 
class  SUnary
 A scalar expression with one scalar operand. More...
 
class  SValue
 Object attribute with a constant scalar value. More...
 
struct  TFunction0
 An operand-less function returning a T. More...
 
struct  TFunction1
 A function of one U, returning a T. More...
 
struct  TFunction2
 A function of two U's returning a T. More...
 

Typedefs

typedef TFunction1< double, const std::vector< double > & > ArrayFun
 
typedef Expression Expr_t
 type of an expression More...
 
typedef boost::tuple< double, bool > Result_t
 
typedef std::map< std::string, Expressions::Expr_t * > Named_t
 type of an expressions with a name More...
 
typedef std::pair< std::string, Expressions::Expr_t * > SingleNamed_t
 

Enumerations

enum  Result_tIdx { VALUE , IS_VALID }
 
enum  OperatorType_t {
  NONE , EQ , NOT_EQ , INEQ_LHS ,
  INEQ_LHS_EQ , INEQ_RHS , INEQ_RHS_EQ
}
 distinguish different constraints More...
 

Functions

PtrToScalar< bool > parseBool (Statement &)
 Parse boolean expression. More...
 
PtrToScalar< double > parseReal (Statement &)
 Parse real expression. More...
 
double parseRealConst (Statement &)
 Parse real constant. More...
 
std::string parseString (Statement &, const char msg[])
 Parse string value. More...
 
std::string parseStringValue (Statement &, const char msg[])
 
PtrToArray< bool > parseBoolArray (Statement &)
 Parse boolean array expression. More...
 
PtrToArray< double > parseRealArray (Statement &)
 Parse real array expression. More...
 
PtrToArray< double > parseRealConstArray (Statement &)
 Parse real array constant. More...
 
std::vector< std::string > parseStringArray (Statement &)
 Parse string array. More...
 
void parseDelimiter (Statement &stat, char delim)
 Test for one-character delimiter. More...
 
void parseDelimiter (Statement &stat, const char delim[2])
 Test for two-character delimiter. More...
 
PlaceRep parsePlace (Statement &)
 Parse place specification. More...
 
RangeRep parseRange (Statement &)
 Parse range specification. More...
 
SRefAttr< double > * parseReference (Statement &)
 Parse variable reference. More...
 
TableRowRep parseTableRow (Statement &)
 Parse a token list (for macro argument and the like). More...
 
std::list< TokenparseTokenList (Statement &)
 Parse a token list (for macro argument and the like). More...
 
std::vector< std::list< Token > > parseTokenListArray (Statement &)
 Parse a token list array (for LIST commands). More...
 
PtrToScalar< double > parseTableExpression (Statement &, const Table *)
 Parse table expression (depends on a table's rows). More...
 
bool Or (bool a, bool b)
 
bool And (bool a, bool b)
 
bool Le (double a, double b)
 
bool Lt (double a, double b)
 
bool Ge (double a, double b)
 
bool Gt (double a, double b)
 
bool Eq (double a, double b)
 
bool Ne (double a, double b)
 
double Neg (double a)
 
double Sign (double a)
 
double Tgauss (double a)
 
double Add (double a, double b)
 
double Sub (double a, double b)
 
double Mpy (double a, double b)
 
double Div (double a, double b)
 
double getEkin ()
 
double ranf ()
 
double gauss ()
 
double Max (double a, double b)
 
double Min (double a, double b)
 
double Mod (double a, double b)
 
double Mina (const std::vector< double > &array)
 
double Maxa (const std::vector< double > &array)
 
double Rmsa (const std::vector< double > &array)
 
double AbsMax (const std::vector< double > &array)
 
PtrToScalar< bool > parseAnd (Statement &stat)
 
PtrToArray< double > parseArrayFactor (Statement &stat)
 
PtrToArray< double > parseArrayPrimary (Statement &stat)
 
PtrToArray< double > parseArrayTerm (Statement &stat)
 
void parseBracketList (Statement &stat, char close, std::list< Token > &result)
 
PtrToScalar< double > parseFactor (Statement &stat)
 
PtrToScalar< double > parsePrimary (Statement &stat)
 
PtrToScalar< bool > parseRelation (Statement &stat)
 
PtrToScalar< double > parseTerm (Statement &stat)
 
PtrToArray< double > parseColumnGenerator (Statement &stat)
 
PtrToArray< double > parseRowGenerator (Statement &stat)
 
PtrToArray< double > parseTableGenerator (Statement &stat)
 
template<class T >
std::ostream & operator<< (std::ostream &os, const SRefAttr< T > &a)
 
template<class T >
const T * find (const T table[], const std::string &name)
 Look up name. More...
 

Variables

const TablecurrentTable = 0
 
OwnPtr< ATablecurrentArray
 

Detailed Description

Representation objects and parsers for attribute expressions.

Typedef Documentation

◆ ArrayFun

typedef TFunction1<double, const std::vector<double>&> Expressions::ArrayFun

Definition at line 291 of file Expressions.cpp.

◆ Expr_t

type of an expression

Definition at line 63 of file Expression.h.

◆ Named_t

typedef std::map<std::string, Expressions::Expr_t*> Expressions::Named_t

type of an expressions with a name

Definition at line 74 of file Expression.h.

◆ Result_t

typedef boost::tuple<double, bool> Expressions::Result_t

Definition at line 66 of file Expression.h.

◆ SingleNamed_t

typedef std::pair<std::string, Expressions::Expr_t*> Expressions::SingleNamed_t

Definition at line 77 of file Expression.h.

Enumeration Type Documentation

◆ OperatorType_t

distinguish different constraints

Enumerator
NONE 
EQ 
NOT_EQ 
INEQ_LHS 
INEQ_LHS_EQ 
INEQ_RHS 
INEQ_RHS_EQ 

Definition at line 80 of file Expression.h.

◆ Result_tIdx

Enumerator
VALUE 
IS_VALID 

Definition at line 67 of file Expression.h.

Function Documentation

◆ AbsMax()

double Expressions::AbsMax ( const std::vector< double > &  array)

Definition at line 277 of file Expressions.cpp.

References abs(), endl(), max(), and Options::warn.

Here is the call graph for this function:

◆ Add()

double Expressions::Add ( double  a,
double  b 
)

Definition at line 118 of file Expressions.cpp.

References a.

◆ And()

bool Expressions::And ( bool  a,
bool  b 
)

Definition at line 77 of file Expressions.cpp.

References a.

◆ Div()

double Expressions::Div ( double  a,
double  b 
)

Definition at line 136 of file Expressions.cpp.

References a.

◆ Eq()

bool Expressions::Eq ( double  a,
double  b 
)

Definition at line 92 of file Expressions.cpp.

References a.

◆ find()

template<class T >
const T* Expressions::find ( const T  table[],
const std::string &  name 
)
inline

◆ gauss()

double Expressions::gauss ( )

Definition at line 164 of file Expressions.cpp.

References Random::gauss(), and Options::rangen.

Here is the call graph for this function:

◆ Ge()

bool Expressions::Ge ( double  a,
double  b 
)

Definition at line 86 of file Expressions.cpp.

References a.

Referenced by vmap< Key, T, Compare >::insert().

◆ getEkin()

double Expressions::getEkin ( )

Definition at line 151 of file Expressions.cpp.

References PartBunchBase< T, Dim >::get_meanKineticEnergy(), OpalData::getInstance(), and OpalData::getPartBunch().

Here is the call graph for this function:

◆ Gt()

bool Expressions::Gt ( double  a,
double  b 
)

Definition at line 89 of file Expressions.cpp.

References a.

◆ Le()

bool Expressions::Le ( double  a,
double  b 
)

◆ Lt()

bool Expressions::Lt ( double  a,
double  b 
)

◆ Max()

double Expressions::Max ( double  a,
double  b 
)

Definition at line 207 of file Expressions.cpp.

References a, and max().

Here is the call graph for this function:

◆ Maxa()

double Expressions::Maxa ( const std::vector< double > &  array)

Definition at line 249 of file Expressions.cpp.

References endl(), max(), and Options::warn.

Here is the call graph for this function:

◆ Min()

double Expressions::Min ( double  a,
double  b 
)

Definition at line 211 of file Expressions.cpp.

References a, and min().

Referenced by Mina().

Here is the call graph for this function:

◆ Mina()

double Expressions::Mina ( const std::vector< double > &  array)

Definition at line 235 of file Expressions.cpp.

References endl(), Min(), and Options::warn.

Here is the call graph for this function:

◆ Mod()

double Expressions::Mod ( double  a,
double  b 
)

Definition at line 215 of file Expressions.cpp.

References a, and fmod().

Here is the call graph for this function:

◆ Mpy()

double Expressions::Mpy ( double  a,
double  b 
)

Definition at line 130 of file Expressions.cpp.

References a.

◆ Ne()

bool Expressions::Ne ( double  a,
double  b 
)

Definition at line 95 of file Expressions.cpp.

References a.

◆ Neg()

double Expressions::Neg ( double  a)

Definition at line 101 of file Expressions.cpp.

References a.

◆ operator<<()

template<class T >
std::ostream& Expressions::operator<< ( std::ostream &  os,
const SRefAttr< T > &  a 
)
inline

Definition at line 106 of file SRefAttr.h.

References a.

◆ Or()

bool Expressions::Or ( bool  a,
bool  b 
)

Definition at line 74 of file Expressions.cpp.

References a.

◆ parseAnd()

PtrToScalar< bool > Expressions::parseAnd ( Statement stat)

Definition at line 728 of file Expressions.cpp.

References Statement::delimiter(), Expressions::SBinary< T, U >::make(), and parseRelation().

Referenced by parseBool().

Here is the call graph for this function:

◆ parseArrayFactor()

PtrToArray< double > Expressions::parseArrayFactor ( Statement stat)

Definition at line 741 of file Expressions.cpp.

References Statement::delimiter(), and parseArrayPrimary().

Referenced by parseArrayTerm().

Here is the call graph for this function:

◆ parseArrayPrimary()

PtrToArray< double > Expressions::parseArrayPrimary ( Statement stat)

◆ parseArrayTerm()

PtrToArray< double > Expressions::parseArrayTerm ( Statement stat)

Definition at line 832 of file Expressions.cpp.

References Statement::delimiter(), and parseArrayFactor().

Referenced by parseRealArray().

Here is the call graph for this function:

◆ parseBool()

PtrToScalar< bool > Expressions::parseBool ( Statement stat)

Parse boolean expression.

Definition at line 351 of file Expressions.cpp.

References Statement::delimiter(), Expressions::SBinary< T, U >::make(), and parseAnd().

Referenced by Attributes::Bool::parse(), parseBoolArray(), Attributes::BoolArray::parseComponent(), and parseRelation().

Here is the call graph for this function:

◆ parseBoolArray()

PtrToArray< bool > Expressions::parseBoolArray ( Statement stat)

Parse boolean array expression.

Definition at line 482 of file Expressions.cpp.

References Statement::delimiter(), parseBool(), and parseDelimiter().

Referenced by Attributes::BoolArray::parse().

Here is the call graph for this function:

◆ parseBracketList()

void Expressions::parseBracketList ( Statement stat,
char  close,
std::list< Token > &  result 
)

Definition at line 852 of file Expressions.cpp.

References Statement::atEnd(), Statement::delimiter(), Statement::getCurrent(), and Token::isDel().

Referenced by parseTokenList().

Here is the call graph for this function:

◆ parseColumnGenerator()

PtrToArray< double > Expressions::parseColumnGenerator ( Statement stat)

Definition at line 1048 of file Expressions.cpp.

References Statement::delimiter(), parseDelimiter(), parseRange(), and parseString().

Referenced by parseArrayPrimary().

Here is the call graph for this function:

◆ parseDelimiter() [1/2]

void Expressions::parseDelimiter ( Statement stat,
char  delim 
)

◆ parseDelimiter() [2/2]

void Expressions::parseDelimiter ( Statement stat,
const char  delim[2] 
)

Test for two-character delimiter.

Definition at line 571 of file Expressions.cpp.

References Statement::delimiter().

Here is the call graph for this function:

◆ parseFactor()

PtrToScalar< double > Expressions::parseFactor ( Statement stat)

Definition at line 875 of file Expressions.cpp.

References Statement::delimiter(), Expressions::SBinary< T, U >::make(), and parsePrimary().

Referenced by parseTerm().

Here is the call graph for this function:

◆ parsePlace()

PlaceRep Expressions::parsePlace ( Statement stat)

Parse place specification.

Definition at line 579 of file Expressions.cpp.

References PlaceRep::append(), Statement::delimiter(), Statement::keyword(), name, parseDelimiter(), parseRealConst(), and parseString().

Referenced by Attributes::Place::parse(), parseArrayPrimary(), parsePrimary(), parseRange(), parseRowGenerator(), and parseTableRow().

Here is the call graph for this function:

◆ parsePrimary()

PtrToScalar< double > Expressions::parsePrimary ( Statement stat)

◆ parseRange()

RangeRep Expressions::parseRange ( Statement stat)

Parse range specification.

Definition at line 617 of file Expressions.cpp.

References Statement::delimiter(), Statement::keyword(), and parsePlace().

Referenced by Attributes::Range::parse(), and parseColumnGenerator().

Here is the call graph for this function:

◆ parseReal()

PtrToScalar< double > Expressions::parseReal ( Statement stat)

◆ parseRealArray()

PtrToArray< double > Expressions::parseRealArray ( Statement stat)

Parse real array expression.

Definition at line 500 of file Expressions.cpp.

References Statement::delimiter(), and parseArrayTerm().

Referenced by Attributes::RealArray::parse(), parseArrayPrimary(), parsePrimary(), and parseRealConstArray().

Here is the call graph for this function:

◆ parseRealConst()

double Expressions::parseRealConst ( Statement stat)

Parse real constant.

Definition at line 395 of file Expressions.cpp.

References parseReal().

Referenced by Object::parse(), OpalElement::parse(), OpalParser::parseAssign(), parsePlace(), SequenceParser::parsePosition(), parsePrimary(), parseReference(), parseString(), parseStringValue(), and parseTableGenerator().

Here is the call graph for this function:

◆ parseRealConstArray()

PtrToArray< double > Expressions::parseRealConstArray ( Statement stat)

Parse real array constant.

Definition at line 531 of file Expressions.cpp.

References arg(), and parseRealArray().

Referenced by parseArrayPrimary().

Here is the call graph for this function:

◆ parseReference()

SRefAttr< double > * Expressions::parseReference ( Statement stat)

Parse variable reference.

Definition at line 629 of file Expressions.cpp.

References Statement::delimiter(), parseDelimiter(), parseRealConst(), and parseString().

Referenced by Attributes::Reference::parse().

Here is the call graph for this function:

◆ parseRelation()

PtrToScalar< bool > Expressions::parseRelation ( Statement stat)

◆ parseRowGenerator()

PtrToArray< double > Expressions::parseRowGenerator ( Statement stat)

Definition at line 1071 of file Expressions.cpp.

References Statement::delimiter(), parseDelimiter(), parsePlace(), parseString(), and parseStringArray().

Referenced by parseArrayPrimary().

Here is the call graph for this function:

◆ parseString()

std::string Expressions::parseString ( Statement stat,
const char  msg[] 
)

◆ parseStringArray()

std::vector< std::string > Expressions::parseStringArray ( Statement stat)

Parse string array.

Definition at line 544 of file Expressions.cpp.

References Statement::delimiter(), parseDelimiter(), and parseStringValue().

Referenced by Attributes::StringArray::parse(), Attributes::UpperCaseStringArray::parse(), parseArrayPrimary(), and parseRowGenerator().

Here is the call graph for this function:

◆ parseStringValue()

std::string Expressions::parseStringValue ( Statement stat,
const char  msg[] 
)

◆ parseTableExpression()

PtrToScalar< double > Expressions::parseTableExpression ( Statement stat,
const Table t 
)

Parse table expression (depends on a table's rows).

Definition at line 669 of file Expressions.cpp.

References currentTable, and parseReal().

Referenced by List::list().

Here is the call graph for this function:

◆ parseTableGenerator()

PtrToArray< double > Expressions::parseTableGenerator ( Statement stat)

Definition at line 1093 of file Expressions.cpp.

References currentArray, Statement::delimiter(), parseDelimiter(), parseReal(), and parseRealConst().

Referenced by parseArrayPrimary().

Here is the call graph for this function:

◆ parseTableRow()

TableRowRep Expressions::parseTableRow ( Statement stat)

Parse a token list (for macro argument and the like).

Definition at line 658 of file Expressions.cpp.

References parseDelimiter(), parsePlace(), and parseString().

Referenced by Attributes::TableRow::parse().

Here is the call graph for this function:

◆ parseTerm()

PtrToScalar< double > Expressions::parseTerm ( Statement stat)

Definition at line 1028 of file Expressions.cpp.

References Statement::delimiter(), Expressions::SBinary< T, U >::make(), and parseFactor().

Referenced by parseReal().

Here is the call graph for this function:

◆ parseTokenList()

std::list< Token > Expressions::parseTokenList ( Statement stat)

Parse a token list (for macro argument and the like).

Definition at line 677 of file Expressions.cpp.

References Statement::atEnd(), Statement::getCurrent(), Token::isDel(), Statement::mark(), parseBracketList(), and Statement::restore().

Referenced by Attributes::TokenList::parse(), Attributes::TokenListArray::parseComponent(), and parseTokenListArray().

Here is the call graph for this function:

◆ parseTokenListArray()

std::vector< std::list< Token > > Expressions::parseTokenListArray ( Statement stat)

Parse a token list array (for LIST commands).

Definition at line 708 of file Expressions.cpp.

References Statement::delimiter(), parseDelimiter(), and parseTokenList().

Referenced by Attributes::TokenListArray::parse().

Here is the call graph for this function:

◆ ranf()

double Expressions::ranf ( )

Definition at line 160 of file Expressions.cpp.

References Options::rangen, and Random::uniform().

Here is the call graph for this function:

◆ Rmsa()

double Expressions::Rmsa ( const std::vector< double > &  array)

Definition at line 263 of file Expressions.cpp.

References endl(), sqrt(), and Options::warn.

Here is the call graph for this function:

◆ Sign()

double Expressions::Sign ( double  a)

Definition at line 107 of file Expressions.cpp.

References a.

◆ Sub()

double Expressions::Sub ( double  a,
double  b 
)

Definition at line 124 of file Expressions.cpp.

References a.

◆ Tgauss()

double Expressions::Tgauss ( double  a)

Definition at line 111 of file Expressions.cpp.

References a, abs(), Random::gauss(), and Options::rangen.

Here is the call graph for this function:

Variable Documentation

◆ currentArray

OwnPtr<ATable> Expressions::currentArray

Definition at line 303 of file Expressions.cpp.

Referenced by parsePrimary(), and parseTableGenerator().

◆ currentTable

const Table* Expressions::currentTable = 0

Definition at line 302 of file Expressions.cpp.

Referenced by parsePrimary(), and parseTableExpression().