#include <ExpressionAction.h>
Public Member Functions | |
virtual bool | addArgument (ExpressionAction *a) |
virtual ExpressionAction * | close (Type t) |
ExpressionFunction (QString name, ExpressionContext *context) | |
virtual ExpressionAction * | parent () const |
virtual void | replaceArgument (ExpressionAction *oldA, ExpressionAction *newA) |
virtual QVariant | value () const |
virtual const QString & | xml_tagName () const |
virtual | ~ExpressionFunction () |
Static Public Attributes | |
static const QString | xmlExpressionFunctionTag = "ExpressionFunction" |
Protected Member Functions | |
virtual void | xml_writeChildren (XML_WRITECHILDREN_ARGS) const |
virtual void | xml_writeProperties (XML_WRITEPROPERTIES_ARGS) const |
QGpCoreTools::ExpressionFunction::ExpressionFunction | ( | QString | name, |
ExpressionContext * | context | ||
) | [inline] |
{_name=name; _open=true; _currentArg=0; _context=context;}
virtual QGpCoreTools::ExpressionFunction::~ExpressionFunction | ( | ) | [inline, virtual] |
{qDeleteAll(_args);}
bool QGpCoreTools::ExpressionFunction::addArgument | ( | ExpressionAction * | a | ) | [virtual] |
If argument is already set, the new argument is set as the current and the old one is set as the argument of the new argument. This mechanism is designed for cases where an operator with a higher priority is encountered during parse.
Implements QGpCoreTools::ExpressionAction.
References QGpCoreTools::ExpressionAction::addArgument(), QGpCoreTools::ExpressionAction::setParent(), and TRACE.
{ TRACE; if(!_currentArg || a->addArgument(_currentArg)) { a->setParent(this); _currentArg=a; return true; } else return false; }
Reimplemented from QGpCoreTools::ExpressionAction.
References QGpCoreTools::ExpressionAction::_parent, QGpCoreTools::ExpressionAction::CloseBracket, QGpCoreTools::ExpressionAction::Coma, and TRACE.
{ TRACE; switch (t) { case CloseBracket: if(_open) { if(_currentArg) { _args << _currentArg; _currentArg=0; } _open=false; return _parent; } break; case Coma: ASSERT(_open); if(_currentArg) { _args << _currentArg; _currentArg=0; } return this; default: break; } return ExpressionAction::close(t); }
virtual ExpressionAction* QGpCoreTools::ExpressionFunction::parent | ( | ) | const [inline, virtual] |
Reimplemented from QGpCoreTools::ExpressionAction.
{if(_open) return 0; else return _parent;}
void QGpCoreTools::ExpressionFunction::replaceArgument | ( | ExpressionAction * | oldA, |
ExpressionAction * | newA | ||
) | [virtual] |
Implements QGpCoreTools::ExpressionAction.
References QGpCoreTools::ExpressionAction::setParent(), and TRACE.
virtual QVariant QGpCoreTools::ExpressionFunction::value | ( | ) | const [inline, virtual] |
Implements QGpCoreTools::ExpressionAction.
{return _context->functionValue(_name, _args);}
virtual const QString& QGpCoreTools::ExpressionFunction::xml_tagName | ( | ) | const [inline, virtual] |
Reimplemented from QGpCoreTools::ExpressionAction.
{return xmlExpressionFunctionTag;}
void QGpCoreTools::ExpressionFunction::xml_writeChildren | ( | XML_WRITECHILDREN_ARGS | ) | const [protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
References TRACE.
{ TRACE; Q_UNUSED(context); for(QVector<ExpressionAction *>::const_iterator it=_args.begin(); it!=_args.end();++it) { (*it)->xml_save(s, context); } }
void QGpCoreTools::ExpressionFunction::xml_writeProperties | ( | XML_WRITEPROPERTIES_ARGS | ) | const [protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
References TRACE, and QGpCoreTools::XMLClass::writeProperty().
{ TRACE; Q_UNUSED(context); writeProperty(s, "name", _name); writeProperty(s, "open", _open); }
const QString QGpCoreTools::ExpressionFunction::xmlExpressionFunctionTag = "ExpressionFunction" [static] |