class CPQDIF_StreamIO; class CPQDIF_StreamProcessor; enum PF_StreamIO; class CPQDIF_PC_FlatFile : public CPQDIF_PersistController { public: CPQDIF_PC_FlatFile(); ~CPQDIF_PC_FlatFile(); // Overridables public: virtual CPQDIFRecord * GetRecordFull( long index ); // Public interface public: void SetFileName( const char * fname ) { m_fname = fname; } const char * GetFileName( void ) { return m_fname.c_str(); } void SetChunkInput( BYTE * chunk, long size ); bool GetChunkOutputSize( long& size ); bool GetChunkOutput( BYTE * chunk, long size ); bool GetCanWriteIncremental( void ) { UpdateInformation(); // need to fix return false; //return m_pstream->CanWriteIncremental(); } int ReadHeaders( void ); bool ImportContainerAndRecordsFromChunk( BYTE * chunk, long size, bool &bCompressed ); bool ImportRecordsFromChunk( BYTE * chunk, long size, bool bCompressed ); bool WriteIncremental( void ); bool WriteNew( void ); bool WriteRecordsToFile( void ); long GetCompressionAlgorithm(); void SetCompressionAlgorithm( long algNew ); long GetCompressionStyle(); void SetCompressionStyle( long styleNew ); // Implementation protected: void UpdateInformation( void ); // Member data private: // Chunk (if NULL, assume physical file) BYTE * m_chunk; long m_sizeChunk; // Physical flat file path string m_fname; // Keep track of which stream type enum PF_StreamIO m_whichStream; CPQDIF_StreamIO * m_pstream; CPQDIF_StreamProcessor * m_pprocHeader; CPQDIF_StreamProcessor * m_pprocBody; };