StdAir Logo  1.00.0
C++ Standard Airline IT Object Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
FFDisutilityCurveHolderStruct.cpp
Go to the documentation of this file.
1 // //////////////////////////////////////////////////////////////////////
2 // Import section
3 // //////////////////////////////////////////////////////////////////////
4 // STL
5 #include <cassert>
6 #include <sstream>
7 // StdAir
10 
11 namespace stdair {
12 
13  // ////////////////////////////////////////////////////////////////////
15  }
16 
17  // ////////////////////////////////////////////////////////////////////
20  : _disutilityCurveHolder (iHolder._disutilityCurveHolder) {
21  }
22 
23  // ////////////////////////////////////////////////////////////////////
25  }
26 
27  // ////////////////////////////////////////////////////////////////////
29  getFFDisutilityCurve (const std::string& iKey) const {
30  FFDisutilityCurveHolder_T::const_iterator itCurve = _disutilityCurveHolder.find (iKey);
31  if (itCurve == _disutilityCurveHolder.end()) {
32  STDAIR_LOG_DEBUG ("Cannot find the FFDisutility curve correponding to the "
33  << "given key: " << iKey);
34  assert (false);
35  }
36 
37  return itCurve->second;
38  }
39 
40  // ////////////////////////////////////////////////////////////////////
42  addCurve (const std::string& iKey, const FFDisutilityCurve_T& iCurve) {
43  bool insert = _disutilityCurveHolder.insert (FFDisutilityCurveHolder_T::value_type(iKey, iCurve)).second;
44  if (insert == false) {
45  STDAIR_LOG_DEBUG ("Cannot add the FFDisutility curve correponding to the "
46  << "given key: " << iKey
47  << ", the key may already exist.");
48  assert (false);
49  }
50  }
51 
52  // ////////////////////////////////////////////////////////////////////
53  void FFDisutilityCurveHolderStruct::toStream (std::ostream& ioOut) const {
54  ioOut << describe();
55  }
56 
57  // ////////////////////////////////////////////////////////////////////
58  void FFDisutilityCurveHolderStruct::fromStream (std::istream& ioIn) {
59  }
60 
61  // ////////////////////////////////////////////////////////////////////
62  const std::string FFDisutilityCurveHolderStruct::describe() const {
63  std::ostringstream oStr;
64  for (FFDisutilityCurveHolder_T::const_iterator itCurve = _disutilityCurveHolder.begin();
65  itCurve != _disutilityCurveHolder.end(); ++itCurve) {
66  const std::string& lKey = itCurve->first;
67  const FFDisutilityCurve_T& lCurve = itCurve->second;
68  oStr << lKey << "; ";
69  for (FFDisutilityCurve_T::const_reverse_iterator itFFDisutility =
70  lCurve.rbegin();itFFDisutility != lCurve.rend(); ++itFFDisutility){
71  const DTD_T& lDTD = itFFDisutility->first;
72  const double& lFFDisutility = itFFDisutility->second;
73  oStr << lDTD << ":" << lFFDisutility << ";";
74  }
75  oStr << std::endl;
76  }
77  return oStr.str();
78  }
79 
80 }