$treeview $search $mathjax
StdAir Logo  1.00.1
$projectbrief
$projectbrief
$searchbox

stdair/bom/AirlineClassListKey.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_BomDisplay.hpp>
00013 #include <stdair/bom/AirlineClassListKey.hpp>
00014 
00015 namespace stdair {
00016 
00017   // ////////////////////////////////////////////////////////////////////
00018   AirlineClassListKey::AirlineClassListKey() {
00019     assert (false);
00020   }
00021 
00022   // ////////////////////////////////////////////////////////////////////
00023   AirlineClassListKey::
00024   AirlineClassListKey (const AirlineCodeList_T& iAirlineCodeList,
00025                        const ClassList_StringList_T& iClassCodeList)
00026     : _airlineCodeList (iAirlineCodeList), _classCodeList (iClassCodeList) {
00027   }
00028 
00029   // ////////////////////////////////////////////////////////////////////
00030   AirlineClassListKey::AirlineClassListKey (const AirlineClassListKey& iKey)
00031     : _airlineCodeList (iKey._airlineCodeList),
00032       _classCodeList (iKey._classCodeList) {
00033   }
00034 
00035   // ////////////////////////////////////////////////////////////////////
00036   AirlineClassListKey::~AirlineClassListKey() {
00037   }
00038 
00039   // ////////////////////////////////////////////////////////////////////
00040   void AirlineClassListKey::toStream (std::ostream& ioOut) const {
00041     ioOut << "AirlineClassListKey: " << toString() << std::endl;
00042   }
00043 
00044   // ////////////////////////////////////////////////////////////////////
00045   void AirlineClassListKey::fromStream (std::istream& ioIn) {
00046   }
00047 
00048   // ////////////////////////////////////////////////////////////////////
00049   const std::string AirlineClassListKey::toString() const {
00050     std::ostringstream oStr;
00051     assert (_airlineCodeList.size() == _classCodeList.size());
00052     
00053     unsigned short idx = 0;
00054     AirlineCodeList_T::const_iterator itAirlineCode = _airlineCodeList.begin();
00055     for (ClassList_StringList_T::const_iterator itClassCode =
00056            _classCodeList.begin(); itClassCode != _classCodeList.end();
00057          ++itClassCode, ++itAirlineCode, ++idx) {
00058       if (idx != 0) {
00059         oStr << DEFAULT_KEY_SUB_FLD_DELIMITER << " ";
00060       }
00061 
00062       const AirlineCode_T& lAirlineCode = *itAirlineCode;
00063       const ClassCode_T& lClassCode = *itClassCode;
00064       oStr << lAirlineCode << " " << lClassCode;
00065     }
00066 
00067     return oStr.str();
00068   }
00069 
00070   // ////////////////////////////////////////////////////////////////////
00071   void AirlineClassListKey::serialisationImplementationExport() const {
00072     std::ostringstream oStr;
00073     boost::archive::text_oarchive oa (oStr);
00074     oa << *this;
00075   }
00076 
00077   // ////////////////////////////////////////////////////////////////////
00078   void AirlineClassListKey::serialisationImplementationImport() {
00079     std::istringstream iStr;
00080     boost::archive::text_iarchive ia (iStr);
00081     ia >> *this;
00082   }
00083 
00084   // ////////////////////////////////////////////////////////////////////
00085   template<class Archive>
00086   void AirlineClassListKey::serialize (Archive& ioArchive,
00087                                        const unsigned int iFileVersion) {
00096     AirlineCodeList_T::const_iterator itAirlineCode = _airlineCodeList.begin();
00097     for (ClassList_StringList_T::const_iterator itClassCode =
00098            _classCodeList.begin(); itClassCode != _classCodeList.end();
00099          ++itClassCode, ++itAirlineCode) {
00100       AirlineCode_T lAirlineCode = *itAirlineCode;
00101       ClassCode_T lClassCode = *itClassCode;
00102 
00103       ioArchive & lAirlineCode & lClassCode;
00104     }
00105   }
00106 
00107   // ////////////////////////////////////////////////////////////////////
00108   // Explicit template instantiation
00109   namespace ba = boost::archive;
00110   template void AirlineClassListKey::
00111   serialize<ba::text_oarchive> (ba::text_oarchive&, unsigned int);
00112   template void AirlineClassListKey::
00113   serialize<ba::text_iarchive> (ba::text_iarchive&, unsigned int);
00114   // ////////////////////////////////////////////////////////////////////
00115 
00116 }