$treeview $search $mathjax
00001 // ////////////////////////////////////////////////////////////////////// 00002 // Import section 00003 // ////////////////////////////////////////////////////////////////////// 00004 // STL 00005 #include <cassert> 00006 #include <sstream> 00007 // Boost.Serialization 00008 #include <boost/archive/text_iarchive.hpp> 00009 #include <boost/archive/text_oarchive.hpp> 00010 #include <boost/serialization/access.hpp> 00011 // StdAir 00012 #include <stdair/basic/BasConst_General.hpp> 00013 #include <stdair/basic/BasConst_Inventory.hpp> 00014 #include <stdair/basic/BasConst_Period_BOM.hpp> 00015 #include <stdair/basic/BasConst_TravelSolution.hpp> 00016 // AirTSP 00017 #include <airtsp/bom/SegmentPathPeriodKey.hpp> 00018 00019 namespace AIRTSP { 00020 00021 // //////////////////////////////////////////////////////////////////// 00022 SegmentPathPeriodKey::SegmentPathPeriodKey() 00023 : _period (stdair::BOOST_DEFAULT_DATE_PERIOD, stdair::DEFAULT_DOW_STRING), 00024 _boardingTime (stdair::NULL_BOOST_TIME_DURATION), 00025 _elapsed (stdair::NULL_BOOST_TIME_DURATION), 00026 _nbOfAirlines (stdair::DEFAULT_NBOFAIRLINES) { 00027 } 00028 00029 // //////////////////////////////////////////////////////////////////// 00030 SegmentPathPeriodKey::SegmentPathPeriodKey (const SegmentPathPeriodKey& iSPPK) 00031 : _period (iSPPK._period), 00032 _boardingTime (iSPPK._boardingTime), 00033 _elapsed (iSPPK._elapsed), 00034 _boardingDateOffsetList (iSPPK._boardingDateOffsetList), 00035 _nbOfAirlines (iSPPK._nbOfAirlines) { 00036 } 00037 00038 // //////////////////////////////////////////////////////////////////// 00039 SegmentPathPeriodKey:: 00040 SegmentPathPeriodKey (const stdair::PeriodStruct& iPeriod, 00041 const stdair::Duration_T& iBoardingTime, 00042 const stdair::Duration_T& iElapsedTime, 00043 const DateOffsetList_T& iBoardingDateOffsetList, 00044 const stdair::NbOfAirlines_T& iNbOfAirlines) 00045 : _period (iPeriod), 00046 _boardingTime (iBoardingTime), 00047 _elapsed (iElapsedTime), 00048 _boardingDateOffsetList (iBoardingDateOffsetList), 00049 _nbOfAirlines (iNbOfAirlines) { 00050 } 00051 00052 // //////////////////////////////////////////////////////////////////// 00053 SegmentPathPeriodKey::~SegmentPathPeriodKey() { 00054 } 00055 00056 // //////////////////////////////////////////////////////////////////// 00057 void SegmentPathPeriodKey::toStream (std::ostream& ioOut) const { 00058 ioOut << "SegmentPathPeriodKey: " << toString() << std::endl; 00059 } 00060 00061 // //////////////////////////////////////////////////////////////////// 00062 void SegmentPathPeriodKey::fromStream (std::istream& ioIn) { 00063 } 00064 00065 // //////////////////////////////////////////////////////////////////// 00066 const std::string SegmentPathPeriodKey::toString() const { 00067 std::ostringstream oStr; 00068 oStr << _period.describeShort() << ", " 00069 << _boardingTime << ", " << _elapsed << ", "; 00070 00071 for (DateOffsetList_T::const_iterator itOffset = 00072 _boardingDateOffsetList.begin(); 00073 itOffset != _boardingDateOffsetList.end(); ++itOffset) { 00074 const stdair::DateOffset_T& lDateOffset = *itOffset; 00075 oStr << lDateOffset.days() << ", "; 00076 } 00077 00078 oStr << _nbOfAirlines ; 00079 return oStr.str(); 00080 } 00081 00082 // //////////////////////////////////////////////////////////////////// 00083 void SegmentPathPeriodKey::serialisationImplementationExport() const { 00084 std::ostringstream oStr; 00085 boost::archive::text_oarchive oa (oStr); 00086 oa << *this; 00087 } 00088 00089 // //////////////////////////////////////////////////////////////////// 00090 void SegmentPathPeriodKey::serialisationImplementationImport() { 00091 std::istringstream iStr; 00092 boost::archive::text_iarchive ia (iStr); 00093 ia >> *this; 00094 } 00095 00096 // //////////////////////////////////////////////////////////////////// 00097 template<class Archive> 00098 void SegmentPathPeriodKey::serialize (Archive& ioArchive, 00099 const unsigned int iFileVersion) { 00104 //ioArchive & _period & _boardingTime & _elapsed & _nbOfAirlines; 00105 std::string lBTStr = boost::posix_time::to_simple_string (_boardingTime); 00106 std::string lElapsedStr = boost::posix_time::to_simple_string (_elapsed); 00107 ioArchive & lBTStr & lElapsedStr & _nbOfAirlines; 00108 } 00109 00110 // //////////////////////////////////////////////////////////////////// 00111 // Explicit template instantiation 00112 namespace ba = boost::archive; 00113 template 00114 void SegmentPathPeriodKey::serialize<ba::text_oarchive> (ba::text_oarchive&, 00115 unsigned int); 00116 template 00117 void SegmentPathPeriodKey::serialize<ba::text_iarchive> (ba::text_iarchive&, 00118 unsigned int); 00119 // //////////////////////////////////////////////////////////////////// 00120 00121 }