/* * 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 */