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

Layout_AMOS.cc

Go to the documentation of this file.
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 #include "Layout_AMOS.hh" 00011 using namespace AMOS; 00012 using namespace std; 00013 00014 00015 00016 00017 //================================================ Layout_t ==================== 00018 const NCode_t Layout_t::NCODE = M_LAYOUT; 00019 00020 00021 //----------------------------------------------------- getSpan ---------------- 00022 Size_t Layout_t::getSpan ( ) const 00023 { 00024 Pos_t hi,lo; 00025 00026 if ( tiles_m . empty( ) ) 00027 { 00028 hi = 0; 00029 lo = 0; 00030 } 00031 else 00032 { 00033 hi = -(MAX_POS); 00034 lo = MAX_POS; 00035 } 00036 00037 vector<Tile_t>::const_iterator ti; 00038 for ( ti = tiles_m . begin( ); ti != tiles_m . end( ); ++ ti ) 00039 { 00040 if ( ti -> offset < lo ) 00041 lo = ti -> offset; 00042 if ( ti -> offset + ti -> range . getLength( ) > hi ) 00043 hi = ti -> offset + ti -> range . getLength( ); 00044 } 00045 00046 return hi - lo; 00047 } 00048 00049 00050 //----------------------------------------------------- readMessage ------------ 00051 void Layout_t::readMessage (const Message_t & msg) 00052 { 00053 Universal_t::readMessage (msg); 00054 00055 try { 00056 Tile_t tile; 00057 vector<Message_t>::const_iterator vi; 00058 00059 for ( vi = msg . getSubMessages( ) . begin( ); 00060 vi != msg . getSubMessages( ) . end( ); vi ++ ) 00061 { 00062 if ( vi -> getMessageCode( ) == M_TILE ) 00063 { 00064 tile . readMessage (*vi); 00065 tiles_m . push_back (tile); 00066 } 00067 } 00068 } 00069 catch (ArgumentException_t) { 00070 00071 clear( ); 00072 throw; 00073 } 00074 } 00075 00076 00077 //----------------------------------------------------- readRecord ------------- 00078 void Layout_t::readRecord (istream & fix, istream & var) 00079 { 00080 Universal_t::readRecord (fix, var); 00081 00082 Size_t size; 00083 readLE (fix, &size); 00084 00085 tiles_m . resize (size); 00086 for ( Pos_t i = 0; i < size; i ++ ) 00087 tiles_m [i] . readRecord (var); 00088 } 00089 00090 00091 //----------------------------------------------------- writeMessage ----------- 00092 void Layout_t::writeMessage (Message_t & msg) const 00093 { 00094 Universal_t::writeMessage (msg); 00095 00096 try { 00097 00098 msg . setMessageCode (Layout_t::NCODE); 00099 00100 if ( !tiles_m . empty( ) ) 00101 { 00102 vector<Tile_t>::const_iterator tvi; 00103 Pos_t begin = msg . getSubMessages( ) . size( ); 00104 Pos_t end = begin + tiles_m . size( ); 00105 msg . getSubMessages( ) . resize (end); 00106 00107 for ( tvi = tiles_m . begin( ); tvi != tiles_m . end( ); tvi ++ ) 00108 tvi -> writeMessage (msg . getSubMessages( ) [begin ++]); 00109 } 00110 } 00111 catch (ArgumentException_t) { 00112 00113 msg . clear( ); 00114 throw; 00115 } 00116 } 00117 00118 00119 //----------------------------------------------------- writeRecord ------------ 00120 void Layout_t::writeRecord (ostream & fix, ostream & var) const 00121 { 00122 Universal_t::writeRecord (fix, var); 00123 00124 Size_t size = tiles_m . size( ); 00125 writeLE (fix, &size); 00126 00127 for ( Pos_t i = 0; i < size; i ++ ) 00128 tiles_m [i] . writeRecord (var); 00129 }

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