Go to the documentation of this file.00001
00002
00003
00004
00005 #include <cassert>
00006 #include <sstream>
00007
00008 #include <boost/archive/text_iarchive.hpp>
00009 #include <boost/archive/text_oarchive.hpp>
00010 #include <boost/serialization/access.hpp>
00011
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
00017 #include <airsched/bom/SegmentPathPeriodKey.hpp>
00018
00019 namespace AIRSCHED {
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
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
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 }