AURobotServers  4
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
UVarCalcOper Class Reference

#include <uvarcalc.h>

Public Member Functions

bool evaluateD ()
 
bool evaluateOperator (const char *line, const char *start, const char **end, char *errorTxt, const int errorTextCnt, bool syntaxCheck)
 decode an operator More...
 
bool evaluateV ()
 
double getValue ()
 
UVariablegetVar () const
 
void insertOperator (UVarCalcOper *oper)
 
void inverseValue ()
 
void negateValue ()
 
void print (const char *preStr)
 
void remVar ()
 
void setValue (double value, const char *line, const char *start)
 
void setValue (UVariable *val, bool asLocal, const char *line, const char *start)
 
 UVarCalcOper ()
 
 ~UVarCalcOper ()
 

Public Attributes

UVarCalcOperleft
 
int num
 value as UVariable structure More...
 
UVarCalcOperparent
 
UVarCalcOperright
 

Protected Member Functions

void evaluateMinusD ()
 
void evaluateMinusV ()
 
const char * getOperStr ()
 
bool isRem (const char *r)
 

Protected Attributes

bool evalud
 
int oper
 
const char * operLine
 
int operPos
 
int priority
 
double value
 
int valueType
 
UVariablevar
 
bool varLocal
 

Detailed Description

A waiting operator

Constructor & Destructor Documentation

UVarCalcOper::UVarCalcOper ( )

constructor

References evalud, left, oper, operLine, operPos, priority, right, var, and varLocal.

UVarCalcOper::~UVarCalcOper ( )

destructor

References var, and varLocal.

Member Function Documentation

bool UVarCalcOper::evaluateD ( )
void UVarCalcOper::evaluateMinusD ( )
protected

convert all minus operators to + by changing sign of the first right value or convert division to multiplication by a 1/value operation

References evaluateD(), evaluateMinusD(), evalud, left, oper, priority, right, and value.

Referenced by evaluateD(), evaluateMinusD(), and remVar().

void UVarCalcOper::evaluateMinusV ( )
protected

convert all minus operators to + by changing sign of the first right value or convert division to multiplication by a 1/value operation (no good for vectors)

References evaluateMinusV(), evaluateV(), evalud, inverseValue(), left, negateValue(), oper, priority, and right.

Referenced by evaluateMinusV(), evaluateV(), and remVar().

bool UVarCalcOper::evaluateOperator ( const char *  line,
const char *  start,
const char **  end,
char *  errorTxt,
const int  errorTextCnt,
bool  syntaxCheck 
)

decode an operator

Parameters
lineis the original line to decode
startis the position where to search for the operator
endreturns the next unused character after the operator.
Returns
true if an operator is found.

References isRem(), oper, operLine, and priority.

Referenced by UVarCalc::evaluateD(), and UVarCalc::evaluateV().

bool UVarCalcOper::evaluateV ( )
const char * UVarCalcOper::getOperStr ( )
protected
Returns
operator as string

References oper.

Referenced by print(), and remVar().

double UVarCalcOper::getValue ( )
inline

Get value

References value.

Referenced by UVarCalc::evaluateD().

UVariable* UVarCalcOper::getVar ( ) const
inline

Get pointer to value variable

References var.

Referenced by UVarCalc::evaluateV().

void UVarCalcOper::insertOperator ( UVarCalcOper oper)

insert an new operator relative to this

References insertOperator(), left, oper, parent, priority, and right.

Referenced by UVarCalc::evaluateD(), UVarCalc::evaluateV(), and insertOperator().

void UVarCalcOper::inverseValue ( )

Do an element-wise inverse of the variable

References UVariable::inverse(), var, and varLocal.

Referenced by evaluateMinusV(), and remVar().

bool UVarCalcOper::isRem ( const char *  r)
protected

Is the string at this position a remark? A remark starts at a '#', a ';' or a '//'

Returns
true if a remark starts here.

Referenced by evaluateOperator(), and remVar().

void UVarCalcOper::negateValue ( )

Do an element-wise negation of the variable

References UVariable::negate(), var, and varLocal.

Referenced by evaluateMinusV(), and remVar().

void UVarCalcOper::print ( const char *  preStr)

Set a UVariable value in this operator structure print the operator status

References evalud, getOperStr(), left, oper, print(), right, and value.

Referenced by print().

void UVarCalcOper::remVar ( )
inline
void UVarCalcOper::setValue ( double  value,
const char *  line,
const char *  start 
)

set base values

References evalud, operLine, operPos, priority, and value.

Referenced by UVarCalc::evaluateD(), and UVarCalc::evaluateV().

void UVarCalcOper::setValue ( UVariable val,
bool  asLocal,
const char *  line,
const char *  start 
)

Set value for this operator

Parameters
valis the source value
asLocalshould operator take resoncibility for deletion of variable?
linesource line for variable
startposition of evaluation

References UVariable::copy(), evalud, operLine, operPos, priority, var, and varLocal.

Member Data Documentation

bool UVarCalcOper::evalud
protected
UVarCalcOper* UVarCalcOper::left

operator string left side value

Referenced by evaluateD(), evaluateMinusD(), evaluateMinusV(), evaluateV(), insertOperator(), print(), and UVarCalcOper().

int UVarCalcOper::num

value as UVariable structure

Referenced by UVarCalc::evaluateV().

int UVarCalcOper::oper
protected
const char* UVarCalcOper::operLine
protected

operation line

Referenced by evaluateD(), evaluateOperator(), evaluateV(), setValue(), and UVarCalcOper().

int UVarCalcOper::operPos
protected

operator position in string

Referenced by evaluateD(), evaluateV(), setValue(), and UVarCalcOper().

UVarCalcOper* UVarCalcOper::parent

parent operator

Referenced by UVarCalc::evaluateD(), UVarCalc::evaluateV(), and insertOperator().

int UVarCalcOper::priority
protected

Priority 1 boolean, 2 addition, 3 mult, 4 exp

Referenced by evaluateMinusD(), evaluateMinusV(), evaluateOperator(), insertOperator(), setValue(), and UVarCalcOper().

UVarCalcOper* UVarCalcOper::right
double UVarCalcOper::value
protected
int UVarCalcOper::valueType
protected

Value type 1=bool, 2=int, 3=double, 4=variable

UVariable* UVarCalcOper::var
protected

Value as variable reference

Referenced by evaluateV(), getVar(), inverseValue(), negateValue(), remVar(), setValue(), UVarCalcOper(), and ~UVarCalcOper().

bool UVarCalcOper::varLocal
protected

Is the variable locally created - and thus should be deleted

Referenced by evaluateV(), inverseValue(), negateValue(), remVar(), setValue(), UVarCalcOper(), and ~UVarCalcOper().


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