AirTSP Logo  1.01.0
C++ Simulated Airline Travel Solution Provider Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SegmentPathPeriodKey.cpp
Go to the documentation of this file.
1 // //////////////////////////////////////////////////////////////////////
2 // Import section
3 // //////////////////////////////////////////////////////////////////////
4 // STL
5 #include <cassert>
6 #include <sstream>
7 // Boost.Serialization
8 #include <boost/archive/text_iarchive.hpp>
9 #include <boost/archive/text_oarchive.hpp>
10 #include <boost/serialization/access.hpp>
11 // StdAir
12 #include <stdair/basic/BasConst_General.hpp>
13 #include <stdair/basic/BasConst_Inventory.hpp>
14 #include <stdair/basic/BasConst_Period_BOM.hpp>
15 #include <stdair/basic/BasConst_TravelSolution.hpp>
16 // AirTSP
18 
19 namespace AIRTSP {
20 
21  // ////////////////////////////////////////////////////////////////////
23  : _period (stdair::BOOST_DEFAULT_DATE_PERIOD, stdair::DEFAULT_DOW_STRING),
24  _boardingTime (stdair::NULL_BOOST_TIME_DURATION),
25  _elapsed (stdair::NULL_BOOST_TIME_DURATION),
26  _nbOfAirlines (stdair::DEFAULT_NBOFAIRLINES) {
27  }
28 
29  // ////////////////////////////////////////////////////////////////////
31  : _period (iSPPK._period),
32  _boardingTime (iSPPK._boardingTime),
33  _elapsed (iSPPK._elapsed),
34  _boardingDateOffsetList (iSPPK._boardingDateOffsetList),
35  _nbOfAirlines (iSPPK._nbOfAirlines) {
36  }
37 
38  // ////////////////////////////////////////////////////////////////////
40  SegmentPathPeriodKey (const stdair::PeriodStruct& iPeriod,
41  const stdair::Duration_T& iBoardingTime,
42  const stdair::Duration_T& iElapsedTime,
43  const DateOffsetList_T& iBoardingDateOffsetList,
44  const stdair::NbOfAirlines_T& iNbOfAirlines)
45  : _period (iPeriod),
46  _boardingTime (iBoardingTime),
47  _elapsed (iElapsedTime),
48  _boardingDateOffsetList (iBoardingDateOffsetList),
49  _nbOfAirlines (iNbOfAirlines) {
50  }
51 
52  // ////////////////////////////////////////////////////////////////////
54  }
55 
56  // ////////////////////////////////////////////////////////////////////
57  void SegmentPathPeriodKey::toStream (std::ostream& ioOut) const {
58  ioOut << "SegmentPathPeriodKey: " << toString() << std::endl;
59  }
60 
61  // ////////////////////////////////////////////////////////////////////
62  void SegmentPathPeriodKey::fromStream (std::istream& ioIn) {
63  }
64 
65  // ////////////////////////////////////////////////////////////////////
66  const std::string SegmentPathPeriodKey::toString() const {
67  std::ostringstream oStr;
68  oStr << _period.describeShort() << ", "
69  << _boardingTime << ", " << _elapsed << ", ";
70 
71  for (DateOffsetList_T::const_iterator itOffset =
72  _boardingDateOffsetList.begin();
73  itOffset != _boardingDateOffsetList.end(); ++itOffset) {
74  const stdair::DateOffset_T& lDateOffset = *itOffset;
75  oStr << lDateOffset.days() << ", ";
76  }
77 
78  oStr << _nbOfAirlines ;
79  return oStr.str();
80  }
81 
82  // ////////////////////////////////////////////////////////////////////
83  void SegmentPathPeriodKey::serialisationImplementationExport() const {
84  std::ostringstream oStr;
85  boost::archive::text_oarchive oa (oStr);
86  oa << *this;
87  }
88 
89  // ////////////////////////////////////////////////////////////////////
90  void SegmentPathPeriodKey::serialisationImplementationImport() {
91  std::istringstream iStr;
92  boost::archive::text_iarchive ia (iStr);
93  ia >> *this;
94  }
95 
96  // ////////////////////////////////////////////////////////////////////
97  template<class Archive>
98  void SegmentPathPeriodKey::serialize (Archive& ioArchive,
99  const unsigned int iFileVersion) {
104  //ioArchive & _period & _boardingTime & _elapsed & _nbOfAirlines;
105  std::string lBTStr = boost::posix_time::to_simple_string (_boardingTime);
106  std::string lElapsedStr = boost::posix_time::to_simple_string (_elapsed);
107  ioArchive & lBTStr & lElapsedStr & _nbOfAirlines;
108  }
109 
110  // ////////////////////////////////////////////////////////////////////
111  // Explicit template instantiation
112  namespace ba = boost::archive;
113  template
114  void SegmentPathPeriodKey::serialize<ba::text_oarchive> (ba::text_oarchive&,
115  unsigned int);
116  template
117  void SegmentPathPeriodKey::serialize<ba::text_iarchive> (ba::text_iarchive&,
118  unsigned int);
119  // ////////////////////////////////////////////////////////////////////
120 
121 }