Yate
ExpOperation Class Reference

A single operation in an expression. More...

#include <yatescript.h>

Inheritance diagram for ExpOperation:
NamedString String GenObject ExpFunction ExpWrapper

Public Member Functions

 ExpOperation (const ExpOperation &original)
 
 ExpOperation (const ExpOperation &original, const char *name, bool copyType=true)
 
 ExpOperation (const String &value, const char *name=0, bool autoNum=false)
 
 ExpOperation (const char *value, const char *name=0)
 
 ExpOperation (int64_t value, const char *name=0)
 
 ExpOperation (bool value, const char *name=0)
 
 ExpOperation (ExpEvaluator::Opcode oper, const char *name=0, int64_t value=nonInteger(), bool barrier=false)
 
 ExpOperation (ExpEvaluator::Opcode oper, const char *name, const char *value, bool barrier=false)
 
 ExpOperation (ExpEvaluator::Opcode oper, const char *name, const char *value, int64_t number, bool barrier)
 
ExpEvaluator::Opcode opcode () const
 
bool isInteger () const
 
int64_t number () const
 
bool isBoolean () const
 
bool isNumber () const
 
bool barrier () const
 
unsigned int lineNumber () const
 
void lineNumber (unsigned int line)
 
int64_t operator= (int64_t num)
 
virtual int64_t valInteger (int64_t defVal=0) const
 
virtual int64_t toNumber () const
 
virtual bool valBoolean (bool defVal=false) const
 
virtual const char * typeOf () const
 
virtual ExpOperationclone (const char *name) const
 
ExpOperationclone () const
 
virtual ExpOperationcopy (ScriptMutex *mtx) const
 
- Public Member Functions inherited from NamedString
 NamedString (const char *name, const char *value=0)
 
const Stringname () const
 
virtual const StringtoString () const
 
virtual void * getObject (const String &name) const
 
NamedStringoperator= (const char *value)
 
- Public Member Functions inherited from String
 String ()
 
 String (const char *value, int len=-1)
 
 String (char value, unsigned int repeat=1)
 
 String (int32_t value)
 
 String (uint32_t value)
 
 String (int64_t value)
 
 String (uint64_t value)
 
 String (bool value)
 
 String (double value)
 
 String (const String &value)
 
 String (const String *value)
 
virtual ~String ()
 
const char * c_str () const
 
const char * safe () const
 
const char * safe (const char *defStr) const
 
unsigned int length () const
 
bool null () const
 
int lenUtf8 (uint32_t maxChar=0x10ffff, bool overlong=false) const
 
int fixUtf8 (const char *replace=0, uint32_t maxChar=0x10ffff, bool overlong=false)
 
unsigned int encodeFlags (const TokenDict *tokens) const
 
uint64_t encodeFlags (const TokenDict64 *tokens) const
 
const StringdecodeFlags (unsigned int flags, const TokenDict *tokens, bool unknownflag=true)
 
const StringdecodeFlags (uint64_t flags, const TokenDict64 *tokens, bool unknownflag=true)
 
bool checkBOM () const
 
bool stripBOM ()
 
unsigned int hash () const
 
void clear ()
 
char at (int index) const
 
String substr (int offs, int len=-1) const
 
StringtrimBlanks ()
 
StringtrimSpaces ()
 
int toInteger (int defvalue=0, int base=0, int minvalue=INT_MIN, int maxvalue=INT_MAX, bool clamp=true) const
 
int toInteger (const TokenDict *tokens, int defvalue=0, int base=0) const
 
long int toLong (long int defvalue=0, int base=0, long int minvalue=LONG_MIN, long int maxvalue=LONG_MAX, bool clamp=true) const
 
int64_t toInt64 (int64_t defvalue=0, int base=0, int64_t minvalue=LLONG_MIN, int64_t maxvalue=LLONG_MAX, bool clamp=true) const
 
uint64_t toUInt64 (uint64_t defvalue=0, int base=0, uint64_t minvalue=0, uint64_t maxvalue=ULLONG_MAX, bool clamp=true) const
 
double toDouble (double defvalue=0.0) const
 
bool toBoolean (bool defvalue=false) const
 
bool isBoolean () const
 
StringtoUpper ()
 
StringtoLower ()
 
char operator[] (signed int index) const
 
char operator[] (unsigned int index) const
 
 operator const char * () const
 
Stringassign (const char *value, int len=-1)
 
Stringassign (char value, unsigned int repeat=1)
 
Stringhexify (void *data, unsigned int len, char sep=0, bool upCase=false)
 
Stringoperator= (const String &value)
 
Stringoperator= (const String *value)
 
Stringoperator= (const char *value)
 
Stringoperator= (char value)
 
Stringoperator= (int32_t value)
 
Stringoperator= (uint32_t value)
 
Stringoperator= (int64_t value)
 
Stringoperator= (uint64_t value)
 
Stringoperator= (bool value)
 
Stringoperator= (double value)
 
Stringoperator+= (const char *value)
 
Stringoperator+= (char value)
 
Stringoperator+= (int32_t value)
 
Stringoperator+= (uint32_t value)
 
Stringoperator+= (int64_t value)
 
Stringoperator+= (uint64_t value)
 
Stringoperator+= (bool value)
 
Stringoperator+= (double value)
 
bool operator== (const char *value) const
 
bool operator!= (const char *value) const
 
bool operator== (const String &value) const
 
bool operator!= (const String &value) const
 
bool operator&= (const char *value) const
 
bool operator|= (const char *value) const
 
Stringoperator<< (const char *value)
 
Stringoperator<< (char value)
 
Stringoperator<< (int32_t value)
 
Stringoperator<< (uint32_t value)
 
Stringoperator<< (int64_t value)
 
Stringoperator<< (uint64_t value)
 
Stringoperator<< (bool value)
 
Stringoperator<< (double value)
 
Stringoperator>> (const char *skip)
 
Stringoperator>> (char &store)
 
Stringoperator>> (UChar &store)
 
Stringoperator>> (int &store)
 
Stringoperator>> (unsigned int &store)
 
Stringoperator>> (bool &store)
 
Stringappend (const char *value, int len)
 
Stringappend (const char *value, const char *separator=0, bool force=false)
 
Stringappend (const ObjList *list, const char *separator=0, bool force=false)
 
Stringappend (const ObjList &list, const char *separator=0, bool force=false)
 
Stringappend (double value, unsigned int decimals=3)
 
Stringprintf (const char *format,...)
 
Stringprintf (unsigned int length, const char *format,...)
 
StringappendFixed (unsigned int fixedLength, const char *str, unsigned int len=-1, char fill=' ', int align=Left)
 
StringappendFixed (unsigned int fixedLength, const String &str, char fill=' ', int align=Left)
 
int find (char what, unsigned int offs=0) const
 
int find (const char *what, unsigned int offs=0) const
 
int rfind (char what) const
 
int rfind (const char *what) const
 
bool startsWith (const char *what, bool wordBreak=false, bool caseInsensitive=false) const
 
bool endsWith (const char *what, bool wordBreak=false, bool caseInsensitive=false) const
 
bool startSkip (const char *what, bool wordBreak=true, bool caseInsensitive=false)
 
StringextractTo (const char *sep, String &store)
 
StringextractTo (const char *sep, bool &store)
 
StringextractTo (const char *sep, int &store, int base=0)
 
StringextractTo (const char *sep, int &store, const TokenDict *tokens, int base=0)
 
StringextractTo (const char *sep, double &store)
 
virtual bool matches (const String &value) const
 
bool matches (const Regexp &rexp)
 
int matchOffset (int index=0) const
 
int matchLength (int index=0) const
 
String matchString (int index=0) const
 
String replaceMatches (const String &templ) const
 
int matchCount () const
 
ObjListsplit (char separator, bool emptyOK=true) const
 
ObjListsplit (const Regexp &reg, bool emptyOK=true) const
 
String msgEscape (char extraEsc=0) const
 
String msgUnescape (int *errptr=0, char extraEsc=0) const
 
String sqlEscape (char extraEsc=0) const
 
String uriEscape (char extraEsc=0, const char *noEsc=0) const
 
String uriUnescape (int *errptr=0) const
 
- Public Member Functions inherited from GenObject
 GenObject ()
 
virtual ~GenObject ()
 
virtual bool alive () const
 
virtual void destruct ()
 
virtual const StringtraceId () const
 
NamedCountergetObjCounter () const
 
NamedCountersetObjCounter (NamedCounter *counter)
 

Static Public Member Functions

static int64_t nonInteger ()
 
- Static Public Member Functions inherited from String
static const Stringempty ()
 
static const char * boolText (bool value)
 
static int lenUtf8 (const char *value, uint32_t maxChar=0x10ffff, bool overlong=false)
 
static bool checkBOM (const char *str)
 
static bool stripBOM (const char *&str)
 
static bool stripBOM (char *&str)
 
static unsigned int hash (const char *value, unsigned int h=0)
 
static String msgEscape (const char *str, char extraEsc=0)
 
static String msgUnescape (const char *str, int *errptr=0, char extraEsc=0)
 
static String sqlEscape (const char *str, char extraEsc=0)
 
static String uriEscape (const char *str, char extraEsc=0, const char *noEsc=0)
 
static String uriEscape (const char *str, const char *extraEsc, const char *noEsc=0)
 
static String uriUnescape (const char *str, int *errptr=0)
 
static const Stringatom (const String *&str, const char *val)
 
- Static Public Member Functions inherited from GenObject
static void * getObject (const String &name, const GenObject *obj)
 
static bool getObjCounting ()
 
static void setObjCounting (bool enable)
 
static NamedCountergetObjCounter (const String &name, bool create=true)
 
static ObjListgetObjCounters ()
 

Friends

class ExpEvaluator
 

Additional Inherited Members

- Public Types inherited from String
enum  Align { Left = 0 , Center , Right }
 
- Protected Member Functions inherited from String
virtual void changed ()
 

Detailed Description

A single operation in an expression.

This class describes a single operation in an expression evaluator

Constructor & Destructor Documentation

◆ ExpOperation() [1/9]

◆ ExpOperation() [2/9]

ExpOperation ( const ExpOperation & original,
const char * name,
bool copyType = true )
inline

Copy constructor with renaming, to be used for named results

Parameters
originalOperation to copy
nameName of the newly created operation
copyTypeTrue to copy operation type, false to create an OpcPush

References barrier(), ExpOperation(), isBoolean(), isNumber(), lineNumber(), NamedString::name(), NamedString::NamedString(), number(), and opcode().

◆ ExpOperation() [3/9]

ExpOperation ( const String & value,
const char * name = 0,
bool autoNum = false )
inlineexplicit

Push String constructor

Parameters
valueString constant to push on stack on execution
nameOptional of the newly created constant
autoNumAutomatically convert to number if possible

References isBoolean(), NamedString::name(), NamedString::NamedString(), nonInteger(), String::String(), String::toBoolean(), and String::toInt64().

◆ ExpOperation() [4/9]

ExpOperation ( const char * value,
const char * name = 0 )
inlineexplicit

Push literal string constructor

Parameters
valueString constant to push on stack on execution
nameOptional of the newly created constant

References NamedString::name(), NamedString::NamedString(), and nonInteger().

◆ ExpOperation() [5/9]

ExpOperation ( int64_t value,
const char * name = 0 )
inlineexplicit

Push 64 bit Number constructor

Parameters
valueInteger constant to push on stack on execution
nameOptional of the newly created constant

References NamedString::name(), NamedString::NamedString(), and nonInteger().

◆ ExpOperation() [6/9]

ExpOperation ( bool value,
const char * name = 0 )
inlineexplicit

Push Boolean constructor

Parameters
valueBoolean constant to push on stack on execution
nameOptional of the newly created constant

References String::boolText(), NamedString::name(), NamedString::NamedString(), and String::String().

◆ ExpOperation() [7/9]

ExpOperation ( ExpEvaluator::Opcode oper,
const char * name = 0,
int64_t value = nonInteger(),
bool barrier = false )
inline

Constructor from components

Parameters
operOperation code
nameOptional name of the operation or result
valueOptional integer constant used as function parameter count
barrierTrue if the operation is an expression barrier on the stack

References barrier(), NamedString::name(), NamedString::NamedString(), and nonInteger().

◆ ExpOperation() [8/9]

ExpOperation ( ExpEvaluator::Opcode oper,
const char * name,
const char * value,
bool barrier = false )
inline

Constructor of non-integer operation from components

Parameters
operOperation code
nameName of the operation or result
valueString value of operation
barrierTrue if the operation is an expression barrier on the stack

References barrier(), NamedString::name(), NamedString::NamedString(), and nonInteger().

◆ ExpOperation() [9/9]

ExpOperation ( ExpEvaluator::Opcode oper,
const char * name,
const char * value,
int64_t number,
bool barrier )
inline

Constructor from components

Parameters
operOperation code
nameOptional name of the operation or result
valueString value of operation
numberInteger value
barrierTrue if the operation is an expression barrier on the stack

References barrier(), NamedString::name(), NamedString::NamedString(), and number().

Member Function Documentation

◆ barrier()

bool barrier ( ) const
inline

Check if this operation acts as an evaluator barrier on the stack

Returns
True if an expression should not pop this operation off the stack

Referenced by ExpFunction::ExpFunction(), ExpOperation(), ExpOperation(), ExpOperation(), ExpOperation(), ExpOperation(), and ExpWrapper::ExpWrapper().

◆ clone() [1/2]

ExpOperation * clone ( ) const
inline

Clone method

Returns
New operation instance, may keep a reference to the old instance

References clone(), ExpOperation(), and NamedString::name().

◆ clone() [2/2]

virtual ExpOperation * clone ( const char * name) const
virtual

Clone and rename method

Parameters
nameName of the cloned operation
Returns
New operation instance

Reimplemented in ExpFunction, and ExpWrapper.

References ExpOperation(), and NamedString::name().

Referenced by clone(), and copy().

◆ copy()

virtual ExpOperation * copy ( ScriptMutex * mtx) const
inlinevirtual

Deep copy method

Parameters
mtxPointer to the mutex that serializes the copied object
Returns
New operation instance

Reimplemented in ExpWrapper.

References clone(), and ExpOperation().

◆ isBoolean()

bool isBoolean ( ) const
inline

Check if a boolean value is stored

Returns
True if a boolean value is stored

Referenced by ExpOperation(), ExpOperation(), and ExpOperation().

◆ isInteger()

bool isInteger ( ) const
inline

Check if an integer value is stored

Returns
True if an integer value is stored

References nonInteger().

◆ isNumber()

bool isNumber ( ) const
inline

Check if a number type value is stored

Returns
True if a number type value is stored

Referenced by ExpOperation(), and ExpOperation().

◆ lineNumber() [1/2]

unsigned int lineNumber ( ) const
inline

Retrieve the line number where the operation was compiled from

Returns
Line number, zero if unknown

Referenced by JsArray::clone(), JsObject::clone(), JsRegExp::clone(), ExpOperation(), and ExpOperation().

◆ lineNumber() [2/2]

void lineNumber ( unsigned int line)
inline

Set the line number where the operation was compiled from

Parameters
lineNumber of the compiled line

◆ nonInteger()

static int64_t nonInteger ( )
inlinestatic

Special value that is not recognized as an integer value

Returns
A value that indicates a non-integer value

Referenced by ExpOperation(), ExpOperation(), ExpOperation(), ExpOperation(), ExpOperation(), and isInteger().

◆ number()

int64_t number ( ) const
inline

Retrieve the number stored in this operation

Returns
Stored number

Referenced by ExpOperation(), ExpOperation(), and ExpOperation().

◆ opcode()

ExpEvaluator::Opcode opcode ( ) const
inline

Retrieve the code of this operation

Returns
Operation code as declared in the expression evaluator

Referenced by ExpOperation(), ExpOperation(), and ExpWrapper::ExpWrapper().

◆ operator=()

int64_t operator= ( int64_t num)
inline

Number assignment operator

Parameters
numNumeric value to assign to the operation
Returns
Assigned number

References String::operator=().

◆ toNumber()

virtual int64_t toNumber ( ) const
virtual

Convert to number

Returns
Value converted to number, NaN if not possible of if stored value is NaN

◆ typeOf()

virtual const char * typeOf ( ) const
virtual

Retrieve the name of the type of the value of this operation

Returns
Name of the type of the value

Reimplemented in ExpWrapper.

◆ valBoolean()

virtual bool valBoolean ( bool defVal = false) const
virtual

Retrieve the boolean value of the operation

Parameters
defValDefault to return if not a boolean
Returns
True if the operation is to be interpreted as true value

Reimplemented in ExpFunction, and ExpWrapper.

◆ valInteger()

virtual int64_t valInteger ( int64_t defVal = 0) const
virtual

Retrieve the numeric value of the operation

Parameters
defValDefault to return if not a number
Returns
Number contained in operation

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