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

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

#include <ExpressionBuilder.h>

Inheritance diagram for ExpressionBuilder::EBBinaryFuncTermNode:
[legend]

Public Types

enum  NodeType {
  MIN , MAX , ATAN2 , HYPOT ,
  PLOG
}
 

Public Member Functions

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

Public Attributes

enum ExpressionBuilder::EBBinaryFuncTermNode::NodeType _type
 

Protected Attributes

EBTermNode_left
 
EBTermNode_right
 

Detailed Description

Node representing a function with two arguments.

Definition at line 242 of file ExpressionBuilder.h.

Member Enumeration Documentation

◆ NodeType

Constructor & Destructor Documentation

◆ EBBinaryFuncTermNode()

ExpressionBuilder::EBBinaryFuncTermNode::EBBinaryFuncTermNode ( EBTermNode left,
EBTermNode right,
NodeType  type 
)
inline

Definition at line 254 of file ExpressionBuilder.h.

255 : EBBinaryTermNode(left, right), _type(type)
256 {
257 }
EBBinaryTermNode(EBTermNode *left, EBTermNode *right)

Member Function Documentation

◆ clone()

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

Implements ExpressionBuilder::EBTermNode.

Definition at line 258 of file ExpressionBuilder.h.

259 {
260 return new EBBinaryFuncTermNode(_left->clone(), _right->clone(), _type);
261 };
EBBinaryFuncTermNode(EBTermNode *left, EBTermNode *right, NodeType type)
virtual EBTermNode * clone() const =0

◆ precedence()

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

Implements ExpressionBuilder::EBTermNode.

Definition at line 264 of file ExpressionBuilder.h.

264{ return 2; }

◆ stringify()

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

Implements ExpressionBuilder::EBTermNode.

Definition at line 84 of file ExpressionBuilder.C.

85{
86 const char * name[] = {"min", "max", "atan2", "hypot", "plog"};
87 std::ostringstream s;
88 s << name[_type] << '(' << *_left << ',' << *_right << ')';
89 return s.str();
90}
const std::string name
Definition Setup.h:21

◆ substitute()

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

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
protectedinherited

◆ _right

EBTermNode* ExpressionBuilder::EBBinaryTermNode::_right
protectedinherited

◆ _type

enum ExpressionBuilder::EBBinaryFuncTermNode::NodeType ExpressionBuilder::EBBinaryFuncTermNode::_type

Referenced by clone().


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