AirInv Logo  0.1.2
C++ Simulated Airline Inventory Management System library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ScheduleParserHelper.hpp
Go to the documentation of this file.
1 #ifndef __AIRINV_CMD_SCHEDULEPARSERHELPER_HPP
2 #define __AIRINV_CMD_SCHEDULEPARSERHELPER_HPP
3 
4 // //////////////////////////////////////////////////////////////////////
5 // Import section
6 // //////////////////////////////////////////////////////////////////////
7 // STL
8 #include <string>
9 // StdAir
10 #include <stdair/command/CmdAbstract.hpp>
11 // Airinv
12 #include <airinv/AIRINV_Types.hpp>
15 
16 // Forward declarations
17 namespace stdair {
18  class BomRoot;
19 }
20 
21 namespace AIRINV {
22 
23  namespace ScheduleParserHelper {
24 
25  // ///////////////////////////////////////////////////////////////////
26  // Semantic actions
27  // ///////////////////////////////////////////////////////////////////
34  };
35 
41  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
42  };
43 
49  void operator() (unsigned int iNumber) const;
50  };
51 
57  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
58  };
59 
65  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
66  };
67 
69  struct storeDow : public ParserSemanticAction {
73  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
74  };
75 
81  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
82  };
83 
89  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
90  };
91 
97  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
98  };
99 
105  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
106  };
107 
113  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
114  };
115 
121  void operator() (char iChar) const;
122  };
123 
129  void operator() (double iReal) const;
130  };
131 
140  void operator() (char iChar) const;
141  };
142 
148  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
149  };
150 
156  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
157  };
158 
164  void operator() (char iChar) const;
165  };
166 
172  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
173  };
174 
180  void operator() (int iCode) const;
181  };
182 
188  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
189  };
190 
194  doEndFlight (stdair::BomRoot&, FlightPeriodStruct&);
196  void operator() (iterator_t iStr, iterator_t iStrEnd) const;
198  stdair::BomRoot& _bomRoot;
199  };
200 
201 
203  //
204  // (Boost Spirit) Grammar Definition
205  //
207 
250  public boost::spirit::classic::grammar<FlightPeriodParser> {
251 
252  FlightPeriodParser (stdair::BomRoot&, FlightPeriodStruct&);
253 
254  template <typename ScannerT>
255  struct definition {
256  definition (FlightPeriodParser const& self);
257 
258  // Instantiation of rules
259  boost::spirit::classic::rule<ScannerT> flight_period_list,
267 
269  boost::spirit::classic::rule<ScannerT> const& start() const;
270  };
271 
272  // Parser Context
273  stdair::BomRoot& _bomRoot;
275  };
276 
277  }
282 
283  //
284  // Entry class for the file parser
285  //
287 
292  class FlightPeriodFileParser : public stdair::CmdAbstract {
293  public:
295  FlightPeriodFileParser (stdair::BomRoot& ioBomRoot,
296  const stdair::Filename_T& iFilename);
297 
299  bool generateInventories ();
300 
301  private:
303  void init();
304 
305  private:
306  // Attributes
308  stdair::Filename_T _filename;
309 
311  iterator_t _startIterator;
312 
314  iterator_t _endIterator;
315 
317  stdair::BomRoot& _bomRoot;
318 
320  FlightPeriodStruct _flightPeriod;
321  };
322 
323 }
324 #endif // __AIRINV_CMD_SCHEDULEPARSERHELPER_HPP