Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

MCFsb.h

Go to the documentation of this file.
00001 // MCFsb.h
00002 //////////////////////////////////////////////////////////////////////
00003 //          (c) Copyright 2002 Brown Deer Technology, LLC.        
00004 //                        All rights reserved.              
00005 //////////////////////////////////////////////////////////////////////
00006 
00007 #ifndef MCFSBBASE_H
00008 #define MCFSBBASE_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 "MCFheader.h"
00021 #include "MRAsbBase.h"
00022 #include "MRAsb.h"
00023 
00024 class MCFsb
00025 {
00026    public:
00027 
00028       MCFsb();
00029 
00030       MCFsb( const MCFsb& rhs );
00031       
00032       ~MCFsb();
00033 
00034       MCFsb& operator () ( MCFheader&, MRAsbBase&, string& );
00035       MCFsb& operator () ( MCFheader&, MRAsbBase&, char* = "" );
00036 
00037       MCFsb& operator () ( const MCFsb& );
00038 
00039       MCFsb& copy( const MCFsb& rhs );
00040       MCFsb& operator = ( const MCFsb& rhs );
00041 
00042       void write( BufferBase& );
00043       MCFsb& operator << ( BufferBase& );
00044       void read( BufferBase& );
00045       MCFsb& operator >> ( BufferBase& );
00046 
00047       void write( istream& );
00048       MCFsb& operator << ( istream& );
00049       void read( ostream& );
00050       MCFsb& operator >> ( ostream& );
00051 
00052       void set_header( MCFheader& );
00053       void set_sb( MRAsbBase& );
00054       void set_postscript( string& );
00055       void set_postscript( char* );
00056 
00057       MCFheader* header();
00058       MRAsbBase* sb();
00059       string& postscript();
00060 
00061       int mcfsizeb();
00062 
00063    protected:
00064       
00065       MCFheader* _header;
00066       MRAsbBase* _sb;
00067       string _postscript;
00068 
00069    private:
00070 
00071    friend BufferBase& operator << ( BufferBase&, MCFsb& );
00072    friend BufferBase& operator >> ( BufferBase&, MCFsb& );
00073 
00074    friend ostream& operator<<( ostream&, MCFsb& );
00075    friend istream& operator>>( istream&, MCFsb& );
00076 
00077 };
00078 
00079 inline
00080 MCFsb::MCFsb() : _header( new MCFheader ), _sb( new MRAsb ), _postscript("") {}
00081 
00082 inline
00083 MCFsb::MCFsb( const MCFsb& rhs ) 
00084  : _header( new MCFheader ), _sb( new MRAsb ), _postscript(rhs._postscript)
00085 {
00086    _header = rhs._header;
00087    _sb = rhs._sb;
00088 }
00089 
00090 inline
00091 MCFsb::~MCFsb()
00092 {
00093    if ( _header != 0 ) { delete _header ; _header = 0; }
00094    if ( _sb != 0 ) { delete _sb ; _sb = 0; }
00095 }
00096 
00097 inline
00098 MCFsb& MCFsb::operator () ( 
00099   MCFheader& header, MRAsbBase& sb, string& postscript 
00100 )
00101 {
00102    set_header(header);
00103    set_sb(sb);
00104    set_postscript(postscript);
00105    return *this;
00106 }
00107 
00108 inline
00109 MCFsb& MCFsb::operator () (
00110   MCFheader& header, MRAsbBase& sb, char* postscript 
00111 )
00112 {
00113    set_header(header);
00114    set_sb(sb);
00115    set_postscript(postscript);
00116    return *this;
00117 }
00118 
00119 inline
00120 MCFsb& MCFsb::operator () ( const MCFsb& mcfsb ) { return *this = mcfsb; }
00121 
00122 inline
00123 MCFsb& MCFsb::copy( const MCFsb& rhs ) 
00124 {
00125    if ( this != &rhs ) {
00126       *_header = *(rhs._header);
00127       *_sb = *(rhs._sb);
00128       _postscript = rhs._postscript;
00129    }
00130    return *this;
00131 }
00132 
00133 inline
00134 MCFsb& MCFsb::operator = ( const MCFsb& rhs ) { return copy(rhs); }
00135 
00136 inline
00137 MCFsb& MCFsb::operator << ( BufferBase& buffer ) 
00138 {
00139    write(buffer);
00140    return *this;
00141 }
00142 
00143 inline
00144 MCFsb& MCFsb::operator >> ( BufferBase& buffer ) 
00145 {
00146    read(buffer);
00147    return *this;
00148 }
00149 
00150 inline
00151 MCFsb& MCFsb::operator << ( istream& is ) 
00152 {
00153    write(is);
00154    return *this;
00155 }
00156 
00157 inline
00158 MCFsb& MCFsb::operator >> ( ostream& os ) 
00159 {
00160    read(os);
00161    return *this;
00162 }
00163 
00164 inline
00165 void MCFsb::set_header( MCFheader& header ) { *_header = header; }
00166 
00167 inline
00168 void MCFsb::set_sb( MRAsbBase& sb ) { *_sb = sb; }
00169 
00170 inline
00171 void MCFsb::set_postscript( string& postscript ) { _postscript = postscript; }
00172 
00173 inline
00174 void MCFsb::set_postscript( char* postscript ) { _postscript = postscript; }
00175 
00176 inline
00177 MCFheader* MCFsb::header() { return _header; }
00178 
00179 inline
00180 MRAsbBase* MCFsb::sb() { return _sb; }
00181 
00182 inline
00183 string& MCFsb::postscript() { return _postscript; }
00184 
00185 inline
00186 int MCFsb::mcfsizeb() { return _header->sizeb() + _sb->sbsizeb() + 4; }
00187 
00188 #endif
00189 

Generated on Mon May 31 21:38:49 2004 for SR2k4 Assembler by doxygen 1.3.6