Go to the documentation of this file.00001
00002
00003
00004
00005 #include <cassert>
00006 #include <ostream>
00007
00008 #include <stdair/basic/BasConst_BomDisplay.hpp>
00009 #include <stdair/bom/BomManager.hpp>
00010 #include <stdair/bom/BomRoot.hpp>
00011
00012 #include <airsched/bom/ReachableUniverse.hpp>
00013 #include <airsched/bom/BomDisplay.hpp>
00014
00015 namespace AIRSCHED {
00016
00022 struct FlagSaver {
00023 public:
00025 FlagSaver (std::ostream& oStream)
00026 : _oStream (oStream), _streamFlags (oStream.flags()) {
00027 }
00028
00030 ~FlagSaver() {
00031
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
00057 if (stdair::BomManager::hasList<ReachableUniverse> (iBomRoot) == false) {
00058 return oStream.str();
00059 }
00060
00061
00062 const ReachableUniverseList_T& lReachableUniverseList =
00063 stdair::BomManager::getList<ReachableUniverse> (iBomRoot);
00064
00065
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
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
00084 FlagSaver flagSaver (oStream);
00085
00089 oStream << "+++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl;
00090 oStream << iReachableUniverse.toString();
00091 oStream << "+++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl;
00092 }
00093
00094 }