File indexing completed on 2024-04-06 12:01:17
0001 #ifndef CommonTools_Utils_ExpressionBinaryOperator_h
0002 #define CommonTools_Utils_ExpressionBinaryOperator_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include "CommonTools/Utils/interface/parser/ExpressionBase.h"
0014 #include "CommonTools/Utils/interface/parser/ExpressionStack.h"
0015
0016 namespace reco {
0017 namespace parser {
0018 template <typename Op>
0019 struct ExpressionBinaryOperator : public ExpressionBase {
0020 double value(const edm::ObjectWithDict& o) const override { return op_((*lhs_).value(o), (*rhs_).value(o)); }
0021 ExpressionBinaryOperator(ExpressionStack& expStack) {
0022 rhs_ = expStack.back();
0023 expStack.pop_back();
0024 lhs_ = expStack.back();
0025 expStack.pop_back();
0026 }
0027
0028 private:
0029 Op op_;
0030 ExpressionPtr lhs_, rhs_;
0031 };
0032 }
0033 }
0034
0035 #endif