https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
ExpressionBuilder::EBTernaryTermNode Class Referenceabstract

Base class for nodes with two sub nodes (i.e. functions or operators taking two arguments) More...

#include <ExpressionBuilder.h>

Inheritance diagram for ExpressionBuilder::EBTernaryTermNode:
[legend]

Public Member Functions

 EBTernaryTermNode (EBTermNode *left, EBTermNode *middle, EBTermNode *right)
 
virtual ~EBTernaryTermNode ()
 
virtual unsigned int substitute (const EBSubstitutionRuleList &rule)
 
virtual EBTermNodeclone () const =0
 
virtual std::string stringify () const =0
 
virtual int precedence () const =0
 

Protected Attributes

EBTermNode_middle
 
EBTermNode_left
 
EBTermNode_right
 

Detailed Description

Base class for nodes with two sub nodes (i.e. functions or operators taking two arguments)

Definition at line 268 of file ExpressionBuilder.h.

Constructor & Destructor Documentation

◆ EBTernaryTermNode()

ExpressionBuilder::EBTernaryTermNode::EBTernaryTermNode ( EBTermNode left,
EBTermNode middle,
EBTermNode right 
)
inline

Definition at line 271 of file ExpressionBuilder.h.

272 : EBBinaryTermNode(left, right), _middle(middle)
273 {
274 }
EBBinaryTermNode(EBTermNode *left, EBTermNode *right)

◆ ~EBTernaryTermNode()

virtual ExpressionBuilder::EBTernaryTermNode::~EBTernaryTermNode ( )
inlinevirtual

Definition at line 275 of file ExpressionBuilder.h.

275{ delete _middle; };

Member Function Documentation

◆ clone()

virtual EBTermNode * ExpressionBuilder::EBTermNode::clone ( ) const
pure virtualinherited

◆ precedence()

virtual int ExpressionBuilder::EBTermNode::precedence ( ) const
pure virtualinherited

◆ stringify()

virtual std::string ExpressionBuilder::EBTermNode::stringify ( ) const
pure virtualinherited

◆ substitute()

unsigned int ExpressionBuilder::EBTernaryTermNode::substitute ( const EBSubstitutionRuleList rule)
virtual

Reimplemented from ExpressionBuilder::EBBinaryTermNode.

Definition at line 363 of file ExpressionBuilder.C.

364{
365 unsigned int nrule = rules.size();
366 bool left_success = false, middle_success = false, right_success = false;
367 EBTermNode * replace;
368
369 for (unsigned int i = 0; i < nrule; ++i)
370 {
371 replace = rules[i]->apply(_left);
372 if (replace)
373 {
374 delete _left;
375 _left = replace;
376 left_success = true;
377 break;
378 }
379 }
380
381 for (unsigned int i = 0; i < nrule; ++i)
382 {
383 replace = rules[i]->apply(_middle);
384 if (replace)
385 {
386 delete _middle;
387 _middle = replace;
388 middle_success = true;
389 break;
390 }
391 }
392
393 for (unsigned int i = 0; i < nrule; ++i)
394 {
395 replace = rules[i]->apply(_right);
396 if (replace)
397 {
398 delete _right;
399 _right = replace;
400 right_success = true;
401 break;
402 }
403 }
404
405 if (!left_success)
406 left_success = _left->substitute(rules);
407 if (!middle_success)
408 middle_success = _middle->substitute(rules);
409 if (!right_success)
410 right_success = _right->substitute(rules);
411
412 return left_success + middle_success + right_success;
413}
virtual unsigned int substitute(const EBSubstitutionRuleList &)

Member Data Documentation

◆ _left

EBTermNode* ExpressionBuilder::EBBinaryTermNode::_left
protectedinherited

◆ _middle

EBTermNode* ExpressionBuilder::EBTernaryTermNode::_middle
protected

◆ _right

EBTermNode* ExpressionBuilder::EBBinaryTermNode::_right
protectedinherited

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