//+--------------------------------------------------------------------------- // // Copyright (C) 1992, Microsoft Corporation. // // File: STREAMS.HXX // // Contents: // // Classes: CStream, CStreamA, CStreamW, CStreamASCIIStr, CStreamUnicodeStr // // History: 29-Jul-92 MikeHew Created // 23-Sep-92 AmyA Added CStreamUnicodeStr // Rewrote CStreamASCIIStr // 02-Nov-92 AmyA Added CSubStream // 20-Nov-92 AmyA Rewrote all streams for input/ // output buffering // // Notes: // //---------------------------------------------------------------------------- #pragma once #ifdef DISPLAY_INCLUDES #pragma message( "#include <" __FILE__ ">..." ) #endif #include // for BOOL typedef #include // for memcpy //+--------------------------------------------------------------------------- // // Class: CStream // // Purpose: General stream interface // // History: 29-Jul-92 MikeHew Created // 18-Nov-92 AmyA Removed GetChar(), now in CStreamA // and CStreamW // // Notes: // //---------------------------------------------------------------------------- class CStream { public: CStream () : _eof(FALSE) {} virtual ~CStream() {}; enum SEEK { SET = 0, // Seek from beginning of stream CUR = 1, // Seek from current position END = 2 // Seek from end }; // // Status functions // virtual BOOL Ok() = 0; inline BOOL Eof() { return _eof; } // // Input from stream functions // virtual unsigned APINOT Read( void *dest, unsigned size ) = 0; // // Output to stream functions // virtual unsigned APINOT Write( const void *source, unsigned size ) = 0; // // Misc // virtual int APINOT Seek( LONG offset, SEEK origin ) = 0; protected: BOOL _eof; };