CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
reco::formula::FunctionTwoArgsEvaluator Class Reference

#include "formulaFunctionTwoArgsEvaluator.h"

Inheritance diagram for reco::formula::FunctionTwoArgsEvaluator:
reco::formula::EvaluatorBase

Public Member Functions

std::vector< std::string > abstractSyntaxTree () const final
 
double evaluate (double const *iVariables, double const *iParameters) const final
 
template<typename T >
 FunctionTwoArgsEvaluator (std::shared_ptr< EvaluatorBase > iArg1, std::shared_ptr< EvaluatorBase > iArg2, T iFunc)
 
- Public Member Functions inherited from reco::formula::EvaluatorBase
 EvaluatorBase ()
 
 EvaluatorBase (Precedence)
 
unsigned int precedence () const
 
void setPrecedenceToParenthesis ()
 
virtual ~EvaluatorBase ()
 

Private Member Functions

 FunctionTwoArgsEvaluator (const FunctionTwoArgsEvaluator &)=delete
 
const FunctionTwoArgsEvaluatoroperator= (const FunctionTwoArgsEvaluator &)=delete
 

Private Attributes

std::shared_ptr< EvaluatorBasem_arg1
 
std::shared_ptr< EvaluatorBasem_arg2
 
std::function< double(double, double)> m_function
 

Additional Inherited Members

- Public Types inherited from reco::formula::EvaluatorBase
enum  Precedence {
  Precedence::kIdentity = 1, Precedence::kComparison =2, Precedence::kPlusMinus = 3, Precedence::kMultDiv = 4,
  Precedence::kPower = 5, Precedence::kFunction = 6, Precedence::kParenthesis = 7, Precedence::kUnaryMinusOperator = 8
}
 

Detailed Description

Description: [one line class summary]

Usage: <usage>

Definition at line 32 of file formulaFunctionTwoArgsEvaluator.h.

Constructor & Destructor Documentation

template<typename T >
reco::formula::FunctionTwoArgsEvaluator::FunctionTwoArgsEvaluator ( std::shared_ptr< EvaluatorBase iArg1,
std::shared_ptr< EvaluatorBase iArg2,
T  iFunc 
)
inline

Definition at line 37 of file formulaFunctionTwoArgsEvaluator.h.

Referenced by abstractSyntaxTree().

39  :
40  m_arg1(std::move(iArg1)),
41  m_arg2(std::move(iArg2)),
42  m_function(iFunc)
43  {}
std::function< double(double, double)> m_function
def move(src, dest)
Definition: eostools.py:511
reco::formula::FunctionTwoArgsEvaluator::FunctionTwoArgsEvaluator ( const FunctionTwoArgsEvaluator )
privatedelete

Member Function Documentation

std::vector<std::string> reco::formula::FunctionTwoArgsEvaluator::abstractSyntaxTree ( ) const
inlinefinalvirtual

Implements reco::formula::EvaluatorBase.

Definition at line 50 of file formulaFunctionTwoArgsEvaluator.h.

References FunctionTwoArgsEvaluator(), m_arg1, m_arg2, eostools::move(), operator=(), reco::formula::shiftAST(), and findQualityFiles::v.

50  {
51  auto ret = shiftAST(m_arg1->abstractSyntaxTree());
52  for(auto& v: shiftAST(m_arg2->abstractSyntaxTree()) ) {
53  ret.emplace_back(std::move(v));
54  }
55  ret.emplace(ret.begin(), "func 2 args");
56  return ret;
57  }
std::vector< std::string > shiftAST(std::vector< std::string > child)
def move(src, dest)
Definition: eostools.py:511
double reco::formula::FunctionTwoArgsEvaluator::evaluate ( double const *  iVariables,
double const *  iParameters 
) const
inlinefinalvirtual

Implements reco::formula::EvaluatorBase.

Definition at line 46 of file formulaFunctionTwoArgsEvaluator.h.

References m_arg1, m_arg2, and m_function.

46  {
47  return m_function( m_arg1->evaluate(iVariables,iParameters),
48  m_arg2->evaluate(iVariables,iParameters) );
49  }
std::function< double(double, double)> m_function
const FunctionTwoArgsEvaluator& reco::formula::FunctionTwoArgsEvaluator::operator= ( const FunctionTwoArgsEvaluator )
privatedelete

Referenced by abstractSyntaxTree().

Member Data Documentation

std::shared_ptr<EvaluatorBase> reco::formula::FunctionTwoArgsEvaluator::m_arg1
private

Definition at line 65 of file formulaFunctionTwoArgsEvaluator.h.

Referenced by abstractSyntaxTree(), and evaluate().

std::shared_ptr<EvaluatorBase> reco::formula::FunctionTwoArgsEvaluator::m_arg2
private

Definition at line 66 of file formulaFunctionTwoArgsEvaluator.h.

Referenced by abstractSyntaxTree(), and evaluate().

std::function<double(double,double)> reco::formula::FunctionTwoArgsEvaluator::m_function
private

Definition at line 67 of file formulaFunctionTwoArgsEvaluator.h.

Referenced by evaluate().