LRAUV  revA
ValueClause Class Reference

A ValueClause is a set of boolean conditions that may be specified as conditions for executing (or stopping execution of a Behavior. More...

#include <ValueClause.h>

Collaboration diagram for ValueClause:

Classes

struct  ValueClauseOperation
 Represents a comparison and the right hand side of a value clause equation. More...
 
struct  ValueClauseSide
 Represents one side of a value clause equation. More...
 

Public Types

enum  Operation {
  OP_NONE, OP_ADD, OP_AND, OP_DIV,
  OP_EQ, OP_GE, OP_GT, OP_LE,
  OP_LT, OP_MAX, OP_MIN, OP_MOD,
  OP_MULT, OP_NE, OP_OR, OP_POW,
  OP_SUB, OPCOUNT
}
 An attempt to define different comparison operators. More...
 
enum  ReaderOperation { READER_NONE, READER_ELAPSED }
 

Public Member Functions

 ValueClause (DataValue *dataValue, Logger &logger)
 
virtual bool test ()
 
virtual bool eval ()
 
virtual bool evalStr ()
 
virtual ~ValueClause ()
 
Str toString ()
 
DataValuegetDataValue ()
 
bool wasTouchedSinceLastRun (const Component *component)
 

Static Public Member Functions

static ValueClauseInstance (MissionNode *node, bool nodeIsParent, MissionItem *owner, Logger &logger, bool isStrValue=false)
 
static DataReaderReadReader (MissionNode *node, MissionItem *owner, DataValue *defaultValue, Logger &logger, bool deleteDataValue=true)
 
static DataValueReadDataValue (MissionNode *unitNode, Logger &logger)
 
static const UnitReadUnit (MissionNode *unitNode, Logger &logger, bool reportErrors=true)
 
static DataValueReadStrValue (MissionNode *node, Logger &logger)
 
static DataValueReadStrValueUri (MissionNode *node, Logger &logger)
 
static Str StripPastColon (Str name)
 Converts something like Foo:bar.baz into bar.baz. More...
 
static Str StripPastLastDot (Str name)
 Converts something like Foo:bar.baz into baz. More...
 

Static Public Attributes

static const Str OP_NAMES [OPCOUNT]
 

Private Member Functions

 ValueClause (const ValueClause &old)
 
Str sideToString (ValueClauseSide &side)
 
 ValueClause (Logger &logger)
 
bool evalSide (const ValueClauseSide &side)
 

Static Private Member Functions

static Operation ReadComparison (MissionNode *node, Logger &logger)
 
static bool ReadSide (MissionNode *node, ValueClauseSide &side, MissionItem *owner, Logger &logger, bool isStrValue=false)
 
static ValueClauseOperationReadOperation (MissionNode *node, MissionItem *owner, Logger &logger)
 

Private Attributes

Loggerlogger_
 
bool abs_
 
bool negate_
 
DataValuedataValue_
 
ValueClauseSide lhs_
 
FlexArray< ValueClauseOperation * > operations_
 

Detailed Description

A ValueClause is a set of boolean conditions that may be specified as conditions for executing (or stopping execution of a Behavior.

The clause is described in the mission script, and is transformed into a set of ValueClause objects by the static Instance method.

Constructor & Destructor Documentation

ValueClause::ValueClause ( DataValue dataValue,
Logger logger 
)
ValueClause::~ValueClause ( )
virtual

References dataValue_.

ValueClause::ValueClause ( const ValueClause old)
private
ValueClause::ValueClause ( Logger logger)
private

Member Function Documentation

ValueClause::Operation ValueClause::ReadComparison ( MissionNode node,
Logger logger 
)
staticprivate
DataValue * ValueClause::ReadDataValue ( MissionNode unitNode,
Logger logger 
)
static
DataReader * ValueClause::ReadReader ( MissionNode node,
MissionItem owner,
DataValue defaultValue,
Logger logger,
bool  deleteDataValue = true 
)
static
DataValue * ValueClause::ReadStrValueUri ( MissionNode node,
Logger logger 
)
static
const Unit * ValueClause::ReadUnit ( MissionNode unitNode,
Logger logger,
bool  reportErrors = true 
)
static
Str ValueClause::StripPastLastDot ( Str  name)
static

Converts something like Foo:bar.baz into baz.

References Str::findLastOf(), Str::NO_POS, and Str::substr().

Referenced by MissionItem::initializeFromScript(), and DefineBehavior::Instance().

bool ValueClause::test ( )
virtual

Member Data Documentation

bool ValueClause::abs_
private

Referenced by eval(), ReadSide(), and toString().

ValueClauseSide ValueClause::lhs_
private
Logger& ValueClause::logger_
private

Referenced by eval().

bool ValueClause::negate_
private

Referenced by eval(), ReadSide(), and toString().

const Str ValueClause::OP_NAMES
static
Initial value:
=
{
"--INVALID--",
"Add",
"And",
"Div",
"Eq",
"Ge",
"Gt",
"Le",
"Lt",
"Max",
"Min",
"Mod",
"Mult",
"Ne",
"Or",
"Pow",
"Sub",
}

Referenced by ReadComparison(), ReadOperation(), and toString().

FlexArray<ValueClauseOperation*> ValueClause::operations_
private

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