Go to the documentation of this file.00001 #ifndef __AIRRAC_CMD_YIELDPARSERHELPER_HPP
00002 #define __AIRRAC_CMD_YIELDPARSERHELPER_HPP
00003
00004
00005
00006
00007
00008 #include <string>
00009
00010 #include <boost/spirit/include/qi.hpp>
00011
00012 #include <stdair/command/CmdAbstract.hpp>
00013
00014 #include <airrac/AIRRAC_Types.hpp>
00015 #include <airrac/bom/YieldRuleStruct.hpp>
00016
00017
00018 namespace stdair {
00019 class BomRoot;
00020 }
00021
00022 namespace AIRRAC {
00023
00024 namespace YieldParserHelper {
00025
00026
00027
00028
00030 struct ParserSemanticAction {
00032 ParserSemanticAction (YieldRuleStruct&);
00034 YieldRuleStruct& _yieldRule;
00035 };
00036
00038 struct storeYieldId : public ParserSemanticAction {
00040 storeYieldId (YieldRuleStruct&);
00042 void operator() (unsigned int,
00043 boost::spirit::qi::unused_type,
00044 boost::spirit::qi::unused_type) const;
00045 };
00046
00048 struct storeOrigin : public ParserSemanticAction {
00050 storeOrigin (YieldRuleStruct&);
00052 void operator() (std::vector<char>,
00053 boost::spirit::qi::unused_type,
00054 boost::spirit::qi::unused_type) const;
00055 };
00056
00058 struct storeDestination : public ParserSemanticAction {
00060 storeDestination (YieldRuleStruct&);
00062 void operator() (std::vector<char>,
00063 boost::spirit::qi::unused_type,
00064 boost::spirit::qi::unused_type) const;
00065 };
00066
00068 struct storeTripType : public ParserSemanticAction {
00070 storeTripType (YieldRuleStruct&);
00072 void operator() (std::vector<char>,
00073 boost::spirit::qi::unused_type,
00074 boost::spirit::qi::unused_type) const;
00075 };
00076
00078 struct storeDateRangeStart : public ParserSemanticAction {
00080 storeDateRangeStart (YieldRuleStruct&);
00082 void operator() (boost::spirit::qi::unused_type,
00083 boost::spirit::qi::unused_type,
00084 boost::spirit::qi::unused_type) const;
00085 };
00086
00088 struct storeDateRangeEnd : public ParserSemanticAction {
00090 storeDateRangeEnd (YieldRuleStruct&);
00092 void operator() (boost::spirit::qi::unused_type,
00093 boost::spirit::qi::unused_type,
00094 boost::spirit::qi::unused_type) const;
00095 };
00096
00098 struct storeStartRangeTime : public ParserSemanticAction {
00100 storeStartRangeTime (YieldRuleStruct&);
00102 void operator() (boost::spirit::qi::unused_type,
00103 boost::spirit::qi::unused_type,
00104 boost::spirit::qi::unused_type) const;
00105 };
00106
00108 struct storeEndRangeTime : public ParserSemanticAction {
00110 storeEndRangeTime (YieldRuleStruct&);
00112 void operator() (boost::spirit::qi::unused_type,
00113 boost::spirit::qi::unused_type,
00114 boost::spirit::qi::unused_type) const;
00115 };
00116
00118 struct storePOS : public ParserSemanticAction {
00120 storePOS (YieldRuleStruct&);
00122 void operator() (std::vector<char>,
00123 boost::spirit::qi::unused_type,
00124 boost::spirit::qi::unused_type) const;
00125 };
00126
00128 struct storeCabinCode : public ParserSemanticAction {
00130 storeCabinCode (YieldRuleStruct&);
00132 void operator() (char,
00133 boost::spirit::qi::unused_type,
00134 boost::spirit::qi::unused_type) const;
00135 };
00136
00138 struct storeChannel : public ParserSemanticAction {
00140 storeChannel (YieldRuleStruct&);
00142 void operator() (std::vector<char>,
00143 boost::spirit::qi::unused_type,
00144 boost::spirit::qi::unused_type) const;
00145 };
00146
00148 struct storeYield : public ParserSemanticAction {
00150 storeYield (YieldRuleStruct&);
00152 void operator() (double,
00153 boost::spirit::qi::unused_type,
00154 boost::spirit::qi::unused_type) const;
00155 };
00156
00158 struct storeAirlineCode : public ParserSemanticAction {
00160 storeAirlineCode (YieldRuleStruct&);
00162 void operator() (std::vector<char>,
00163 boost::spirit::qi::unused_type,
00164 boost::spirit::qi::unused_type) const;
00165 };
00166
00168 struct storeClass : public ParserSemanticAction {
00170 storeClass (YieldRuleStruct&);
00172 void operator() (std::vector<char>,
00173 boost::spirit::qi::unused_type,
00174 boost::spirit::qi::unused_type) const;
00175 };
00176
00178 struct doEndYield : public ParserSemanticAction {
00180 doEndYield (stdair::BomRoot&, YieldRuleStruct&);
00182 void operator() (boost::spirit::qi::unused_type,
00183 boost::spirit::qi::unused_type,
00184 boost::spirit::qi::unused_type) const;
00186 stdair::BomRoot& _bomRoot;
00187 };
00188
00189 }
00190
00192
00193
00194
00196
00202 class YieldFileParser : public stdair::CmdAbstract {
00203 public:
00205 YieldFileParser (stdair::BomRoot&,
00206 const stdair::Filename_T& iYieldInputFilename);
00207
00209 void generateYieldStore ();
00210
00211 private:
00213 void init();
00214
00215 private:
00216
00217
00219 stdair::Filename_T _filename;
00220
00222 stdair::BomRoot& _bomRoot;
00223
00225 YieldRuleStruct _yieldRule;
00226 };
00227
00228 }
00229 #endif // __AIRRAC_CMD_YIELDPARSERHELPER_HPP