00001
00002
00003
00004
00005
00006
00007 #ifndef MCFTPHEADER_H
00008 #define MCFTPHEADER_H
00009
00010 #ifdef USE_STD
00011 #include <iostream>
00012 #include <string>
00013 using namespace std;
00014 #else
00015 #include <iostream.h>
00016 #include <string.h>
00017 #endif
00018
00019 #include "BufferBase.h"
00020 #include "MCFTPid.h"
00021
00022 class MCFheader;
00023
00024 class MCFTPheader
00025 {
00026 public:
00027
00028 MCFTPheader();
00029 MCFTPheader( const MCFheader& );
00030 MCFTPheader( const MCFTPheader& rhs );
00031
00032 MCFTPheader& operator () ();
00033 MCFTPheader& operator () ( const MCFheader& );
00034 MCFTPheader& operator () ( const MCFTPheader& );
00035
00036 MCFTPheader& copy( const MCFTPheader& rhs );
00037 MCFTPheader& copy( const MCFheader& rhs );
00038 MCFTPheader& operator = ( const MCFTPheader& rhs );
00039 MCFTPheader& operator = ( const MCFheader& rhs );
00040
00041 bool is_equal( const MCFTPheader& rhs );
00042 bool operator == ( const MCFTPheader& rhs );
00043 bool operator != ( const MCFTPheader& rhs );
00044
00045 void write( BufferBase& );
00046 MCFTPheader& operator << ( BufferBase& );
00047 void read( BufferBase& );
00048 MCFTPheader& operator >> ( BufferBase& );
00049
00050 void write( istream& );
00051 MCFTPheader& operator << ( istream& );
00052 void read( ostream& );
00053 MCFTPheader& operator >> ( ostream& );
00054
00055 void set_tag( string& tag );
00056 void set_tag( char* tag );
00057 void set_id( MCFTPid );
00058 void set_mcftpsizeb( int mcfsizeb );
00059 void set_version( int version );
00060 void set_revision( int revision );
00061 void set_release( int release );
00062 void set_author( int author );
00063 void set_descript( string& descript );
00064 void set_descript( char* descript );
00065
00066 string& tag();
00067 MCFTPid id();
00068 int mcftpsizeb();
00069 int version();
00070 int revision();
00071 int release();
00072 int author();
00073
00074 string& descript();
00075
00076 int sizeb();
00077
00078 void report( ostream& = cout );
00079
00080 protected:
00081 string _tag;
00082 MCFTPid _id;
00083 int _mcftpsizeb;
00084 int _version;
00085 int _revision;
00086 int _release;
00087 int _author;
00088 string _descript;
00089
00090 friend class MCFheader;
00091
00092 friend BufferBase& operator >> ( BufferBase&, MCFTPheader& );
00093 friend BufferBase& operator << ( BufferBase&, MCFTPheader& );
00094
00095 friend istream& operator >> ( istream&, MCFTPheader& );
00096 friend ostream& operator << ( ostream&, MCFTPheader& );
00097
00098 };
00099
00100 #include "MCFheader.h"
00101
00102 inline
00103 MCFTPheader::MCFTPheader()
00104 : _tag("MCFTP___"), _mcftpsizeb(-1),
00105 _version(0), _revision(2), _release(0),
00106 _author(0), _descript("")
00107 {}
00108
00109 inline
00110 MCFTPheader::MCFTPheader( const MCFheader& rhs )
00111 : _tag(rhs._tag), _mcftpsizeb(rhs._mcfsizeb),
00112 _version(rhs._version), _revision(rhs._revision), _release(rhs._release),
00113 _author(rhs._author), _descript(rhs._descript)
00114 {}
00115
00116 inline
00117 MCFTPheader::MCFTPheader( const MCFTPheader& rhs )
00118 : _tag(rhs._tag), _id(rhs._id), _mcftpsizeb(rhs._mcftpsizeb),
00119 _version(rhs._version), _revision(rhs._revision), _release(rhs._release),
00120 _author(rhs._author), _descript(rhs._descript)
00121 {}
00122
00123 inline
00124 MCFTPheader& MCFTPheader::operator = ( const MCFTPheader& rhs )
00125 {
00126 return copy(rhs);
00127 }
00128
00129 inline
00130 MCFTPheader& MCFTPheader::operator = ( const MCFheader& rhs )
00131 {
00132 return copy(rhs);
00133 }
00134
00135 inline
00136 bool MCFTPheader::operator == ( const MCFTPheader& rhs )
00137 {
00138 return is_equal(rhs);
00139 }
00140
00141 inline
00142 bool MCFTPheader::operator != ( const MCFTPheader& rhs )
00143 {
00144 return !is_equal(rhs);
00145 }
00146
00147 inline
00148 MCFTPheader& MCFTPheader::operator << ( BufferBase& buffer )
00149 {
00150 write(buffer);
00151 return *this;
00152 }
00153
00154 inline
00155 MCFTPheader& MCFTPheader::operator >> ( BufferBase& buffer )
00156 {
00157 read(buffer);
00158 return *this;
00159 }
00160
00161 inline
00162 MCFTPheader& MCFTPheader::operator << ( istream& is )
00163 {
00164 write(is);
00165 return *this;
00166 }
00167
00168 inline
00169 MCFTPheader& MCFTPheader::operator >> ( ostream& os )
00170 {
00171 read(os);
00172 return *this;
00173 }
00174
00175 inline
00176 void MCFTPheader::set_tag( string& tag ) { _tag = tag; }
00177
00178 inline
00179 void MCFTPheader::set_tag( char* tag ) { _tag = tag; }
00180
00181 inline
00182 void MCFTPheader::set_id( MCFTPid id ) { _id = id; }
00183
00184 inline
00185 void MCFTPheader::set_mcftpsizeb( int mcftpsizeb ) { _mcftpsizeb = mcftpsizeb; }
00186
00187 inline
00188 void MCFTPheader::set_version( int version ) { _version = version; }
00189
00190 inline
00191 void MCFTPheader::set_revision( int revision ) { _revision = revision; }
00192
00193 inline
00194 void MCFTPheader::set_release( int release ) { _release = release; }
00195
00196 inline
00197 void MCFTPheader::set_author( int author ) { _author = author; }
00198
00199 inline
00200 void MCFTPheader::set_descript( string& descript ) { _descript = descript; }
00201
00202 inline
00203 void MCFTPheader::set_descript( char* descript ) { _descript = descript; }
00204
00205 inline
00206 string& MCFTPheader::tag() { return _tag; }
00207
00208 inline
00209 MCFTPid MCFTPheader::id() { return _id; }
00210
00211 inline
00212 int MCFTPheader::mcftpsizeb() { return _mcftpsizeb; }
00213
00214 inline
00215 int MCFTPheader::version() { return _version; }
00216
00217 inline
00218 int MCFTPheader::revision() { return _revision; }
00219
00220 inline
00221 int MCFTPheader::release() { return _release; }
00222
00223 inline
00224 int MCFTPheader::author() { return _author; }
00225
00226
00227
00228
00229 inline
00230 string& MCFTPheader::descript() { return _descript; }
00231
00232 inline
00233 int MCFTPheader::sizeb() { return 33 + _descript.size(); }
00234
00235 #endif
00236