AirTSP Logo  1.01.6
C++ Simulated Airline Travel Solution Provider (TSP) Library
BookingRequestParser.hpp
Go to the documentation of this file.
1 // //////////////////////////////////////////////////////////////////////
2 // Import section
3 // //////////////////////////////////////////////////////////////////////
4 // STL
5 #include <string>
6 #include <vector>
7 
8 namespace airtsp {
9 
11  struct Place_T {
12  // Attributes
13  std::string _name;
14  std::string _code;
16  Place_T () : _name (""), _code ("") {}
17  /* Display. */
18  void display() const {
19  std::cout << "Place: " << _name << " (" << _code << ")" << std::endl;
20  }
21  };
22 
24  typedef std::vector<Place_T> PlaceList_T;
25 
27  struct Date_T {
28  // Attributes
29  boost::gregorian::date _date;
30  unsigned int _reldays;
31  unsigned int _day;
32  unsigned int _month;
33  unsigned int _year;
35  Date_T () : _reldays (14), _day(1), _month(1), _year(1970) {}
36  /* Display. */
37  void display() const {
38  std::cout << "Date: " << _date << " (" << _day << "/" << _month
39  << "/" << _year << "), i.e. in " << _reldays << " days"
40  << std::endl;
41  }
43  boost::gregorian::date getDate() const {
44  return boost::gregorian::date (_year, _month, _day);
45  }
46  };
47 
49  typedef std::vector<Date_T> DateList_T;
50 
52  struct Airline_T {
53  // Attributes
55  std::string _name;
56  std::string _code;
58  Airline_T () : _isPreferred (true), _name(""), _code("") {}
59  /* Display. */
60  void display() const {
61  const std::string isPreferredStr = (_isPreferred)?"+":"-";
62  std::cout << "Airline: " << isPreferredStr << _name << " (" << _code << ")"
63  << std::endl;
64  }
65  };
66 
68  typedef std::vector<Airline_T> AirlineList_T;
69 
71  struct Passenger_T {
72  // Attributes
73  typedef enum { ADULT = 0, CHILD, PET, LAST_VALUE } PassengerType_T;
74  static const std::string _labels[LAST_VALUE];
76  unsigned short _number;
79  /* Display. */
80  void display() const {
81  std::cout << "Passenger: " << _number << " (" << _labels[_type] << ")"
82  << std::endl;
83  }
84  };
85 
88  { "Adult", "Child", "Pet" };
89 
91  typedef std::vector<Passenger_T> PassengerList_T;
92 
94  struct SearchString_T {
95  // Attributes
100 
103 
104  /* Display. */
105  void display() const {
106  std::cout << std::endl;
107 
108  for (PlaceList_T::const_iterator itPlace = _placeList.begin();
109  itPlace != _placeList.end(); ++itPlace) {
110  const Place_T& lPlace = *itPlace;
111  lPlace.display();
112  }
113 
114  for (DateList_T::const_iterator itDate = _dateList.begin();
115  itDate != _dateList.end(); ++itDate) {
116  const Date_T& lDate = *itDate;
117  lDate.display();
118  }
119 
120  for (AirlineList_T::const_iterator itAirline = _airlineList.begin();
121  itAirline != _airlineList.end(); ++itAirline) {
122  const Airline_T& lAirline = *itAirline;
123  lAirline.display();
124  }
125 
126  for (PassengerList_T::const_iterator itPassenger = _passengerList.begin();
127  itPassenger != _passengerList.end(); ++itPassenger) {
128  const Passenger_T& lPassenger = *itPassenger;
129  lPassenger.display();
130  }
131 
132  std::cout << "-- Staging --" << std::endl;
133  _tmpPlace.display();
134  }
135 
136  // //// Staging ////
141  };
142 
144  //
145  // The booking request grammar (using subrules)
146  //
148 
174  SearchString_T parseBookingRequest (const std::string& iSearchString);
175 
176 }
airtsp::Date_T::_month
unsigned int _month
Definition: BookingRequestParser.hpp:32
airtsp::Date_T
Definition: BookingRequestParser.hpp:27
airtsp::SearchString_T::SearchString_T
SearchString_T()
Definition: BookingRequestParser.hpp:102
airtsp::Passenger_T::Passenger_T
Passenger_T()
Definition: BookingRequestParser.hpp:78
airtsp::Airline_T
Definition: BookingRequestParser.hpp:52
airtsp::Place_T::display
void display() const
Definition: BookingRequestParser.hpp:18
airtsp::PassengerList_T
std::vector< Passenger_T > PassengerList_T
Definition: BookingRequestParser.hpp:91
airtsp::SearchString_T::_tmpDate
Date_T _tmpDate
Definition: BookingRequestParser.hpp:138
airtsp::Date_T::_reldays
unsigned int _reldays
Definition: BookingRequestParser.hpp:30
airtsp::SearchString_T::_tmpAirline
Airline_T _tmpAirline
Definition: BookingRequestParser.hpp:139
airtsp::DateList_T
std::vector< Date_T > DateList_T
Definition: BookingRequestParser.hpp:49
airtsp::Passenger_T::display
void display() const
Definition: BookingRequestParser.hpp:80
airtsp::Date_T::Date_T
Date_T()
Definition: BookingRequestParser.hpp:35
airtsp::Passenger_T::_labels
static const std::string _labels[LAST_VALUE]
Definition: BookingRequestParser.hpp:74
airtsp::SearchString_T::_airlineList
AirlineList_T _airlineList
Definition: BookingRequestParser.hpp:98
airtsp::Passenger_T::_type
PassengerType_T _type
Definition: BookingRequestParser.hpp:75
airtsp::Airline_T::_name
std::string _name
Definition: BookingRequestParser.hpp:55
airtsp::parseBookingRequest
SearchString_T parseBookingRequest(const std::string &iSearchString)
Definition: BookingRequestParser.cpp:373
airtsp::Passenger_T::ADULT
@ ADULT
Definition: BookingRequestParser.hpp:73
airtsp::Date_T::_date
boost::gregorian::date _date
Definition: BookingRequestParser.hpp:29
airtsp
Definition: BookingRequestParser.cpp:34
airtsp::Passenger_T::LAST_VALUE
@ LAST_VALUE
Definition: BookingRequestParser.hpp:73
airtsp::Passenger_T::PET
@ PET
Definition: BookingRequestParser.hpp:73
airtsp::Date_T::_year
unsigned int _year
Definition: BookingRequestParser.hpp:33
airtsp::SearchString_T
Definition: BookingRequestParser.hpp:94
airtsp::SearchString_T::_tmpPassenger
Passenger_T _tmpPassenger
Definition: BookingRequestParser.hpp:140
airtsp::SearchString_T::display
void display() const
Definition: BookingRequestParser.hpp:105
airtsp::AirlineList_T
std::vector< Airline_T > AirlineList_T
Definition: BookingRequestParser.hpp:68
airtsp::Airline_T::display
void display() const
Definition: BookingRequestParser.hpp:60
airtsp::Place_T::_code
std::string _code
Definition: BookingRequestParser.hpp:14
airtsp::Airline_T::_isPreferred
bool _isPreferred
Definition: BookingRequestParser.hpp:54
airtsp::Passenger_T::PassengerType_T
PassengerType_T
Definition: BookingRequestParser.hpp:73
airtsp::Airline_T::_code
std::string _code
Definition: BookingRequestParser.hpp:56
airtsp::Date_T::getDate
boost::gregorian::date getDate() const
Definition: BookingRequestParser.hpp:43
airtsp::Place_T::Place_T
Place_T()
Definition: BookingRequestParser.hpp:16
airtsp::SearchString_T::_dateList
DateList_T _dateList
Definition: BookingRequestParser.hpp:97
airtsp::Passenger_T::CHILD
@ CHILD
Definition: BookingRequestParser.hpp:73
airtsp::Date_T::display
void display() const
Definition: BookingRequestParser.hpp:37
airtsp::Place_T::_name
std::string _name
Definition: BookingRequestParser.hpp:13
airtsp::Date_T::_day
unsigned int _day
Definition: BookingRequestParser.hpp:31
airtsp::SearchString_T::_placeList
PlaceList_T _placeList
Definition: BookingRequestParser.hpp:96
airtsp::Airline_T::Airline_T
Airline_T()
Definition: BookingRequestParser.hpp:58
airtsp::Passenger_T::_number
unsigned short _number
Definition: BookingRequestParser.hpp:76
airtsp::SearchString_T::_tmpPlace
Place_T _tmpPlace
Definition: BookingRequestParser.hpp:137
airtsp::Place_T
Definition: BookingRequestParser.hpp:11
airtsp::Passenger_T
Definition: BookingRequestParser.hpp:71
airtsp::SearchString_T::_passengerList
PassengerList_T _passengerList
Definition: BookingRequestParser.hpp:99
airtsp::PlaceList_T
std::vector< Place_T > PlaceList_T
Definition: BookingRequestParser.hpp:24