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

Generic Substitution rule to replace all occurences of a given symbol node term with a user defined term. More...

#include <ExpressionBuilder.h>

Inheritance diagram for ExpressionBuilder::EBTermSubstitution:
[legend]

Public Member Functions

 EBTermSubstitution (const EBTerm &find, const EBTerm &replace)
 
virtual ~EBTermSubstitution ()
 
virtual EBTermNodeapply (const EBTermNode *) const
 

Protected Member Functions

virtual EBTermNodesubstitute (const EBSymbolNode &) const
 

Protected Attributes

std::string _find
 
EBTermNode_replace
 

Detailed Description

Generic Substitution rule to replace all occurences of a given symbol node term with a user defined term.

This is used by EBFunction.

Definition at line 334 of file ExpressionBuilder.h.

Constructor & Destructor Documentation

◆ EBTermSubstitution()

ExpressionBuilder::EBTermSubstitution::EBTermSubstitution ( const EBTerm find,
const EBTerm replace 
)

Definition at line 445 of file ExpressionBuilder.C.

447{
448 // the expression we want to substitute (has to be a symbol node)
449 const EBSymbolNode * find_root = dynamic_cast<const EBSymbolNode *>(find.getRoot());
450 if (find_root == NULL)
451 mooseError("Function arguments must be pure symbols.");
452 _find = find_root->stringify();
453
454 // the term we want to substitute with
455 if (replace.getRoot() != NULL)
456 _replace = replace.cloneRoot();
457 else
458 mooseError("Trying to substitute in an empty term for ", _find);
459}
void mooseError(Args &&... args)
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)

◆ ~EBTermSubstitution()

virtual ExpressionBuilder::EBTermSubstitution::~EBTermSubstitution ( )
inlinevirtual

Definition at line 338 of file ExpressionBuilder.h.

338{ delete _replace; }

Member Function Documentation

◆ apply()

Implements ExpressionBuilder::EBSubstitutionRule.

Definition at line 322 of file ExpressionBuilder.h.

712{
713 const Node_T * match_node = dynamic_cast<const Node_T *>(node);
714 if (match_node == NULL)
715 return NULL;
716 else
717 return substitute(*match_node);
718}
virtual EBTermNode * substitute(const EBSymbolNode &) const=0

◆ substitute()

ExpressionBuilder::EBTermNode * ExpressionBuilder::EBTermSubstitution::substitute ( const EBSymbolNode node) const
protectedvirtual

Implements ExpressionBuilder::EBSubstitutionRuleTyped< EBSymbolNode >.

Definition at line 462 of file ExpressionBuilder.C.

463{
464 if (node.stringify() == _find)
465 return _replace->clone();
466 else
467 return NULL;
468}
virtual EBTermNode * clone() const =0

Member Data Documentation

◆ _find

std::string ExpressionBuilder::EBTermSubstitution::_find
protected

Definition at line 342 of file ExpressionBuilder.h.

◆ _replace

EBTermNode* ExpressionBuilder::EBTermSubstitution::_replace
protected

Definition at line 343 of file ExpressionBuilder.h.

Referenced by ~EBTermSubstitution().


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