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_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::serialisationImplementation() {
00072 std::ostringstream oStr;
00073 boost::archive::text_oarchive oa (oStr);
00074 oa << *this;
00075
00076 std::istringstream iStr;
00077 boost::archive::text_iarchive ia (iStr);
00078 ia >> *this;
00079 }
00080
00081
00082 template<class Archive>
00083 void AirlineClassListKey::serialize (Archive& ioArchive,
00084 const unsigned int iFileVersion) {
00093 AirlineCodeList_T::const_iterator itAirlineCode = _airlineCodeList.begin();
00094 for (ClassList_StringList_T::const_iterator itClassCode =
00095 _classCodeList.begin(); itClassCode != _classCodeList.end();
00096 ++itClassCode, ++itAirlineCode) {
00097 AirlineCode_T lAirlineCode = *itAirlineCode;
00098 ClassCode_T lClassCode = *itClassCode;
00099
00100 ioArchive & lAirlineCode & lClassCode;
00101 }
00102 }
00103
00104
00105
00106 namespace ba = boost::archive;
00107 template void AirlineClassListKey::
00108 serialize<ba::text_oarchive> (ba::text_oarchive&, unsigned int);
00109 template void AirlineClassListKey::
00110 serialize<ba::text_iarchive> (ba::text_iarchive&, unsigned int);
00111
00112
00113 }