Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:36:15

0001 #ifndef CommonTools_Utils_FunctionSetter_h
0002 #define CommonTools_Utils_FunctionSetter_h
0003 /* \class reco::parser::FunctionSetter
0004  *
0005  * Function setter
0006  *
0007  * \author Luca Lista, INFN
0008  *
0009  * \version $Revision: 1.2 $
0010  *
0011  */
0012 #include "CommonTools/Utils/interface/parser/Function.h"
0013 #include "CommonTools/Utils/interface/parser/FunctionStack.h"
0014 
0015 namespace reco {
0016   namespace parser {
0017     struct FunctionSetter {
0018       FunctionSetter(Function fun, FunctionStack& stack) : fun_(fun), stack_(stack) {}
0019 
0020       void operator()(const char*, const char*) const {
0021 #ifdef BOOST_SPIRIT_DEBUG
0022         BOOST_SPIRIT_DEBUG_OUT << "pushing math function: " << functionNames[fun_] << std::endl;
0023 #endif
0024         stack_.push_back(fun_);
0025       }
0026 
0027     private:
0028       Function fun_;
0029       FunctionStack& stack_;
0030     };
0031 
0032     struct FunctionSetterCommit {
0033       FunctionSetterCommit(FunctionStack& stackFrom, FunctionStack& stackTo) : from_(stackFrom), to_(stackTo) {}
0034       void operator()(const char&) const {
0035         to_.push_back(from_.back());
0036         from_.clear();
0037       }
0038 
0039     private:
0040       FunctionStack& from_;
0041       FunctionStack& to_;
0042     };
0043   }  // namespace parser
0044 }  // namespace reco
0045 
0046 #endif