$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_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 }