69 lines
1.9 KiB
C++
69 lines
1.9 KiB
C++
|
|
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;
|
|
};
|