AirTSP Logo  1.01.6
C++ Simulated Airline Travel Solution Provider (TSP) Library
OnDParserHelper.hpp
Go to the documentation of this file.
1 #ifndef __AIRTSP_CMD_ONDPARSERHELPER_HPP
2 #define __AIRTSP_CMD_ONDPARSERHELPER_HPP
3 
4 // //////////////////////////////////////////////////////////////////////
5 // Import section
6 // //////////////////////////////////////////////////////////////////////
7 // STL
8 #include <string>
9 // Boost (Extended STL)
10 #include <boost/date_time/posix_time/posix_time.hpp>
11 #include <boost/date_time/gregorian/gregorian.hpp>
12 // StdAir
13 #include <stdair/command/CmdAbstract.hpp>
14 // AirTSP
15 #include <airtsp/AIRTSP_Types.hpp>
18 
19 // Forward declarations
20 namespace stdair {
21  class BomRoot;
22 }
23 
24 namespace AIRTSP {
25 
26  namespace OnDParserHelper {
27 
28  // ///////////////////////////////////////////////////////////////////////
29  //
30  // Semantic actions
31  //
32  // ///////////////////////////////////////////////////////////////////////
39  };
40 
46  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
47  };
48 
54  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
55  };
56 
62  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
63  };
64 
70  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
71  };
72 
78  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
79  };
80 
86  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
87  };
88 
94  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
95  };
96 
102  void operator() (char iChar) const;
103  };
104 
106  struct doEndOnD : public ParserSemanticAction {
108  doEndOnD (stdair::BomRoot&, OnDPeriodStruct&);
110  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
112  stdair::BomRoot& _bomRoot;
113  };
114 
116  //
117  // (Boost Spirit) Grammar Definition
118  //
120 
127  struct OnDParser :
128  public boost::spirit::classic::grammar<OnDParser> {
129 
130  OnDParser (stdair::BomRoot&, OnDPeriodStruct&);
131 
132  template <typename ScannerT>
133  struct definition {
134  definition (OnDParser const& self);
135 
136  // Instantiation of rules
137  boost::spirit::classic::rule<ScannerT> ond_list, ond, segment,
139 
141  boost::spirit::classic::rule<ScannerT> const& start() const;
142  };
143 
144  // Parser Context
145  stdair::BomRoot& _bomRoot;
147  };
148  }
149 
151  //
152  // Entry class for the file parser
153  //
155 
161  class OnDPeriodFileParser : public stdair::CmdAbstract {
162  public:
164  OnDPeriodFileParser (const stdair::Filename_T& iFilename,
165  stdair::BomRoot& ioBomRoot);
166 
168  bool generateOnDPeriods ();
169 
170  private:
172  void init();
173 
174  private:
175  // Attributes
177  stdair::Filename_T _filename;
178 
180  iterator_t _startIterator;
181 
183  iterator_t _endIterator;
184 
186  stdair::BomRoot& _bomRoot;
187 
189  OnDPeriodStruct _onDPeriod;
190  };
191 
192 }
193 #endif // __AIRTSP_CMD_ONDPARSERHELPER_HPP
AIRTSP::OnDParserHelper::OnDParser::definition::definition
definition(OnDParser const &self)
Definition: OnDParserHelper.cpp:267
AIRTSP::OnDParserHelper::storeStartRangeTime::storeStartRangeTime
storeStartRangeTime(OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:109
AIRTSP_Types.hpp
AIRTSP::iterator_t
boost::spirit::classic::file_iterator< char_t > iterator_t
Definition: BasParserTypes.hpp:35
AIRTSP::OnDParserHelper::storeEndRangeTime::operator()
void operator()(iterator_t iStr, iterator_t iStrEnd) const
Definition: OnDParserHelper.cpp:129
AIRTSP::OnDParserHelper::OnDParser::definition::date
boost::spirit::classic::rule< ScannerT > date
Definition: OnDParserHelper.hpp:138
AIRTSP::OnDParserHelper::storeDestination::operator()
void operator()(iterator_t iStr, iterator_t iStrEnd) const
Definition: OnDParserHelper.cpp:55
AIRTSP::OnDParserHelper::storeClassCode::operator()
void operator()(char iChar) const
Definition: OnDParserHelper.cpp:177
OnDPeriodStruct.hpp
AIRTSP::OnDParserHelper::OnDParser::_bomRoot
stdair::BomRoot & _bomRoot
Definition: OnDParserHelper.hpp:145
AIRTSP::OnDPeriodFileParser::generateOnDPeriods
bool generateOnDPeriods()
Definition: OnDParserHelper.cpp:378
AIRTSP::OnDParserHelper::doEndOnD::_bomRoot
stdair::BomRoot & _bomRoot
Definition: OnDParserHelper.hpp:112
AIRTSP::OnDParserHelper::doEndOnD
Definition: OnDParserHelper.hpp:106
AIRTSP::OnDParserHelper::ParserSemanticAction::_onDPeriod
OnDPeriodStruct & _onDPeriod
Definition: OnDParserHelper.hpp:38
AIRTSP::OnDParserHelper::OnDParser
Definition: OnDParserHelper.hpp:127
AIRTSP::OnDParserHelper::storeClassCode
Definition: OnDParserHelper.hpp:98
stdair
Forward declarations.
Definition: AIRTSP_Service.hpp:14
AIRTSP::OnDParserHelper::storeDateRangeEnd::operator()
void operator()(iterator_t iStr, iterator_t iStrEnd) const
Definition: OnDParserHelper.cpp:88
AIRTSP::OnDParserHelper::storeDestination::storeDestination
storeDestination(OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:50
AIRTSP::OnDParserHelper::OnDParser::definition::ond_end
boost::spirit::classic::rule< ScannerT > ond_end
Definition: OnDParserHelper.hpp:138
AIRTSP::OnDParserHelper::storeAirlineCode::operator()
void operator()(iterator_t iStr, iterator_t iStrEnd) const
Definition: OnDParserHelper.cpp:144
AIRTSP::OnDParserHelper::OnDParser::definition::ond_list
boost::spirit::classic::rule< ScannerT > ond_list
Definition: OnDParserHelper.hpp:137
AIRTSP::OnDParserHelper::storeAirlineCode
Definition: OnDParserHelper.hpp:90
AIRTSP::OnDParserHelper::OnDParser::OnDParser
OnDParser(stdair::BomRoot &, OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:261
AIRTSP::OnDParserHelper::storeStartRangeTime
Definition: OnDParserHelper.hpp:74
AIRTSP::OnDParserHelper::storeDateRangeEnd::storeDateRangeEnd
storeDateRangeEnd(OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:83
AIRTSP
Definition: AIRTSP_Service.hpp:23
AIRTSP::OnDParserHelper::storeDateRangeStart
Definition: OnDParserHelper.hpp:58
AIRTSP::OnDParserHelper::storeOrigin::operator()
void operator()(iterator_t iStr, iterator_t iStrEnd) const
Definition: OnDParserHelper.cpp:35
AIRTSP::OnDPeriodFileParser::OnDPeriodFileParser
OnDPeriodFileParser(const stdair::Filename_T &iFilename, stdair::BomRoot &ioBomRoot)
Definition: OnDParserHelper.cpp:342
AIRTSP::OnDParserHelper::storeDateRangeEnd
Definition: OnDParserHelper.hpp:66
AIRTSP::OnDParserHelper::doEndOnD::doEndOnD
doEndOnD(stdair::BomRoot &, OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:193
AIRTSP::OnDParserHelper::storeOrigin
Definition: OnDParserHelper.hpp:42
AIRTSP::OnDParserHelper::OnDParser::definition::ond
boost::spirit::classic::rule< ScannerT > ond
Definition: OnDParserHelper.hpp:137
AIRTSP::OnDPeriodFileParser
Definition: OnDParserHelper.hpp:161
AIRTSP::OnDParserHelper::OnDParser::definition::time
boost::spirit::classic::rule< ScannerT > time
Definition: OnDParserHelper.hpp:138
BasParserTypes.hpp
AIRTSP::OnDParserHelper::ParserSemanticAction
Definition: OnDParserHelper.hpp:34
AIRTSP::OnDParserHelper::storeOrigin::storeOrigin
storeOrigin(OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:30
AIRTSP::OnDParserHelper::storeEndRangeTime::storeEndRangeTime
storeEndRangeTime(OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:124
AIRTSP::OnDParserHelper::doEndOnD::operator()
void operator()(iterator_t iStr, iterator_t iStrEnd) const
Definition: OnDParserHelper.cpp:199
AIRTSP::OnDParserHelper::OnDParser::_onDPeriod
OnDPeriodStruct & _onDPeriod
Definition: OnDParserHelper.hpp:146
AIRTSP::OnDParserHelper::OnDParser::definition
Definition: OnDParserHelper.hpp:133
AIRTSP::OnDParserHelper::storeAirlineCode::storeAirlineCode
storeAirlineCode(OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:139
AIRTSP::OnDPeriodStruct
Definition: OnDPeriodStruct.hpp:16
AIRTSP::OnDParserHelper::OnDParser::definition::segment
boost::spirit::classic::rule< ScannerT > segment
Definition: OnDParserHelper.hpp:137
AIRTSP::OnDParserHelper::ParserSemanticAction::ParserSemanticAction
ParserSemanticAction(OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:25
AIRTSP::OnDParserHelper::OnDParser::definition::ond_key
boost::spirit::classic::rule< ScannerT > ond_key
Definition: OnDParserHelper.hpp:138
AIRTSP::OnDParserHelper::storeEndRangeTime
Definition: OnDParserHelper.hpp:82
AIRTSP::OnDParserHelper::storeClassCode::storeClassCode
storeClassCode(OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:172
AIRTSP::OnDParserHelper::storeStartRangeTime::operator()
void operator()(iterator_t iStr, iterator_t iStrEnd) const
Definition: OnDParserHelper.cpp:114
AIRTSP::OnDParserHelper::storeDestination
Definition: OnDParserHelper.hpp:50
AIRTSP::OnDParserHelper::OnDParser::definition::start
boost::spirit::classic::rule< ScannerT > const & start() const
Definition: OnDParserHelper.cpp:330
AIRTSP::OnDParserHelper::storeDateRangeStart::storeDateRangeStart
storeDateRangeStart(OnDPeriodStruct &)
Definition: OnDParserHelper.cpp:66
AIRTSP::OnDParserHelper::storeDateRangeStart::operator()
void operator()(iterator_t iStr, iterator_t iStrEnd) const
Definition: OnDParserHelper.cpp:71