Edge_AMOS.cc

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 #include "Edge_AMOS.hh"
00011 using namespace AMOS;
00012 using namespace std;
00013 
00014 
00015 
00016 
00017 //====================================================== IEdge_t ===============
00018 //----------------------------------------------------- readMessage ------------
00019 void IEdge_t::readMessage (const Message_t & msg)
00020 {
00021   clear( );
00022 
00023   try {
00024 
00025     if ( msg . exists (F_LINK) )
00026       {
00027         istringstream ss;
00028         ID_t iid;
00029 
00030         ss . str (msg . getField (F_LINK));
00031 
00032         while ( ss )
00033           {
00034             ss >> iid;
00035             if ( ! ss . fail( ) )
00036               links_m . push_back (iid);
00037           }
00038 
00039         if ( ! ss . eof( ) )
00040           AMOS_THROW_ARGUMENT ("Invalid link list format");
00041         ss . clear( );
00042       }
00043   }
00044   catch (ArgumentException_t) {
00045     
00046     IEdge_t::clear( );
00047     throw;
00048   }
00049 }
00050 
00051 
00052 //----------------------------------------------------- readRecord -------------
00053 void IEdge_t::readRecord (istream & fix, istream & var)
00054 {
00055   Size_t size;
00056   readLE (fix, &size);
00057 
00058   links_m . resize (size, NULL_ID);
00059   for ( Pos_t i = 0; i < size; i ++ )
00060     readLE (var, &(links_m [i]));
00061 }
00062 
00063 
00064 
00065 //----------------------------------------------------- readRecordFix ----------
00066 void IEdge_t::readRecordFix (istream & fix)
00067 {
00068   Size_t size;
00069   readLE (fix, &size);
00070 
00071   links_m . clear();
00072 }
00073 
00074 
00075 //----------------------------------------------------- writeMessage -----------
00076 void IEdge_t::writeMessage (Message_t & msg) const
00077 {
00078   try {
00079 
00080     if ( !links_m . empty( ) )
00081       {
00082         string s;
00083         ostringstream ss;
00084         vector<ID_t>::const_iterator vi;
00085 
00086         for ( vi = links_m . begin( ); vi != links_m . end( ); vi ++ )
00087           {
00088             ss << *vi << endl;
00089             s . append (ss . str( ));
00090             ss . str (NULL_STRING);
00091           }
00092 
00093         msg . setField (F_LINK, s);
00094       }
00095   }
00096   catch (ArgumentException_t) {
00097 
00098     msg . clear( );
00099     throw;
00100   }
00101 }
00102 
00103 
00104 //----------------------------------------------------- writeRecord ------------
00105 void IEdge_t::writeRecord (ostream & fix, ostream & var) const
00106 {
00107   Size_t size = links_m . size( );
00108   writeLE (fix, &size);
00109 
00110   for ( Pos_t i = 0; i < size; i ++ )
00111     writeLE (var, &(links_m [i]));
00112 }
00113 
00114 
00115 //====================================================== Edge_t ================
00116 const NCode_t Edge_t::NCODE = M_EDGE;
00117 
00118 
00119 //----------------------------------------------------- readMessage ------------
00120 void Edge_t::readMessage (const Message_t & msg)
00121 {
00122   Link_t::readMessage (msg);
00123   IEdge_t::readMessage (msg);
00124 }
00125 
00126 
00127 //----------------------------------------------------- readRecord -------------
00128 void Edge_t::readRecord (istream & fix, istream & var)
00129 {
00130   Link_t::readRecord (fix, var);
00131   IEdge_t::readRecord (fix, var);
00132 }
00133 
00134 
00135 //----------------------------------------------------- readRecordFix ----------
00136 void Edge_t::readRecordFix (istream & fix)
00137 {
00138   Link_t::readRecordFix (fix);
00139   IEdge_t::readRecordFix (fix);
00140 }
00141 
00142 
00143 //----------------------------------------------------- writeMessage -----------
00144 void Edge_t::writeMessage (Message_t & msg) const
00145 {
00146   Link_t::writeMessage (msg); 
00147   IEdge_t::writeMessage (msg);
00148   
00149   try {
00150 
00151     msg . setMessageCode (Edge_t::NCODE);
00152 
00153   }
00154   catch (ArgumentException_t) {
00155 
00156     msg . clear( );
00157     throw;
00158   }
00159 }
00160 
00161 
00162 //----------------------------------------------------- writeRecord ------------
00163 void Edge_t::writeRecord (ostream & fix, ostream & var) const
00164 {
00165   Link_t::writeRecord (fix, var);
00166   IEdge_t::writeRecord (fix, var);
00167 }

Generated on Mon Feb 22 17:36:27 2010 for libAMOS by  doxygen 1.4.7