StdAir Logo  0.43.0
C++ Standard Airline IT Library
SegmentDateKey.cpp
Go to the documentation of this file.
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_Inventory.hpp>
00013 #include <stdair/basic/BasConst_BomDisplay.hpp>
00014 #include <stdair/bom/SegmentDateKey.hpp>
00015 
00016 namespace stdair {
00017 
00018   // ////////////////////////////////////////////////////////////////////
00019   SegmentDateKey::SegmentDateKey()
00020     : _boardingPoint (DEFAULT_ORIGIN), _offPoint (DEFAULT_DESTINATION) {
00021     assert (false);
00022   }
00023 
00024   // ////////////////////////////////////////////////////////////////////
00025   SegmentDateKey::SegmentDateKey (const AirportCode_T& iBoardingPoint,
00026                                   const AirportCode_T& iOffPoint)
00027     : _boardingPoint (iBoardingPoint), _offPoint (iOffPoint) {
00028   }
00029 
00030   // ////////////////////////////////////////////////////////////////////
00031   SegmentDateKey::SegmentDateKey (const SegmentDateKey& iKey)
00032     : _boardingPoint (iKey._boardingPoint), _offPoint (iKey._offPoint) {
00033   }
00034 
00035   // ////////////////////////////////////////////////////////////////////
00036   SegmentDateKey::~SegmentDateKey() {
00037   }
00038 
00039   // ////////////////////////////////////////////////////////////////////
00040   void SegmentDateKey::toStream (std::ostream& ioOut) const {
00041     ioOut << "SegmentDateKey: " << toString() << std::endl;
00042   }
00043 
00044   // ////////////////////////////////////////////////////////////////////
00045   void SegmentDateKey::fromStream (std::istream& ioIn) {
00046   }
00047 
00048   // ////////////////////////////////////////////////////////////////////
00049   const std::string SegmentDateKey::toString() const {
00050     std::ostringstream oStr;
00051     oStr << _boardingPoint
00052          << DEFAULT_KEY_SUB_FLD_DELIMITER << " " << _offPoint;
00053     return oStr.str();
00054   }
00055 
00056   // ////////////////////////////////////////////////////////////////////
00057   void SegmentDateKey::serialisationImplementation() {
00058     std::ostringstream oStr;
00059     boost::archive::text_oarchive oa (oStr);
00060     oa << *this;
00061 
00062     std::istringstream iStr;
00063     boost::archive::text_iarchive ia (iStr);
00064     ia >> *this;
00065   }
00066 
00067   // ////////////////////////////////////////////////////////////////////
00068   template<class Archive>
00069   void SegmentDateKey::serialize (Archive& ioArchive,
00070                                   const unsigned int iFileVersion) {
00071     ioArchive & _boardingPoint & _offPoint;
00072   }
00073 
00074   // ////////////////////////////////////////////////////////////////////
00075   // Explicit template instantiation
00076   namespace ba = boost::archive;
00077   template void SegmentDateKey::serialize<ba::text_oarchive>(ba::text_oarchive&,
00078                                                              unsigned int);
00079   template void SegmentDateKey::serialize<ba::text_iarchive>(ba::text_iarchive&,
00080                                                              unsigned int);
00081   // ////////////////////////////////////////////////////////////////////
00082 
00083 }