216 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			216 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| /*
 | |
|  * TOOLKIT.H
 | |
|  *
 | |
|  *  Header file for ArchiveLib 2.0
 | |
|  *
 | |
|  *  Copyright (c) 1994-1996 Greenleaf Software, Inc.
 | |
|  *  All Rights Reserved
 | |
|  *
 | |
|  * DESCRIPTION
 | |
|  *
 | |
|  *  This file contains the class declaration for ALToolKit,
 | |
|  *  the class used to hold toolkits.  ALToolKit is used by
 | |
|  *  ALEntryList to build new storage objects and compression engines.
 | |
|  *
 | |
|  * CLASS DEFINITIONS:
 | |
|  *
 | |
|  *  ALToolKit
 | |
|  *
 | |
|  * REVISION HISTORY
 | |
|  *
 | |
|  *  February 14, 1996  2.0A : New release
 | |
|  */
 | |
| 
 | |
| #if !defined( _TOOLKIT_H )
 | |
| #define _TOOLKIT_H
 | |
| 
 | |
| #if defined( __cplusplus )
 | |
| 
 | |
| /*
 | |
|  * class ALToolKit
 | |
|  *
 | |
|  * DESCRIPTION
 | |
|  *
 | |
|  * A toolkit is simply a loose collection of storage objects and
 | |
|  * compression engines.  Every ALEntryList gets a toolkit.  When
 | |
|  * an archive function is called to extract objects, it has to
 | |
|  * go to the toolkit to try to create new storage objects and
 | |
|  * engines.  This is done by calling the Clone() function for all
 | |
|  * of the objects in the toolkit bag.  So, if you want to extract
 | |
|  * from an PKZip archive into ALMyFile objects instead of ALFile
 | |
|  * objects, create a toolkit that has ALMyFile in it, with the
 | |
|  * appropriate Clone() function.
 | |
|  *
 | |
|  * In order to make a toolkit easy to use, you can employ
 | |
|  * the addition operator to add a compressor, decompressor, or
 | |
|  * storage object to a toolkit.  This increases its bag-like
 | |
|  * qualities.
 | |
|  *
 | |
|  * DATA MEMBERS
 | |
|  *
 | |
|  *  mpCompressors    : An array of all the compression objects the
 | |
|  *                     toolkit contains.  When the CreateCompressor()
 | |
|  *                     routine is called, it iterates through this list
 | |
|  *                     calling Clone() until it finds a hit.  This list
 | |
|  *                     is terminated with a null pointer.
 | |
|  *
 | |
|  *  mpDecompressors : A list of decompression objects.  See the above
 | |
|  *                    description.
 | |
|  *
 | |
|  *  mpStorages      : A list of storage objects.  See the above description.
 | |
|  *
 | |
|  * MEMBER FUNCTIONS
 | |
|  *
 | |
|  *  ALToolKit()          : The toolkit class has five constructors.
 | |
|  *                         It has a default constructor, a copy
 | |
|  *                         constructor, and a constructor that uses
 | |
|  *                         storage objects, compressors, or decompressors.
 | |
|  *
 | |
|  *  ~ToolKit()           : Destructor.
 | |
|  *
 | |
|  *  operator new()       : Memory allocation function, used when the
 | |
|  *                         library is in a DLL.
 | |
|  *
 | |
|  *  operator=()          : The toolkit assignment operator.
 | |
|  *
 | |
|  *  operator+()          :  Three operators, one for each of the object
 | |
|  *                          types that can be added to a toolkit.
 | |
|  *
 | |
|  *  CreateCompressor()   :  The function that is called to create a new
 | |
|  *                          compressor.
 | |
|  *
 | |
|  *  CreateDecompressor() :  See above.
 | |
|  *
 | |
|  *  CreateStorageObject() : See above.
 | |
|  *
 | |
|  * REVISION HISTORY
 | |
|  *
 | |
|  *  February 14, 1996  2.0A : New release
 | |
|  *
 | |
|  */
 | |
| 
 | |
| class AL_CLASS_TYPE ALToolKit {  /* Tag public class */
 | |
|     public :
 | |
|         AL_PROTO ALToolKit();
 | |
|         AL_PROTO ALToolKit( const ALCompressor AL_DLL_FAR & );
 | |
|         AL_PROTO ALToolKit( const ALDecompressor AL_DLL_FAR & );
 | |
|         AL_PROTO ALToolKit( const ALStorage AL_DLL_FAR & );
 | |
|         AL_PROTO ALToolKit( const ALToolKit AL_DLL_FAR & );
 | |
|         AL_PROTO ~ALToolKit();
 | |
| #if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
 | |
|         void AL_DLL_FAR * AL_PROTO operator new( size_t size );
 | |
| #endif
 | |
|     protected :
 | |
|         AL_PROTO operator=( ALEntry AL_DLL_FAR & );
 | |
| 
 | |
|     protected :
 | |
|         ALCompressor AL_DLL_FAR * AL_DLL_FAR *mpCompressors;
 | |
|         ALDecompressor AL_DLL_FAR * AL_DLL_FAR *mpDecompressors;
 | |
|         ALStorage AL_DLL_FAR * AL_DLL_FAR *mpStorages;
 | |
|     public :
 | |
|         ALToolKit AL_DLL_FAR & AL_PROTO operator+( const ALCompressor AL_DLL_FAR &);
 | |
|         ALToolKit AL_DLL_FAR & AL_PROTO operator+( const ALDecompressor AL_DLL_FAR &);
 | |
|         ALToolKit AL_DLL_FAR & AL_PROTO operator+( const ALStorage AL_DLL_FAR &);
 | |
|         ALCompressor AL_DLL_FAR * AL_PROTO CreateCompressor( int engine_type );
 | |
|         ALDecompressor AL_DLL_FAR * AL_PROTO CreateDecompressor( int engine_type );
 | |
|         ALStorage AL_DLL_FAR * AL_PROTO CreateStorageObject( const char AL_DLL_FAR *name, int storage_type );
 | |
| 
 | |
|         AL_CLASS_TAG( _ALToolKitTag );
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * These standalone operators are here to make the toolkit even
 | |
|  * easier to use.
 | |
|  */
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION operator+( const ALCompressor AL_DLL_FAR &, const ALCompressor AL_DLL_FAR & );
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION operator+( const ALCompressor AL_DLL_FAR &, const ALDecompressor AL_DLL_FAR &);
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION operator+( const ALCompressor AL_DLL_FAR &, const ALStorage AL_DLL_FAR &);
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION operator+( const ALDecompressor AL_DLL_FAR &, const ALCompressor AL_DLL_FAR &);
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION operator+( const ALDecompressor AL_DLL_FAR &, const ALDecompressor AL_DLL_FAR &);
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION operator+( const ALDecompressor AL_DLL_FAR &, const ALStorage AL_DLL_FAR &);
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION operator+( const ALStorage AL_DLL_FAR &, const ALCompressor AL_DLL_FAR &);
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION operator+( const ALStorage AL_DLL_FAR &, const ALDecompressor AL_DLL_FAR &);
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION operator+( const ALStorage AL_DLL_FAR &, const ALStorage AL_DLL_FAR &);
 | |
| 
 | |
| #if defined( AL_FLAT_MODEL ) || defined( AL_WINDOWS )
 | |
| #define AL_PK_DEFAULT_WINDOW_BITS 15
 | |
| #define AL_PK_DEFAULT_MEM_LEVEL 8
 | |
| #define AL_GL_DEFAULT_LEVEL AL_GREENLEAF_LEVEL_4
 | |
| #else
 | |
| #define AL_PK_DEFAULT_WINDOW_BITS 13
 | |
| #define AL_PK_DEFAULT_MEM_LEVEL 6
 | |
| #define AL_GL_DEFAULT_LEVEL AL_GREENLEAF_LEVEL_2
 | |
| #endif
 | |
| 
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION FullTools();
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION
 | |
|     PkTools( int level = 6,
 | |
|              int window_bits = AL_PK_DEFAULT_WINDOW_BITS,
 | |
|              int mem_level = AL_PK_DEFAULT_MEM_LEVEL );
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION
 | |
|     PkCompressTools( int level = 6,
 | |
|                      int window_bits = AL_PK_DEFAULT_WINDOW_BITS,
 | |
|                      int mem_level = AL_PK_DEFAULT_MEM_LEVEL );
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION PkDecompressTools();
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION
 | |
|     PkCompressFileTools( int level = 6,
 | |
|                          int window_bits = AL_PK_DEFAULT_WINDOW_BITS,
 | |
|                          int mem_level = AL_PK_DEFAULT_MEM_LEVEL );
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION PkDecompressFileTools();
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION
 | |
|     GlTools( short int compresssion_level = AL_GL_DEFAULT_LEVEL );
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION
 | |
|     GlCompressTools( short int compression_level = AL_GL_DEFAULT_LEVEL );
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION
 | |
|     GlDecompressTools();
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION
 | |
|     GlCompressFileTools( short int compression_level = AL_GL_DEFAULT_LEVEL );
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION
 | |
|     GlDecompressFileTools();
 | |
| AL_LINKAGE ALToolKit AL_FUNCTION
 | |
|     CopyTools();
 | |
| 
 | |
| #else /* #if defined( __cplusplus ) ... */
 | |
| 
 | |
| AL_LINKAGE void AL_FUNCTION deleteALToolKit( hALToolKit this_object );
 | |
| 
 | |
| /*
 | |
|  * C shortcuts for building entry lists with a given toolkit.
 | |
|  */
 | |
| 
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION newALListFullTools( hALMonitor monitor );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListPkTools( hALMonitor monitor,
 | |
|                   int level,
 | |
|                   int window_bits,
 | |
|                   int mem_level );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListPkCompressTools( hALMonitor monitor,
 | |
|                           int level,
 | |
|                           int window_bits,
 | |
|                           int mem_level );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListPkCompressFileTools( hALMonitor monitor,
 | |
|                               int level,
 | |
|                               int window_bits,
 | |
|                               int mem_level );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListPkDecompressTools( hALMonitor monitor );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListPkDecompressFileTools( hALMonitor monitor );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListGlTools( hALMonitor monitor, short int_compression_level );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListGlCompressTools( hALMonitor monitor, short int_compression_level );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListGlCompressFileTools( hALMonitor monitor, short int_compression_level );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListGlDecompressTools( hALMonitor monitor );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListGlDecompressFileTools( hALMonitor monitor );
 | |
| AL_LINKAGE hALEntryList AL_FUNCTION
 | |
| newALListCopyTools( hALMonitor monitor );
 | |
| 
 | |
| #endif
 | |
| #endif /* #if !defined( _TOOLKIT_H ) */
 |