CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
L1GtLogicParser Class Reference

#include <L1GtLogicParser.h>

Inheritance diagram for L1GtLogicParser:

Classes

struct  OperandToken
 
struct  OperationRule
 
struct  TokenRPN
 

Public Types

enum  OperationType {
  OP_NULL =1, OP_INVALID =2, OP_AND =4, OP_OR =8,
  OP_NOT =16, OP_OPERAND =32, OP_OPENBRACKET =64, OP_CLOSEBRACKET =128
}
 
typedef std::vector< TokenRPNRpnVector
 

Public Member Functions

void buildOperandTokenVector ()
 
void buildOperandTokenVectorNumExp ()
 
bool buildRpnVector (const std::string &)
 build the rpn vector More...
 
bool checkLogicalExpression (std::string &)
 check a logical expression for correctness - add/remove spaces if needed More...
 
void clearRpnVector ()
 clear possible old rpn vector More...
 
void convertIntToNameLogicalExpression (const std::map< int, std::string > &intToNameMap)
 
void convertNameToIntLogicalExpression (const std::map< std::string, int > &nameToIntMap)
 
virtual const bool expressionResult () const
 
virtual const bool expressionResultNumExp () const
 
std::vector
< L1GtLogicParser::OperandToken
expressionSeedsOperandList ()
 
 L1GtLogicParser ()
 constructor(s) More...
 
 L1GtLogicParser (const RpnVector &, const std::vector< OperandToken > &)
 
 L1GtLogicParser (const std::string &logicalExpressionVal)
 
 L1GtLogicParser (std::string &logicalExpressionVal)
 
 L1GtLogicParser (const std::string logicalExpressionVal, const std::string numericalExpressionVal)
 from a logical and a numerical expression More...
 
 L1GtLogicParser (const std::string &logicalExpressionVal, const std::string &numericalExpressionVal, const bool dummy)
 
std::string logicalExpression () const
 return the logical expression More...
 
std::string numericalExpression () const
 return the numerical expression More...
 
int operandIndex (const std::string &operandNameVal) const
 return the position index of the operand in the logical expression More...
 
std::string operandName (const int iOperand) const
 return the name of the (iOperand)th operand in the logical expression More...
 
bool operandResult (const std::string &operandNameVal) const
 
bool operandResult (const int tokenNumberVal) const
 
bool operandResultNumExp (const std::string &operandNameVal) const
 
bool operandResultNumExp (const int iOperand) const
 
std::vector< OperandToken > & operandTokenVector ()
 return the vector of operand tokens More...
 
const std::vector< OperandToken > & operandTokenVector () const
 
RpnVector rpnVector () const
 return the RPN vector More...
 
virtual ~L1GtLogicParser ()
 destructor More...
 

Protected Member Functions

void addBracketSpaces (const std::string &, std::string &)
 add spaces before and after parantheses More...
 
virtual OperationType getOperation (const std::string &tokenString, OperationType lastOperation, TokenRPN &rpnToken) const
 
const OperationRulegetRuleFromType (OperationType t)
 get the rule entry to an operation type More...
 
bool setLogicalExpression (const std::string &)
 set the logical expression - check for correctness the input string More...
 
bool setNumericalExpression (const std::string &)
 

Protected Attributes

std::string m_logicalExpression
 logical expression to be parsed More...
 
std::string m_numericalExpression
 
std::vector< OperandTokenm_operandTokenVector
 vector of operand tokens More...
 
RpnVector m_rpnVector
 RPN vector - equivalent to the logical expression. More...
 

Static Protected Attributes

static struct OperationRule m_operationRules []
 

Detailed Description

Description: parses a logical expression, with predefined operators.

Implementation: <TODO: enter implementation details>

Author
: Vasile Mihai Ghete - HEPHY Vienna

Description: see header file.

Implementation: <TODO: enter implementation details>

Author
: Vasile Mihai Ghete - HEPHY Vienna

Definition at line 31 of file L1GtLogicParser.h.

Member Typedef Documentation

typedef std::vector<TokenRPN> L1GtLogicParser::RpnVector

Definition at line 60 of file L1GtLogicParser.h.

Member Enumeration Documentation

Enumerator
OP_NULL 
OP_INVALID 
OP_AND 
OP_OR 
OP_NOT 
OP_OPERAND 
OP_OPENBRACKET 
OP_CLOSEBRACKET 

Definition at line 43 of file L1GtLogicParser.h.

Constructor & Destructor Documentation

L1GtLogicParser::L1GtLogicParser ( )

constructor(s)

default constructor

Definition at line 37 of file L1GtLogicParser.cc.

L1GtLogicParser::L1GtLogicParser ( const RpnVector rpnVec,
const std::vector< OperandToken > &  opTokenVector 
)

from the RPN vector and the operand token vector no checks for consistency, empty logical and numerical expressions requires special care when used

Definition at line 46 of file L1GtLogicParser.cc.

L1GtLogicParser::L1GtLogicParser ( const std::string &  logicalExpressionVal)

from a constant logical expression numerical expression will be empty

Definition at line 57 of file L1GtLogicParser.cc.

L1GtLogicParser::L1GtLogicParser ( std::string &  logicalExpressionVal)

Definition at line 75 of file L1GtLogicParser.cc.

L1GtLogicParser::L1GtLogicParser ( const std::string  logicalExpressionVal,
const std::string  numericalExpressionVal 
)

from a logical and a numerical expression

Definition at line 109 of file L1GtLogicParser.cc.

L1GtLogicParser::L1GtLogicParser ( const std::string &  logicalExpressionVal,
const std::string &  numericalExpressionVal,
const bool  dummy 
)

from a logical and a numerical expression no checks for correctness - use it only after the correctness was tested

Definition at line 134 of file L1GtLogicParser.cc.

L1GtLogicParser::~L1GtLogicParser ( )
virtual

destructor

Definition at line 152 of file L1GtLogicParser.cc.

Member Function Documentation

void L1GtLogicParser::addBracketSpaces ( const std::string &  srcExpression,
std::string &  dstExpression 
)
protected

add spaces before and after parantheses

Definition at line 1559 of file L1GtLogicParser.cc.

void L1GtLogicParser::buildOperandTokenVector ( )

build from the RPN vector the operand token vector dummy tokenNumber and tokenResult

Definition at line 434 of file L1GtLogicParser.cc.

void L1GtLogicParser::buildOperandTokenVectorNumExp ( )

build from the RPN vector the operand token vector using a numerical expression

Definition at line 883 of file L1GtLogicParser.cc.

bool L1GtLogicParser::buildRpnVector ( const std::string &  logicalExpressionVal)

build the rpn vector

buildRpnVector Build the postfix notation.

Parameters
expressionThe expression to be parsed.
Returns
"true" if everything was parsed. "false" if an error occured.

Definition at line 196 of file L1GtLogicParser.cc.

bool L1GtLogicParser::checkLogicalExpression ( std::string &  logicalExpressionVal)

check a logical expression for correctness - add/remove spaces if needed

Definition at line 160 of file L1GtLogicParser.cc.

void L1GtLogicParser::clearRpnVector ( )

clear possible old rpn vector

Definition at line 424 of file L1GtLogicParser.cc.

void L1GtLogicParser::convertIntToNameLogicalExpression ( const std::map< int, std::string > &  intToNameMap)

convert a logical expression composed with integer numbers to a logical expression composed with names using a map (int, string)

Definition at line 1133 of file L1GtLogicParser.cc.

void L1GtLogicParser::convertNameToIntLogicalExpression ( const std::map< std::string, int > &  nameToIntMap)

convert the logical expression composed with names to a logical expression composed with int numbers using a (string, int) map

Definition at line 1033 of file L1GtLogicParser.cc.

const bool L1GtLogicParser::expressionResult ( ) const
virtual

return the result for the logical expression require a proper operand token vector

Definition at line 685 of file L1GtLogicParser.cc.

const bool L1GtLogicParser::expressionResultNumExp ( ) const
virtual

return the result for the logical expression require a proper numerical expression

Definition at line 946 of file L1GtLogicParser.cc.

std::vector< L1GtLogicParser::OperandToken > L1GtLogicParser::expressionSeedsOperandList ( )

return the list of operand tokens for the logical expression which are to be used as seeds

Definition at line 1228 of file L1GtLogicParser.cc.

L1GtLogicParser::OperationType L1GtLogicParser::getOperation ( const std::string &  tokenString,
OperationType  lastOperation,
TokenRPN rpnToken 
) const
protectedvirtual

getOperation Get the operation from a string and check if it is allowed

Parameters
tokenStringThe string to examine.
lastOperationThe last operation.
rpnTokenThe destination where the token for postfix notation is written to.
Returns
The Operation type or OP_INVALID, if the operation is not allowed

Definition at line 1490 of file L1GtLogicParser.cc.

const L1GtLogicParser::OperationRule * L1GtLogicParser::getRuleFromType ( OperationType  oType)
protected

get the rule entry to an operation type

getRuleFromType Looks for the entry in the operation rules and returns a reference if it was found

Parameters
oTypeThe type of the operation.
Returns
The reference to the entry or 0 if the Rule was not found.

Definition at line 1538 of file L1GtLogicParser.cc.

std::string L1GtLogicParser::logicalExpression ( ) const
inline

return the logical expression

Definition at line 98 of file L1GtLogicParser.h.

std::string L1GtLogicParser::numericalExpression ( ) const
inline

return the numerical expression

Definition at line 104 of file L1GtLogicParser.h.

int L1GtLogicParser::operandIndex ( const std::string &  operandNameVal) const

return the position index of the operand in the logical expression

Definition at line 496 of file L1GtLogicParser.cc.

std::string L1GtLogicParser::operandName ( const int  iOperand) const

return the name of the (iOperand)th operand in the logical expression

Definition at line 568 of file L1GtLogicParser.cc.

bool L1GtLogicParser::operandResult ( const std::string &  operandNameVal) const

return the result for an operand with name operandNameVal in the logical expression using the operand token vector

Definition at line 642 of file L1GtLogicParser.cc.

bool L1GtLogicParser::operandResult ( const int  tokenNumberVal) const

return the result for an operand with tokenNumberVal using the operand token vector

Definition at line 663 of file L1GtLogicParser.cc.

bool L1GtLogicParser::operandResultNumExp ( const std::string &  operandNameVal) const

return the result for an operand with name operandNameVal in the logical expression using a numerical expression

Definition at line 769 of file L1GtLogicParser.cc.

bool L1GtLogicParser::operandResultNumExp ( const int  iOperand) const

return the result for an operand with index iOperand in the logical expression using a numerical expression

Definition at line 785 of file L1GtLogicParser.cc.

std::vector<OperandToken>& L1GtLogicParser::operandTokenVector ( )
inline

return the vector of operand tokens

Definition at line 122 of file L1GtLogicParser.h.

const std::vector<OperandToken>& L1GtLogicParser::operandTokenVector ( ) const
inline

Definition at line 123 of file L1GtLogicParser.h.

RpnVector L1GtLogicParser::rpnVector ( ) const
inline

return the RPN vector

Definition at line 115 of file L1GtLogicParser.h.

Referenced by L1GtAlgorithm::L1GtAlgorithm().

bool L1GtLogicParser::setLogicalExpression ( const std::string &  logicalExpressionVal)
protected

set the logical expression - check for correctness the input string

Definition at line 1587 of file L1GtLogicParser.cc.

bool L1GtLogicParser::setNumericalExpression ( const std::string &  numericalExpressionVal)
protected

set the numerical expression (the logical expression with each operand replaced with the value) from a string check also for correctness the input string

Definition at line 1618 of file L1GtLogicParser.cc.

Member Data Documentation

std::string L1GtLogicParser::m_logicalExpression
protected

logical expression to be parsed

Definition at line 212 of file L1GtLogicParser.h.

std::string L1GtLogicParser::m_numericalExpression
protected

numerical expression (logical expression with operands replaced with the actual values)

Definition at line 216 of file L1GtLogicParser.h.

std::vector<OperandToken> L1GtLogicParser::m_operandTokenVector
protected

vector of operand tokens

Definition at line 222 of file L1GtLogicParser.h.

struct OperationRule L1GtLogicParser::m_operationRules[]
staticprotected

Definition at line 194 of file L1GtLogicParser.h.

RpnVector L1GtLogicParser::m_rpnVector
protected

RPN vector - equivalent to the logical expression.

Definition at line 219 of file L1GtLogicParser.h.