131 lines
4.6 KiB
C++
Executable File
131 lines
4.6 KiB
C++
Executable File
/*
|
|
* CPMENGN.H
|
|
*
|
|
* Header file for ArchiveLib 1.0
|
|
*
|
|
* Copyright (c) 1994 Greenleaf Software, Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* This header file contains the class declaration for ALCompressionEngine,
|
|
* the base class used by all ArchiveLib compression engines.
|
|
*
|
|
* CLASS DEFINITIONS:
|
|
*
|
|
* ALCompressionEngine
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
*/
|
|
|
|
#ifndef _CMPENGN_H
|
|
#define _CMPENGN_H
|
|
|
|
#if defined( __cplusplus )
|
|
|
|
|
|
/*
|
|
* class ALOpenInputFile
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* This header file defines the ALCompressionEngine class. It is a base
|
|
* class with pure virtual functions, so it cannot be instantiated.
|
|
* The two derived classes supplied with Archive Library at this time are
|
|
* ALGreenleafEngine, which implements a Greenleaf proprietary compression
|
|
* engine, and ALCopyEngine, which just performs straight copying.
|
|
*
|
|
* ALCompressionEngine has two public virtual functions, Compress()
|
|
* and Decompress(), which are pure here. It also provides two
|
|
* virtual protected functions which are used to store configuration
|
|
* in the archive directory.
|
|
*
|
|
* DATA MEMBERS
|
|
*
|
|
* miCompressionType : The compression type integer is what gets stored
|
|
* in the archive directory, and what the archive
|
|
* class looks at when extracting so it can figure
|
|
* out what type of compression engine to construct
|
|
* for a specific type of object.
|
|
*
|
|
* mszCompressionType : This string just describes the compression type
|
|
* in ASCII format suitable for printing or display.
|
|
*
|
|
* mStatus : A standard ArchiveLib status object, stored
|
|
* with the compression engine. Check this after
|
|
* completing a compression or decompression to
|
|
* see how things went.
|
|
*
|
|
* MEMBER FUNCTIONS
|
|
*
|
|
* ALCompressionEngine() : The constructor. Only called by the ctors for
|
|
* derived classes.
|
|
* ~ALCompressionEngine() : The virtual destructor.
|
|
* operator new() : Memory allocation operator, only gets used
|
|
* when the library is in a DLL.
|
|
* WriteEngineData() : Private virtual function used to store engine
|
|
* specific data.
|
|
* ReadEngineData() : Private virtual function used to read back
|
|
* engine specific data.
|
|
* Compress() : The compression routine. Derived classes
|
|
* have to provide their own versions of this
|
|
* function. Wouldn't be much good without it.
|
|
* Decompress() : The inverse, has to know how to undo the
|
|
* Compress() output.
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
*/
|
|
|
|
class AL_CLASS_TYPE ALCompressionEngine {
|
|
/*
|
|
* Constructors, destructors, declarations, and friends
|
|
*/
|
|
friend class AL_CLASS_TYPE ALArchiveBase;
|
|
|
|
public :
|
|
AL_PROTO ALCompressionEngine( ALCompressionType compression_type_int,
|
|
const char AL_DLL_FAR *compression_type_string );
|
|
virtual AL_PROTO ~ALCompressionEngine();
|
|
#if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
|
|
void AL_DLL_FAR * AL_PROTO operator new( size_t size );
|
|
#endif
|
|
/*
|
|
* The copy constructor and assignment operator do not exist. I define
|
|
* them here to prevent the compiler from creating default versions.
|
|
*/
|
|
protected :
|
|
AL_PROTO ALCompressionEngine( ALCompressionEngine AL_DLL_FAR & );
|
|
ALCompressionEngine AL_DLL_FAR & AL_PROTO operator=( ALCompressionEngine AL_DLL_FAR & rhs );
|
|
/*
|
|
* Member functions
|
|
*/
|
|
protected :
|
|
virtual int AL_PROTO WriteEngineData( ALStorage AL_DLL_FAR * archive );
|
|
virtual int AL_PROTO ReadEngineData( ALStorage AL_DLL_FAR * archive );
|
|
|
|
public :
|
|
virtual int AL_PROTO Compress( ALStorage AL_DLL_FAR &input_object,
|
|
ALStorage AL_DLL_FAR &output_object ) = 0;
|
|
virtual int AL_PROTO Decompress( ALStorage AL_DLL_FAR &input_object,
|
|
ALStorage AL_DLL_FAR &output_object,
|
|
long compressed_length = -1 ) = 0;
|
|
/*
|
|
* Data members
|
|
*/
|
|
public :
|
|
const ALCompressionType miCompressionType;
|
|
const char AL_DLL_FAR *mszCompressionType;
|
|
ALStatus mStatus;
|
|
AL_CLASS_TAG( _ALCompressionEngineTag );
|
|
};
|
|
|
|
#endif /* #if defined( __cplusplus ) */
|
|
|
|
#endif /* #ifndef _CMPENGN_H */
|