Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

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 //----------------------------------------------------- writeMessage ----------- 00065 void IEdge_t::writeMessage (Message_t & msg) const 00066 { 00067 try { 00068 00069 if ( !links_m . empty( ) ) 00070 { 00071 string s; 00072 ostringstream ss; 00073 vector<ID_t>::const_iterator vi; 00074 00075 for ( vi = links_m . begin( ); vi != links_m . end( ); vi ++ ) 00076 { 00077 ss << *vi << endl; 00078 s . append (ss . str( )); 00079 ss . str (NULL_STRING); 00080 } 00081 00082 msg . setField (F_LINK, s); 00083 } 00084 } 00085 catch (ArgumentException_t) { 00086 00087 msg . clear( ); 00088 throw; 00089 } 00090 } 00091 00092 00093 //----------------------------------------------------- writeRecord ------------ 00094 void IEdge_t::writeRecord (ostream & fix, ostream & var) const 00095 { 00096 Size_t size = links_m . size( ); 00097 writeLE (fix, &size); 00098 00099 for ( Pos_t i = 0; i < size; i ++ ) 00100 writeLE (var, &(links_m [i])); 00101 } 00102 00103 00104 //====================================================== Edge_t ================ 00105 const NCode_t Edge_t::NCODE = M_EDGE; 00106 00107 00108 //----------------------------------------------------- readMessage ------------ 00109 void Edge_t::readMessage (const Message_t & msg) 00110 { 00111 Link_t::readMessage (msg); 00112 IEdge_t::readMessage (msg); 00113 } 00114 00115 00116 //----------------------------------------------------- readRecord ------------- 00117 void Edge_t::readRecord (istream & fix, istream & var) 00118 { 00119 Link_t::readRecord (fix, var); 00120 IEdge_t::readRecord (fix, var); 00121 } 00122 00123 00124 //----------------------------------------------------- writeMessage ----------- 00125 void Edge_t::writeMessage (Message_t & msg) const 00126 { 00127 Link_t::writeMessage (msg); 00128 IEdge_t::writeMessage (msg); 00129 00130 try { 00131 00132 msg . setMessageCode (Edge_t::NCODE); 00133 00134 } 00135 catch (ArgumentException_t) { 00136 00137 msg . clear( ); 00138 throw; 00139 } 00140 } 00141 00142 00143 //----------------------------------------------------- writeRecord ------------ 00144 void Edge_t::writeRecord (ostream & fix, ostream & var) const 00145 { 00146 Link_t::writeRecord (fix, var); 00147 IEdge_t::writeRecord (fix, var); 00148 }

Generated on Tue May 17 15:19:01 2005 for libAMOS by doxygen 1.3.8