$treeview $search $mathjax
00001 // ////////////////////////////////////////////////////////////////////// 00002 // Import section 00003 // ////////////////////////////////////////////////////////////////////// 00004 // STL 00005 #include <cassert> 00006 #include <ostream> 00007 // StdAir 00008 #include <stdair/basic/BasConst_BomDisplay.hpp> 00009 #include <stdair/bom/BomManager.hpp> 00010 #include <stdair/bom/BomRoot.hpp> 00011 // AirTSP 00012 #include <airtsp/bom/ReachableUniverse.hpp> 00013 #include <airtsp/bom/BomDisplay.hpp> 00014 00015 namespace AIRTSP { 00016 00022 struct FlagSaver { 00023 public: 00025 FlagSaver (std::ostream& oStream) 00026 : _oStream (oStream), _streamFlags (oStream.flags()) { 00027 } 00028 00030 ~FlagSaver() { 00031 // Reset formatting flags of the given output stream 00032 _oStream.flags (_streamFlags); 00033 } 00034 00035 private: 00037 std::ostream& _oStream; 00039 std::ios::fmtflags _streamFlags; 00040 }; 00041 00042 // //////////////////////////////////////////////////////////////////// 00043 std::string BomDisplay::csvDisplay (const stdair::BomRoot& iBomRoot) { 00044 std::ostringstream oStream; 00045 00049 oStream << std::endl; 00050 oStream << "===============================================================" 00051 << std::endl; 00052 oStream << "BomRoot: " << iBomRoot.describeKey() << std::endl; 00053 oStream << "===============================================================" 00054 << std::endl; 00055 00056 // Check whether there are ReachableUniverse objects 00057 if (stdair::BomManager::hasList<ReachableUniverse> (iBomRoot) == false) { 00058 return oStream.str(); 00059 } 00060 00061 // Retrieve the ReachableUniverse list 00062 const ReachableUniverseList_T& lReachableUniverseList = 00063 stdair::BomManager::getList<ReachableUniverse> (iBomRoot); 00064 00065 // Browse the networks for each departure airport 00066 for (ReachableUniverseList_T::const_iterator itReachableUniverse = 00067 lReachableUniverseList.begin(); 00068 itReachableUniverse != lReachableUniverseList.end(); 00069 ++itReachableUniverse) { 00070 ReachableUniverse* lReachableUniverse_ptr = *itReachableUniverse; 00071 assert (lReachableUniverse_ptr != NULL); 00072 00073 // Display the reachable universe 00074 csvDisplay (oStream, *lReachableUniverse_ptr); 00075 } 00076 00077 return oStream.str(); 00078 } 00079 00080 // //////////////////////////////////////////////////////////////////// 00081 void BomDisplay::csvDisplay (std::ostream& oStream, 00082 const ReachableUniverse& iReachableUniverse) { 00083 // Save the formatting flags for the given STL output stream 00084 FlagSaver flagSaver (oStream); 00085 00089 oStream << "+++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl; 00090 oStream << iReachableUniverse.toString(); 00091 oStream << "+++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl; 00092 } 00093 00094 }