126 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| /*
 | |
|  * GRENENGH.H
 | |
|  *
 | |
|  *  Header file for ArchiveLib 1.0
 | |
|  *
 | |
|  *  Copyright (c) 1994 Greenleaf Software, Inc.
 | |
|  *  All Rights Reserved
 | |
|  *
 | |
|  * DESCRIPTION
 | |
|  *
 | |
|  *  This file contains the class declaration for ALGreenleafEngine.
 | |
|  * 
 | |
|  * CLASS DEFINITIONS:
 | |
|  *
 | |
|  *  ALGreenleafEngine
 | |
|  *
 | |
|  * REVISION HISTORY
 | |
|  *
 | |
|  *  May 26, 1994  1.0A  : First release
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef _GRENENGN_H
 | |
| #define _GRENENGN_H
 | |
| 
 | |
| #include "arclib.h"
 | |
| 
 | |
| #if defined( __cplusplus )
 | |
| 
 | |
| 
 | |
| #include "cmpengn.h"
 | |
| 
 | |
| /*
 | |
|  * class ALGreenleafEngine : public ALCompressionEngine 
 | |
|  *
 | |
|  * DESCRIPTION
 | |
|  *
 | |
|  * ALGreenleaf Engine is the Greenleaf proprietary compression
 | |
|  * engine.  Compression engines are simple, so there aren't 
 | |
|  * too many functions.  This class has two data members that
 | |
|  * are initialized in the constructor.  One of them, the compression level, 
 | |
|  * has to be saved with the data in order for decompression to work
 | |
|  * properly.  It is saved and read with the virtual functions
 | |
|  * ReadEngineData() and WriteEngineData(), using a single short
 | |
|  * in the archive directory.
 | |
|  *
 | |
|  * DATA MEMBERS
 | |
|  *
 | |
|  *  miCompressionLevel    : This is the compression level that the
 | |
|  *                          compressor will attempt to use, selected
 | |
|  *                          from one of the five settings found in
 | |
|  *                          the enumerated type in ALDEFS.H.  If the
 | |
|  *                          file is incompressible and the engine
 | |
|  *                          performs a straight binary copy this value
 | |
|  *                          changes to AL_GREENLEAF_COPY.
 | |
|  *
 | |
|  *  miFailUncompressible  : This data member is used to flag the
 | |
|  *                          action the compressor takes if a file
 | |
|  *                          turns out to be incompressible.  If this
 | |
|  *                          member is set, the engine will stop compressing,
 | |
|  *                          seek back to the start of the file, and
 | |
|  *                          just copy the data.  If this member is clear,
 | |
|  *                          we don't ever check to see if the file is
 | |
|  *                          compressing properly.
 | |
|  *
 | |
|  * MEMBER FUNCTIONS
 | |
|  *
 | |
|  *  ALGreenleafEngine()     : The constructor.
 | |
|  *  ~ALGreenleafEngine()    : The virtual destructor.
 | |
|  *  operator new()          : The memory allocation operator, which is
 | |
|  *                            only used when the library is in a DLL.
 | |
|  *  WriteEngineData()       : The virtual function that writes private
 | |
|  *                            configuration data.  For this class, this
 | |
|  *                            function writes out a single short int 
 | |
|  *                            containing the compression level.
 | |
|  *  ReadEngineData()        : The complement for the above function, used
 | |
|  *                            during extraction.
 | |
|  *  Compress()              : The routine that actually performs the
 | |
|  *                            compression.
 | |
|  *  Decompress()            : The routine that actually performs the
 | |
|  *                            decompression.
 | |
|  *
 | |
|  * REVISION HISTORY
 | |
|  *
 | |
|  *  May 26, 1994  1.0A  : First release
 | |
|  *
 | |
|  */
 | |
| 
 | |
| class AL_CLASS_TYPE ALGreenleafEngine : public ALCompressionEngine {
 | |
| /*
 | |
|  * Declarations, friends, constructors, destructors
 | |
|  */
 | |
|     public :
 | |
|         AL_PROTO ALGreenleafEngine( short int compression_level = AL_GREENLEAF_LEVEL_2,
 | |
|                                     short int fail_uncompressible = 0 );
 | |
|         virtual AL_PROTO ~ALGreenleafEngine();
 | |
| #if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
 | |
|         void AL_DLL_FAR * AL_PROTO operator new( size_t size );
 | |
| #endif
 | |
| /*
 | |
|  * 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,
 | |
|                                        ALStorage AL_DLL_FAR &output );
 | |
|         virtual int AL_PROTO Decompress( ALStorage AL_DLL_FAR &input,
 | |
|                                          ALStorage AL_DLL_FAR &output,
 | |
|                                          long compressed_length = -1 );
 | |
| /*
 | |
|  * Data members
 | |
|  */
 | |
|     protected :
 | |
|         short int miCompressionLevel;
 | |
|         short int miFailUncompressible;
 | |
|     public :
 | |
|         AL_CLASS_TAG( _ALGreenleafEngineTag );
 | |
| };
 | |
| 
 | |
| #endif /* #ifdef __cplusplus */
 | |
| 
 | |
| #endif /* #ifdef _GRENENGN_H */
 |