00001 // MCFsb.cpp 00002 ////////////////////////////////////////////////////////////////////// 00003 // (c) Copyright 2002 Brown Deer Technology, LLC. 00004 // All rights reserved. 00005 ////////////////////////////////////////////////////////////////////// 00006 00007 #ifdef USE_STD 00008 #include <iostream> 00009 #include <algorithm> 00010 using namespace std; 00011 #else 00012 #include <iostream.h> 00013 #include <algorithm.h> 00014 #endif 00015 00016 #include "utility.h" 00017 #include "BufferBase.h" 00018 00019 #include "MCFsb.h" 00020 00021 void MCFsb::write( BufferBase& buffer ) 00022 { 00023 int tmp; 00024 bytepack bp; 00025 buffer >> (*_header); 00026 buffer >> (*_sb); 00027 buffer >> bp( tmp, 4 ); 00028 if ( _header->mcfsizeb() == 0 ) _header->set_mcfsizeb(tmp); 00029 _postscript = ""; 00030 while ( !buffer.eob() ) _postscript += buffer.get(); 00031 } 00032 00033 void MCFsb::read( BufferBase& buffer ) 00034 { 00035 bytepack bp; 00036 _header->set_mcfsizeb( mcfsizeb() ); 00037 buffer << (*_header); 00038 buffer << (*_sb); 00039 buffer << bp( mcfsizeb(), 4 ); 00040 for(unsigned int i = 0; i < _postscript.size(); ++i) { 00041 buffer.put(_postscript[i]); 00042 } 00043 } 00044 00045 void MCFsb::write( istream& is ) 00046 { 00047 char c; 00048 int tmp; 00049 bytepack bp; 00050 is >> (*_header); 00051 is >> (*_sb); 00052 is >> bp( tmp, 4 ); 00053 if ( _header->mcfsizeb() == 0 ) _header->set_mcfsizeb(tmp); 00054 _postscript = ""; 00055 while ( is.get(c) ) _postscript += c; 00056 } 00057 00058 void MCFsb::read( ostream& os ) 00059 { 00060 bytepack bp; 00061 _header->set_mcfsizeb( mcfsizeb() ); 00062 os << (*_header); 00063 os << (*_sb); 00064 os << bp( mcfsizeb(), 4 ); 00065 for(unsigned int i = 0; i < _postscript.size(); ++i) os.put(_postscript[i]); 00066 } 00067 00068 // ##### friends ##### 00069 00070 BufferBase& operator << ( BufferBase& buffer, MCFsb& mcfsb ) 00071 { 00072 mcfsb.read(buffer); 00073 return buffer; 00074 } 00075 00076 BufferBase& operator>>( BufferBase& buffer, MCFsb& mcfsb ) 00077 { 00078 mcfsb.write(buffer); 00079 return buffer; 00080 } 00081 00082 ostream& operator << ( ostream& os, MCFsb& mcfsb ) 00083 { 00084 mcfsb.read(os); 00085 return os; 00086 } 00087 00088 istream& operator>>( istream& is, MCFsb& mcfsb ) 00089 { 00090 mcfsb.write(is); 00091 return is; 00092 } 00093
1.3.6