www.mooseframework.org
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 324 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)

◆ ~EBTermSubstitution()

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

Definition at line 328 of file ExpressionBuilder.h.

328 { delete _replace; }

Member Function Documentation

◆ apply()

Implements ExpressionBuilder::EBSubstitutionRule.

Definition at line 697 of file ExpressionBuilder.h.

699 {
700  const Node_T * match_node = dynamic_cast<const Node_T *>(node);
701  if (match_node == NULL)
702  return NULL;
703  else
704  return substitute(*match_node);
705 }
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 332 of file ExpressionBuilder.h.

◆ _replace

EBTermNode* ExpressionBuilder::EBTermSubstitution::_replace
protected

Definition at line 333 of file ExpressionBuilder.h.


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