https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
ExpressionBuilder::EBBinaryTermNode 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::EBBinaryTermNode:
[legend]

Public Member Functions

 EBBinaryTermNode (EBTermNode *left, EBTermNode *right)
 
virtual ~EBBinaryTermNode ()
 
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_left
 
EBTermNode_right
 

Detailed Description

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

Definition at line 188 of file ExpressionBuilder.h.

Constructor & Destructor Documentation

◆ EBBinaryTermNode()

ExpressionBuilder::EBBinaryTermNode::EBBinaryTermNode ( EBTermNode left,
EBTermNode right 
)
inline

Definition at line 191 of file ExpressionBuilder.h.

◆ ~EBBinaryTermNode()

virtual ExpressionBuilder::EBBinaryTermNode::~EBBinaryTermNode ( )
inlinevirtual

Definition at line 192 of file ExpressionBuilder.h.

193 {
194 delete _left;
195 delete _right;
196 };

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::EBBinaryTermNode::substitute ( const EBSubstitutionRuleList rule)
virtual

Reimplemented from ExpressionBuilder::EBTermNode.

Reimplemented in ExpressionBuilder::EBTernaryTermNode.

Definition at line 328 of file ExpressionBuilder.C.

329{
330 unsigned int nrule = rules.size();
331 unsigned int success = 0;
332
333 for (unsigned int i = 0; i < nrule; ++i)
334 {
335 EBTermNode * replace = rules[i]->apply(_left);
336 if (replace != NULL)
337 {
338 delete _left;
339 _left = replace;
340 success = 1;
341 break;
342 }
343 }
344
345 if (success == 0)
346 success += _left->substitute(rules);
347
348 for (unsigned int i = 0; i < nrule; ++i)
349 {
350 EBTermNode * replace = rules[i]->apply(_right);
351 if (replace != NULL)
352 {
353 delete _right;
354 _right = replace;
355 return success + 1;
356 }
357 }
358
359 return success + _right->substitute(rules);
360}
virtual unsigned int substitute(const EBSubstitutionRuleList &)

Member Data Documentation

◆ _left

EBTermNode* ExpressionBuilder::EBBinaryTermNode::_left
protected

◆ _right

EBTermNode* ExpressionBuilder::EBBinaryTermNode::_right
protected

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