CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
StringObjectFunction.h
Go to the documentation of this file.
1 #ifndef CommonTools_Utils_StringObjectFunction_h
2 #define CommonTools_Utils_StringObjectFunction_h
3 /* \class StringCutObjectSelector
4  *
5  * \author Luca Lista, INFN
6  *
7  * $Id: StringObjectFunction.h,v 1.1 2009/02/24 14:10:19 llista Exp $
8  */
13 
14 template<typename T, bool DefaultLazyness=false>
16  StringObjectFunction(const std::string & expr, bool lazy=DefaultLazyness) :
17  type_(Reflex::Type::ByTypeInfo(typeid(T))) {
18  if(! reco::parser::expressionParser<T>(expr, expr_, lazy)) {
20  "failed to parse \"" + expr + "\"");
21  }
22  }
24  expr_(expr),
25  type_(Reflex::Type::ByTypeInfo(typeid(T))) {
26  }
27  double operator()(const T & t) const {
28  using namespace Reflex;
29  Object o(type_, const_cast<T *>(& t));
30  return expr_->value(o);
31  }
32 
33 private:
36 };
37 
38 #endif
boost::shared_ptr< ExpressionBase > ExpressionPtr
StringObjectFunction(const reco::parser::ExpressionPtr &expr)
StringObjectFunction(const std::string &expr, bool lazy=DefaultLazyness)
reco::parser::ExpressionPtr expr_
double operator()(const T &t) const