The Gaudi Framework  v28r3 (cc1cf868)
Interpolation.cpp
Go to the documentation of this file.
3 #include <iomanip>
4 #include <cassert>
5 
6 namespace {
7  const char* table[] = { "Linear", "Polynomial" ,
8  "Cspline", "Cspline_Periodic" ,
9  "Akima", "Akima_Periodic" };
10 }
11 
12 using namespace GaudiMath::Interpolation;
13 
14 namespace Gaudi { namespace Parsers {
15 
16 template< typename Iterator, typename Skipper>
17 struct InterpolGrammar : qi::grammar<Iterator, GaudiMath::Interpolation::Type(), Skipper>
18 {
20  InterpolGrammar() : InterpolGrammar::base_type( literal ) {
21  literal = (qi::lit(table[Linear]))[qi::_val=Linear]
22  | (qi::lit(table[Polynomial]))[qi::_val=Polynomial]
23  | (qi::lit(table[Cspline]))[qi::_val=Cspline]
24  | (qi::lit(table[Cspline_Periodic]))[qi::_val=Cspline_Periodic]
25  | (qi::lit(table[Akima]))[qi::_val=Akima]
26  | (qi::lit(table[Akima_Periodic]))[qi::_val=Akima_Periodic];
27  }
28  qi::rule<Iterator, ResultT(), Skipper> literal;
29 };
31 
32 } }
33 
34 namespace GaudiMath {
35 namespace Interpolation {
36 
37  StatusCode parse(Type& t, const std::string& in) {
38  return Gaudi::Parsers::parse_(t,in);
39  }
41  assert(0<=t && t<=Type::Akima_Periodic);
42  return table[t];
43  }
45  return os << std::quoted( toString(t), '\'' );
46  }
47 
48 } }
StatusCode parse_(ResultT &result, const std::string &input)
#define REGISTER_GRAMMAR(ResultType, GrammarName)
Definition: GrammarsV2.h:69
qi::rule< Iterator, ResultT(), Skipper > literal
STL class.
std::ostream & toStream(const Type &, std::ostream &)
StatusCode parse(Type &, const std::string &)
GaudiMath::Interpolation::Type ResultT
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
GaudiMath.h GaudiMath/GaudiMath.h.
Definition: Adapters.h:13
STL class.
Helper functions to set/get the application return code.
Definition: __init__.py:1
std::string toString(const Type &)