00001
00002
00003
00004
00005
00006
00007 #ifdef USE_STD
00008 #include <iostream>
00009 #include <string>
00010 using namespace std;
00011 #else
00012 #include <iostream.h>
00013 #include <string.h>
00014 #endif
00015
00016 #include "utility.h"
00017 #include "MCFheader.h"
00018
00019 #include "MCFTPheader.h"
00020
00021 MCFTPheader& MCFTPheader::operator () ()
00022 {
00023 _tag = "MCFTP___";
00024 _id();
00025 _mcftpsizeb = -1;
00026 _version = 0;
00027 _revision = 2;
00028 _release = 0;
00029 _author = 0;
00030 _descript = "";
00031 return *this;
00032 }
00033
00034 MCFTPheader& MCFTPheader::operator () ( const MCFheader& header )
00035 {
00036 _tag = header._tag;
00037 _id();
00038 _mcftpsizeb = -1;
00039 _version = header._version;
00040 _revision = header._revision;
00041 _release = header._release;
00042 _author = header._author;
00043 _descript = header._descript;
00044 return *this;
00045 }
00046
00047 MCFTPheader& MCFTPheader::operator () ( const MCFTPheader& header )
00048 {
00049 _tag = header._tag;
00050 _id = header._id;
00051 _mcftpsizeb = header._mcftpsizeb;
00052 _version = header._version;
00053 _revision = header._revision;
00054 _release = header._release;
00055 _author = header._author;
00056 _descript = header._descript;
00057 return *this;
00058 }
00059
00060 MCFTPheader& MCFTPheader::copy( const MCFTPheader& rhs )
00061 {
00062 if ( this != &rhs ) {
00063 _tag = rhs._tag;
00064 _id = rhs._id;
00065 _mcftpsizeb = rhs._mcftpsizeb;
00066 _version = rhs._version;
00067 _revision = rhs._revision;
00068 _release = rhs._release;
00069 _author = rhs._author;
00070 _descript = rhs._descript;
00071 }
00072 return *this;
00073 }
00074
00075 MCFTPheader& MCFTPheader::copy( const MCFheader& rhs )
00076 {
00077 _tag = rhs._tag;
00078 _id();
00079 _mcftpsizeb = rhs._mcfsizeb;
00080 _version = rhs._version;
00081 _revision = rhs._revision;
00082 _release = rhs._release;
00083 _author = rhs._author;
00084 _descript = rhs._descript;
00085 return *this;
00086 }
00087
00088 bool MCFTPheader::is_equal( const MCFTPheader& rhs )
00089 {
00090 if ( this != &rhs ) {
00091 if ( _tag != rhs._tag ) return false;
00092 if ( _id != rhs._id ) return false;
00093 if ( _mcftpsizeb != rhs._mcftpsizeb ) return false;
00094 if ( _version != rhs._version ) return false;
00095 if ( _revision != rhs._revision ) return false;
00096 if ( _release != rhs._release ) return false;
00097 if ( _author != rhs._author ) return false;
00098 if ( _descript != rhs._descript ) return false;
00099 }
00100 return true;
00101 }
00102
00103 void MCFTPheader::write( BufferBase& buffer )
00104 {
00105 bytepack bp;
00106 _tag = "";
00107 for( int i = 0; i < 8; ++i ) _tag += buffer.get();
00108 buffer >> _id;
00109 buffer >> bp( 0, 4 ); _mcftpsizeb = int(bp);
00110 buffer >> bp( 0, 1 ); _version = int(bp);
00111 buffer >> bp( 0, 1 ); _revision = int(bp);
00112 buffer >> bp( 0, 1 ); _release = int(bp);
00113 buffer >> bp( 0, 1 ); _author = int(bp);
00114 buffer >> bp( 0, 1 ); int descriptsize = int(bp);
00115 _descript = "";
00116 for( int i = 0; i < descriptsize; ++i ) _descript += buffer.get();
00117 }
00118
00119 void MCFTPheader::read( BufferBase& buffer )
00120 {
00121 bytepack bp;
00122 for( int i = 0; i < 8; ++i ) buffer.put( _tag[i] );
00123 buffer << _id;
00124 buffer << bp( _mcftpsizeb, 4 );
00125 buffer << bp( _version, 1 );
00126 buffer << bp( _revision, 1 );
00127 buffer << bp( _release, 1 );
00128 buffer << bp( _author, 1 );
00129 buffer << bp( int(_descript.size()), 1 );
00130 for(unsigned int i = 0; i < _descript.size(); ++i) buffer.put(_descript[i]);
00131 }
00132
00133 void MCFTPheader::write( istream& is )
00134 {
00135 bytepack bp;
00136 _tag = "";
00137 for( int i = 0; i < 8; ++i ) _tag += is.get();
00138 is >> _id;
00139 is >> bp( 0, 4 ); _mcftpsizeb = int(bp);
00140 is >> bp( 0, 1 ); _version = int(bp);
00141 is >> bp( 0, 1 ); _revision = int(bp);
00142 is >> bp( 0, 1 ); _release = int(bp);
00143 is >> bp( 0, 1 ); _author = int(bp);
00144 is >> bp( 0, 1 ); int descriptsize = int(bp);
00145 _descript = "";
00146 for( int i = 0; i < descriptsize; ++i ) _descript += is.get();
00147 }
00148
00149 void MCFTPheader::read( ostream& os )
00150 {
00151 bytepack bp;
00152 for( int i = 0; i < 8; ++i ) os.put( _tag[i] );
00153 os << _id;
00154 os << bp( _mcftpsizeb, 4 );
00155 os << bp( _version, 1 );
00156 os << bp( _revision, 1 );
00157 os << bp( _release, 1 );
00158 os << bp( _author, 1 );
00159 os << bp( int(_descript.size()), 1 );
00160 for(unsigned int i = 0; i < _descript.size(); ++i) os.put(_descript[i]);
00161 }
00162
00163 void MCFTPheader::report( ostream& os )
00164 {
00165 os << "MCFTPheader::report(){\n";
00166 os << "tag = |" << _tag << "|;\n";
00167 os << "id =\n";
00168 _id.report();
00169 os << "mcftpsizeb = " << _mcftpsizeb << '\n';
00170 os << "version = " << _version << '\n';
00171 os << "revision = " << _revision << '\n';
00172 os << "release = " << _release << '\n';
00173 os << "author = " << _author << '\n';
00174 os << "descript.size() = " << _descript.size() << '\n';
00175 os << "descript = |" << _descript << "|\n";
00176 os << "}\n";
00177 }
00178
00179
00180
00181 BufferBase& operator << ( BufferBase& buffer, MCFTPheader& header )
00182 {
00183 header.read(buffer);
00184 return buffer;
00185 }
00186
00187 BufferBase& operator >> ( BufferBase& buffer, MCFTPheader& header )
00188 {
00189 header.write(buffer);
00190 return buffer;
00191 }
00192
00193 ostream& operator << ( ostream& os, MCFTPheader& header )
00194 {
00195 header.read(os);
00196 return os;
00197 }
00198
00199 istream& operator >> ( istream& is, MCFTPheader& header )
00200 {
00201 header.write(is);
00202 return is;
00203 }
00204