SimFQT Logo  1.00.0
C++ Simulated Fare Quote System Library
 All Classes Namespaces Files Functions Variables Typedefs Friends Pages
FareParserHelper.hpp
Go to the documentation of this file.
1 #ifndef __SIMFQT_CMD_FAREPARSERHELPER_HPP
2 #define __SIMFQT_CMD_FAREPARSERHELPER_HPP
3 
4 // //////////////////////////////////////////////////////////////////////
5 // Import section
6 // //////////////////////////////////////////////////////////////////////
7 // STL
8 #include <string>
9 // Boost
10 #include <boost/spirit/include/qi.hpp>
11 // StdAir
12 #include <stdair/command/CmdAbstract.hpp>
13 // Simfqt
14 #include <simfqt/SIMFQT_Types.hpp>
16 
17 // Forward declarations
18 namespace stdair {
19  class BomRoot;
20 }
21 
22 namespace SIMFQT {
23 
24  namespace FareParserHelper {
25 
26  // ///////////////////////////////////////////////////////////////////
27  // Semantic actions
28  // ////////////////////////////////////////////////////
30 
36  };
37 
43  void operator() (unsigned int,
44  boost::spirit::qi::unused_type,
45  boost::spirit::qi::unused_type) const;
46  };
47 
53  void operator() (std::vector<char>,
54  boost::spirit::qi::unused_type,
55  boost::spirit::qi::unused_type) const;
56  };
57 
63  void operator() (std::vector<char>,
64  boost::spirit::qi::unused_type,
65  boost::spirit::qi::unused_type) const;
66  };
67 
73  void operator() (std::vector<char>,
74  boost::spirit::qi::unused_type,
75  boost::spirit::qi::unused_type) const;
76  };
77 
78 
84  void operator() (boost::spirit::qi::unused_type,
85  boost::spirit::qi::unused_type,
86  boost::spirit::qi::unused_type) const;
87  };
88 
94  void operator() (boost::spirit::qi::unused_type,
95  boost::spirit::qi::unused_type,
96  boost::spirit::qi::unused_type) const;
97  };
98 
104  void operator() (boost::spirit::qi::unused_type,
105  boost::spirit::qi::unused_type,
106  boost::spirit::qi::unused_type) const;
107  };
108 
114  void operator() (boost::spirit::qi::unused_type,
115  boost::spirit::qi::unused_type,
116  boost::spirit::qi::unused_type) const;
117  };
118 
120  struct storePOS : public ParserSemanticAction {
124  void operator() (std::vector<char>,
125  boost::spirit::qi::unused_type,
126  boost::spirit::qi::unused_type) const;
127  };
128 
134  void operator() (char,
135  boost::spirit::qi::unused_type,
136  boost::spirit::qi::unused_type) const;
137  };
138 
144  void operator() (std::vector<char>,
145  boost::spirit::qi::unused_type,
146  boost::spirit::qi::unused_type) const;
147  };
148 
154  void operator() (unsigned int,
155  boost::spirit::qi::unused_type,
156  boost::spirit::qi::unused_type) const;
157  };
158 
164  void operator() (char,
165  boost::spirit::qi::unused_type,
166  boost::spirit::qi::unused_type) const;
167  };
168 
174  void operator() (char,
175  boost::spirit::qi::unused_type,
176  boost::spirit::qi::unused_type) const;
177  };
178 
184  void operator() (char,
185  boost::spirit::qi::unused_type,
186  boost::spirit::qi::unused_type) const;
187  };
188 
194  void operator() (unsigned int,
195  boost::spirit::qi::unused_type,
196  boost::spirit::qi::unused_type) const;
197  };
198 
200  struct storeFare : public ParserSemanticAction {
204  void operator() (double,
205  boost::spirit::qi::unused_type,
206  boost::spirit::qi::unused_type) const;
207  };
208 
214  void operator() (std::vector<char>,
215  boost::spirit::qi::unused_type,
216  boost::spirit::qi::unused_type) const;
217  };
218 
224  void operator() (std::vector<char>,
225  boost::spirit::qi::unused_type,
226  boost::spirit::qi::unused_type) const;
227  };
228 
230  struct doEndFare : public ParserSemanticAction {
232  doEndFare (stdair::BomRoot&, FareRuleStruct&);
234  void operator() (boost::spirit::qi::unused_type,
235  boost::spirit::qi::unused_type,
236  boost::spirit::qi::unused_type) const;
238  stdair::BomRoot& _bomRoot;
239  };
240 
241  }
242 
244  //
245  // Entry class for the file parser
246  //
248 
254  class FareRuleFileParser : public stdair::CmdAbstract {
255  public:
257  FareRuleFileParser (stdair::BomRoot& ioBomRoot,
258  const stdair::Filename_T& iFilename);
259 
261  void generateFareRules ();
262 
263  private:
265  void init();
266 
267  private:
268  // Attributes
270  stdair::Filename_T _filename;
271 
273  stdair::BomRoot& _bomRoot;
274 
276  FareRuleStruct _fareRule;
277  };
278 
279 }
280 #endif // __SIMFQT_CMD_FAREPARSERHELPER_HPP