https://mooseframework.inl.gov
Public Types | Public Member Functions | Public Attributes | Protected Attributes | List of all members
ExpressionBuilder::EBTernaryFuncTermNode Class Reference

Node representing a function with three arguments. More...

#include <ExpressionBuilder.h>

Inheritance diagram for ExpressionBuilder::EBTernaryFuncTermNode:
[legend]

Public Types

enum  NodeType { CONDITIONAL }
 

Public Member Functions

 EBTernaryFuncTermNode (EBTermNode *left, EBTermNode *middle, EBTermNode *right, NodeType type)
 
virtual EBTernaryFuncTermNodeclone () const
 
virtual std::string stringify () const
 
virtual int precedence () const
 
virtual unsigned int substitute (const EBSubstitutionRuleList &rule)
 

Public Attributes

enum ExpressionBuilder::EBTernaryFuncTermNode::NodeType _type
 

Protected Attributes

EBTermNode_middle
 
EBTermNode_left
 
EBTermNode_right
 

Detailed Description

Node representing a function with three arguments.

Definition at line 276 of file ExpressionBuilder.h.

Member Enumeration Documentation

◆ NodeType

Enumerator
CONDITIONAL 

Definition at line 279 of file ExpressionBuilder.h.

280  {
282  } _type;
enum ExpressionBuilder::EBTernaryFuncTermNode::NodeType _type

Constructor & Destructor Documentation

◆ EBTernaryFuncTermNode()

ExpressionBuilder::EBTernaryFuncTermNode::EBTernaryFuncTermNode ( EBTermNode left,
EBTermNode middle,
EBTermNode right,
NodeType  type 
)
inline

Definition at line 284 of file ExpressionBuilder.h.

285  : EBTernaryTermNode(left, middle, right), _type(type){};
enum ExpressionBuilder::EBTernaryFuncTermNode::NodeType _type
EBTernaryTermNode(EBTermNode *left, EBTermNode *middle, EBTermNode *right)

Member Function Documentation

◆ clone()

virtual EBTernaryFuncTermNode* ExpressionBuilder::EBTernaryFuncTermNode::clone ( ) const
inlinevirtual

Implements ExpressionBuilder::EBTermNode.

Definition at line 286 of file ExpressionBuilder.h.

287  {
289  };
virtual EBTermNode * clone() const =0
enum ExpressionBuilder::EBTernaryFuncTermNode::NodeType _type
EBTernaryFuncTermNode(EBTermNode *left, EBTermNode *middle, EBTermNode *right, NodeType type)

◆ precedence()

virtual int ExpressionBuilder::EBTernaryFuncTermNode::precedence ( ) const
inlinevirtual

Implements ExpressionBuilder::EBTermNode.

Definition at line 292 of file ExpressionBuilder.h.

292 { return 2; }

◆ stringify()

std::string ExpressionBuilder::EBTernaryFuncTermNode::stringify ( ) const
virtual

Implements ExpressionBuilder::EBTermNode.

Definition at line 145 of file ExpressionBuilder.C.

146 {
147  const char * name[] = {"if"};
148  std::ostringstream s;
149  s << name[_type] << '(' << *_left << ',' << *_middle << ',' << *_right << ')';
150  return s.str();
151 }
enum ExpressionBuilder::EBTernaryFuncTermNode::NodeType _type
const std::string name
Definition: Setup.h:20

◆ substitute()

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

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

Definition at line 199 of file ExpressionBuilder.h.

◆ _middle

EBTermNode* ExpressionBuilder::EBTernaryTermNode::_middle
protectedinherited

Definition at line 272 of file ExpressionBuilder.h.

◆ _right

EBTermNode* ExpressionBuilder::EBBinaryTermNode::_right
protectedinherited

Definition at line 200 of file ExpressionBuilder.h.

◆ _type

enum ExpressionBuilder::EBTernaryFuncTermNode::NodeType ExpressionBuilder::EBTernaryFuncTermNode::_type

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