https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
CompileTimeDerivatives::CTCompare< C, L, R > Class Template Reference

Binary comparison operator node. More...

#include <CompileTimeDerivatives.h>

Inheritance diagram for CompileTimeDerivatives::CTCompare< C, L, R >:
[legend]

Public Types

typedef bool ResultType
 

Public Member Functions

 CTCompare (L left, R right)
 
ResultType operator() () const
 
std::string print () const
 
template<CTTag dtag>
auto D () const
 
template<typename Self >
std::string printParens (const Self *, const std::string &op) const
 

Static Public Member Functions

static constexpr int precedence ()
 
static constexpr bool leftAssociative ()
 

Protected Attributes

const L _left
 
const R _right
 

Detailed Description

template<CTComparisonEnum C, typename L, typename R>
class CompileTimeDerivatives::CTCompare< C, L, R >

Binary comparison operator node.

Definition at line 600 of file CompileTimeDerivatives.h.

Member Typedef Documentation

◆ ResultType

template<CTComparisonEnum C, typename L , typename R >
typedef bool CompileTimeDerivatives::CTCompare< C, L, R >::ResultType

Definition at line 604 of file CompileTimeDerivatives.h.

Constructor & Destructor Documentation

◆ CTCompare()

template<CTComparisonEnum C, typename L , typename R >
CompileTimeDerivatives::CTCompare< C, L, R >::CTCompare ( left,
right 
)
inline

Definition at line 603 of file CompileTimeDerivatives.h.

603: CTBinary<L, R>(left, right) {}

Member Function Documentation

◆ D()

template<CTComparisonEnum C, typename L , typename R >
template<CTTag dtag>
auto CompileTimeDerivatives::CTCompare< C, L, R >::D ( ) const
inline

Definition at line 640 of file CompileTimeDerivatives.h.

641 {
642 return CTNull<ResultType>();
643 }

◆ leftAssociative()

template<CTComparisonEnum C, typename L , typename R >
static constexpr bool CompileTimeDerivatives::CTCompare< C, L, R >::leftAssociative ( )
inlinestaticconstexpr

Definition at line 637 of file CompileTimeDerivatives.h.

637{ return true; }

◆ operator()()

template<CTComparisonEnum C, typename L , typename R >
ResultType CompileTimeDerivatives::CTCompare< C, L, R >::operator() ( ) const
inline

◆ precedence()

template<CTComparisonEnum C, typename L , typename R >
static constexpr int CompileTimeDerivatives::CTCompare< C, L, R >::precedence ( )
inlinestaticconstexpr

Definition at line 636 of file CompileTimeDerivatives.h.

636{ return 9; }

◆ print()

template<CTComparisonEnum C, typename L , typename R >
std::string CompileTimeDerivatives::CTCompare< C, L, R >::print ( ) const
inline

Definition at line 621 of file CompileTimeDerivatives.h.

622 {
623 if constexpr (C == CTComparisonEnum::Less)
624 return this->printParens(this, "<");
625 if constexpr (C == CTComparisonEnum::LessEqual)
626 return this->printParens(this, "<=");
627 if constexpr (C == CTComparisonEnum::Greater)
628 return this->printParens(this, ">");
629 if constexpr (C == CTComparisonEnum::GreaterEqual)
630 return this->printParens(this, ">=");
631 if constexpr (C == CTComparisonEnum::Equal)
632 return this->printParens(this, "==");
633 if constexpr (C == CTComparisonEnum::Unequal)
634 return this->printParens(this, "!=");
635 }
std::string printParens(const Self *, const std::string &op) const

◆ printParens()

template<typename L , typename R >
template<typename Self >
std::string CompileTimeDerivatives::CTBinary< L, R >::printParens ( const Self *  ,
const std::string &  op 
) const
inlineinherited

Definition at line 201 of file CompileTimeDerivatives.h.

202 {
203 std::string out;
204 if constexpr (L::precedence() > Self::precedence())
205 out = "(" + _left.print() + ")";
206 else
207 out = _left.print();
208
209 out += op;
210
211 if (R::precedence() > Self::precedence() ||
212 (R::precedence() == Self::precedence() && Self::leftAssociative()))
213 out += "(" + _right.print() + ")";
214 else
215 out += _right.print();
216
217 return out;
218 }
OStreamProxy out(std::cout)

Referenced by CompileTimeDerivatives::CTAdd< L, R >::print(), CompileTimeDerivatives::CTSub< L, R >::print(), CompileTimeDerivatives::CTMul< L, R >::print(), CompileTimeDerivatives::CTDiv< L, R >::print(), and CompileTimeDerivatives::CTCompare< C, L, R >::print().

Member Data Documentation

◆ _left

template<typename L , typename R >
const L CompileTimeDerivatives::CTBinary< L, R >::_left
protectedinherited

◆ _right

template<typename L , typename R >
const R CompileTimeDerivatives::CTBinary< L, R >::_right
protectedinherited

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