226 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			226 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
//
 | 
						|
// PKCF.CPP
 | 
						|
//
 | 
						|
//  Source file for ArchiveLib 2.0
 | 
						|
//
 | 
						|
//  Copyright (c) Greenleaf Software, Inc. 1994-1996
 | 
						|
//  All Rights Reserved
 | 
						|
//
 | 
						|
// CONTENTS
 | 
						|
//
 | 
						|
//  PkCompressFileTools()
 | 
						|
//  newALListPkCompressFileTools()
 | 
						|
//
 | 
						|
// DESCRIPTION
 | 
						|
//
 | 
						|
//  The functions needed to create Entry Lists that use
 | 
						|
//  the PkWare compressor and ALFile objects.
 | 
						|
//
 | 
						|
// REVISION HISTORY
 | 
						|
//
 | 
						|
//   February 14, 1996  2.0A : New release
 | 
						|
//
 | 
						|
 | 
						|
#include "arclib.h"
 | 
						|
#if !defined( AL_IBM )
 | 
						|
#pragma hdrstop
 | 
						|
#endif
 | 
						|
 | 
						|
#include "pkengn.h"
 | 
						|
#include "copyengn.h"
 | 
						|
#include "filestor.h"
 | 
						|
 | 
						|
//
 | 
						|
// NAME
 | 
						|
//
 | 
						|
//  PkCompressFileTools()
 | 
						|
//
 | 
						|
// PLATFORMS/ENVIRONMENTS
 | 
						|
//
 | 
						|
//  Console  Windows  PM
 | 
						|
//  C++
 | 
						|
//
 | 
						|
// SHORT DESCRIPTION
 | 
						|
//
 | 
						|
//  Create a toolkit that supports PKWare compressors.
 | 
						|
//
 | 
						|
// C++ SYNOPSIS
 | 
						|
//
 | 
						|
//  #include "arclib.h"
 | 
						|
//
 | 
						|
//  ALToolKit PkCompressFileTools( int level = 6,
 | 
						|
//                                 int window_bits = 13 /* or 15 */,
 | 
						|
//                                 int mem_level = 6 /* or 8 */ );
 | 
						|
//
 | 
						|
// C SYNOPSIS
 | 
						|
//
 | 
						|
//  None, C programmers should use the shortcut helper function
 | 
						|
//  newALListPkCompressFileTools() to create an entry list with this toolkit.
 | 
						|
//
 | 
						|
// VB SYNOPSIS
 | 
						|
//
 | 
						|
//  None, VB programmers should use the shortcut helper function
 | 
						|
//  newALListPkCompressFileTools() to create an entry list with this toolkit.
 | 
						|
//
 | 
						|
// DELPHI SYNOPSIS
 | 
						|
//
 | 
						|
//  None, Delphi programmers should use the shortcut helper function
 | 
						|
//  newALListPkCompressFileTools() to create an entry list with this toolkit.
 | 
						|
//
 | 
						|
// ARGUMENTS
 | 
						|
//
 | 
						|
//  level        A number between 1 and 9.  1 gives the best speed, 9 gives
 | 
						|
//                the best compression.
 | 
						|
//
 | 
						|
//  window_bits  The base 2 logarithm of the number of bytes in the history
 | 
						|
//                buffer.  Values between 8 and 15 are legal.  More bits,
 | 
						|
//                more memory.
 | 
						|
//
 | 
						|
//  mem_level    How much memory should be allocated for the internal
 | 
						|
//                compression state. memLevel=1 uses minimum memory but
 | 
						|
//                is slow and reduces compression ratio; memLevel=9 uses
 | 
						|
//                maximum memory for optimal speed. (quoted from zlib.h)
 | 
						|
//
 | 
						|
// DESCRIPTION
 | 
						|
//
 | 
						|
//  An ALToolKit is a factory that things in the ALArchive class can use
 | 
						|
//  to clone new objects.  PkCompressFileTools() creates a toolkit that can
 | 
						|
//  build PKWare compressors.  If your app is only going to be compressing
 | 
						|
//  ALFiles using PKWare, you can use this function to initialize your
 | 
						|
//  your ALEntryList, and avoid linking in support for  PKWare expanders,
 | 
						|
//  GL compressors, GL expanders, and ALMemory objects.
 | 
						|
//
 | 
						|
// RETURNS
 | 
						|
//
 | 
						|
//  A new toolkit.
 | 
						|
//
 | 
						|
// EXAMPLE
 | 
						|
//
 | 
						|
// SEE ALSO
 | 
						|
//
 | 
						|
// REVISION HISTORY
 | 
						|
//
 | 
						|
//   February 14, 1996  2.0A : New Release
 | 
						|
//
 | 
						|
 | 
						|
AL_LINKAGE ALToolKit AL_FUNCTION
 | 
						|
PkCompressFileTools( int level /* = 6 */,  /* Tag public function */
 | 
						|
                     int window_bits /* = 13 or 15 */,
 | 
						|
                     int mem_level /* = 6 or 8 */ )
 | 
						|
{
 | 
						|
    return ALPkCompressor( level, window_bits, mem_level ) +
 | 
						|
           ALCopyCompressor() +
 | 
						|
           ALFile();
 | 
						|
}
 | 
						|
 | 
						|
//
 | 
						|
// NAME
 | 
						|
//
 | 
						|
//  newALListPkCompressFileTools()
 | 
						|
//
 | 
						|
// PLATFORMS/ENVIRONMENTS
 | 
						|
//
 | 
						|
//  Console  Windows  PM
 | 
						|
//  C  VB  Delphi
 | 
						|
//
 | 
						|
// SHORT DESCRIPTION
 | 
						|
//
 | 
						|
//  Create an entry list that uses the PKWare and ALFile toolkit.
 | 
						|
//
 | 
						|
// C++ SYNOPSIS
 | 
						|
//
 | 
						|
//  None.  C++ programmers can create and manipulate toolkits easily.
 | 
						|
//  This isn't the case for C/VB/Delphi programmers, so we give them
 | 
						|
//  this special function.
 | 
						|
//
 | 
						|
// C SYNOPSIS
 | 
						|
//
 | 
						|
//  #include "arclib.h"
 | 
						|
//
 | 
						|
//  hALEntryList newALListPkCompressFileTools( hALMonitor monitor,
 | 
						|
//                                             int level,
 | 
						|
//                                             int window_bits,
 | 
						|
//                                             int mem_level );
 | 
						|
//
 | 
						|
// VB SYNOPSIS
 | 
						|
//
 | 
						|
//  Declare Function newALListPkCompressFileTools Lib "AL20LW"
 | 
						|
//    (ByVal monitor&, ByVal level%, ByVal window_bits%, ByVal mem_level%) As Long
 | 
						|
//
 | 
						|
// DELPHI SYNOPSIS
 | 
						|
//
 | 
						|
//  function newALListPkCompressFileTools( monitor  hALMonitor;
 | 
						|
//                                         level  Integer;
 | 
						|
//                                         window_bits  Integer;
 | 
						|
//                                         mem_level  Integer )  hALEntryList;
 | 
						|
//
 | 
						|
// ARGUMENTS
 | 
						|
//
 | 
						|
//  monitor  A pointer to a monitor that will be used whenever we are
 | 
						|
//            processing objects in the list.
 | 
						|
//
 | 
						|
//  level        A number between 1 and 9.  1 gives the best speed, 9 gives
 | 
						|
//                the best compression.
 | 
						|
//
 | 
						|
//  window_bits  The base 2 logarithm of the number of bytes in the history
 | 
						|
//                buffer.  Values between 8 and 15 are legal.  More bits,
 | 
						|
//                more memory.
 | 
						|
//
 | 
						|
//  mem_level    How much memory should be allocated for the internal
 | 
						|
//                compression state. memLevel=1 uses minimum memory but
 | 
						|
//                is slow and reduces compression ratio; memLevel=9 uses
 | 
						|
//                maximum memory for optimal speed. (quoted from zlib.h)
 | 
						|
//
 | 
						|
//  Note that you can use the C++ default parameter values by simply passing
 | 
						|
//  AL_DEFAULT for any of the three numeric parameters shown above.
 | 
						|
//
 | 
						|
// DESCRIPTION
 | 
						|
//
 | 
						|
// C++ programmers pass a toolkit argument to the ALEntryList constructor,
 | 
						|
// which determines what sort of compressors and storage objects they are
 | 
						|
// expecting to use.  C/VB/Delphi programmers can do the same thing as well,
 | 
						|
// but it's a little bit harder for them.  They have to manually create
 | 
						|
// a toolkit, get its handle, then pass that handle to the constructor.
 | 
						|
// After that, they need to destroy the toolkit.
 | 
						|
//
 | 
						|
// As a shortcut way to bypass all that work, we provide this function that
 | 
						|
// creates an ALEntryList with the appropriate toolkit.
 | 
						|
//
 | 
						|
// RETURNS
 | 
						|
//
 | 
						|
//  A handle to the newly created ALEntryList object.
 | 
						|
//
 | 
						|
// EXAMPLE
 | 
						|
//
 | 
						|
// SEE ALSO
 | 
						|
//
 | 
						|
// REVISION HISTORY
 | 
						|
//
 | 
						|
//   February 14, 1996  2.0A : New Release
 | 
						|
//
 | 
						|
 | 
						|
#if !defined( AL_NO_C )
 | 
						|
 | 
						|
extern "C" AL_LINKAGE hALEntryList AL_FUNCTION
 | 
						|
newALListPkCompressFileTools( hALMonitor monitor,  /* Tag public function */
 | 
						|
                              int level,
 | 
						|
                              int window_bits,
 | 
						|
                              int mem_level )
 | 
						|
{
 | 
						|
    if ( monitor )
 | 
						|
        AL_ASSERT_OBJECT( monitor, ALMonitor, "newALListPkCompressFileTools" );
 | 
						|
    if ( level == AL_DEFAULT )
 | 
						|
        level = 6;
 | 
						|
    if ( window_bits == AL_DEFAULT )
 | 
						|
        window_bits = AL_PK_DEFAULT_WINDOW_BITS;
 | 
						|
    if ( mem_level == AL_DEFAULT )
 | 
						|
        mem_level = AL_PK_DEFAULT_MEM_LEVEL;
 | 
						|
    return (hALEntryList) new ALEntryList( (ALMonitor *) monitor,
 | 
						|
                                           PkCompressFileTools( level,
 | 
						|
                                                                window_bits,
 | 
						|
                                                                mem_level ) );
 | 
						|
}
 | 
						|
 | 
						|
#endif
 | 
						|
 |