$treeview $search $mathjax
00001 // ////////////////////////////////////////////////////////////////////// 00002 // Import section 00003 // ////////////////////////////////////////////////////////////////////// 00004 // STL 00005 #include <cassert> 00006 #include <sstream> 00007 // StdAir 00008 #include <stdair/service/Logger.hpp> 00009 #include <stdair/bom/FFDisutilityCurveHolderStruct.hpp> 00010 00011 namespace stdair { 00012 00013 // //////////////////////////////////////////////////////////////////// 00014 FFDisutilityCurveHolderStruct::FFDisutilityCurveHolderStruct() { 00015 } 00016 00017 // //////////////////////////////////////////////////////////////////// 00018 FFDisutilityCurveHolderStruct:: 00019 FFDisutilityCurveHolderStruct (const FFDisutilityCurveHolderStruct& iHolder) 00020 : _disutilityCurveHolder (iHolder._disutilityCurveHolder) { 00021 } 00022 00023 // //////////////////////////////////////////////////////////////////// 00024 FFDisutilityCurveHolderStruct::~FFDisutilityCurveHolderStruct() { 00025 } 00026 00027 // //////////////////////////////////////////////////////////////////// 00028 const FFDisutilityCurve_T& FFDisutilityCurveHolderStruct:: 00029 getFFDisutilityCurve (const std::string& iKey) const { 00030 FFDisutilityCurveHolder_T::const_iterator itCurve = _disutilityCurveHolder.find (iKey); 00031 if (itCurve == _disutilityCurveHolder.end()) { 00032 STDAIR_LOG_DEBUG ("Cannot find the FFDisutility curve correponding to the " 00033 << "given key: " << iKey); 00034 assert (false); 00035 } 00036 00037 return itCurve->second; 00038 } 00039 00040 // //////////////////////////////////////////////////////////////////// 00041 void FFDisutilityCurveHolderStruct:: 00042 addCurve (const std::string& iKey, const FFDisutilityCurve_T& iCurve) { 00043 bool insert = _disutilityCurveHolder.insert (FFDisutilityCurveHolder_T::value_type(iKey, iCurve)).second; 00044 if (insert == false) { 00045 STDAIR_LOG_DEBUG ("Cannot add the FFDisutility curve correponding to the " 00046 << "given key: " << iKey 00047 << ", the key may already exist."); 00048 assert (false); 00049 } 00050 } 00051 00052 // //////////////////////////////////////////////////////////////////// 00053 void FFDisutilityCurveHolderStruct::toStream (std::ostream& ioOut) const { 00054 ioOut << describe(); 00055 } 00056 00057 // //////////////////////////////////////////////////////////////////// 00058 void FFDisutilityCurveHolderStruct::fromStream (std::istream& ioIn) { 00059 } 00060 00061 // //////////////////////////////////////////////////////////////////// 00062 const std::string FFDisutilityCurveHolderStruct::describe() const { 00063 std::ostringstream oStr; 00064 for (FFDisutilityCurveHolder_T::const_iterator itCurve = _disutilityCurveHolder.begin(); 00065 itCurve != _disutilityCurveHolder.end(); ++itCurve) { 00066 const std::string& lKey = itCurve->first; 00067 const FFDisutilityCurve_T& lCurve = itCurve->second; 00068 oStr << lKey << "; "; 00069 for (FFDisutilityCurve_T::const_reverse_iterator itFFDisutility = 00070 lCurve.rbegin();itFFDisutility != lCurve.rend(); ++itFFDisutility){ 00071 const DTD_T& lDTD = itFFDisutility->first; 00072 const double& lFFDisutility = itFFDisutility->second; 00073 oStr << lDTD << ":" << lFFDisutility << ";"; 00074 } 00075 oStr << std::endl; 00076 } 00077 return oStr.str(); 00078 } 00079 00080 }