207 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
/*
 | 
						|
 * ALSIMPLE.H
 | 
						|
 *
 | 
						|
 *  Header file for ArchiveLib 2.0
 | 
						|
 *
 | 
						|
 *  Copyright (c) 1996 Greenleaf Software, Inc.
 | 
						|
 *  All Rights Reserved
 | 
						|
 *
 | 
						|
 * DESCRIPTION
 | 
						|
 *
 | 
						|
 * This header file contains the definitions for the C/C++
 | 
						|
 * simplified interface.  This interface consists of eight
 | 
						|
 * functions and a structure definition, all of which are
 | 
						|
 * found here.  The idea is that this interface lets you
 | 
						|
 * manipulate PKZip archives containing files with little
 | 
						|
 * or not knowledge about the depths of ArchiveLib.
 | 
						|
 *
 | 
						|
 * CLASS DEFINITIONS:
 | 
						|
 *
 | 
						|
 *  ALZipDir            : A description of a single entry in an ZIP
 | 
						|
 *                        file. Some of the simplified interface
 | 
						|
 *                        functions use an array of ALZipDir entries
 | 
						|
 *                        to describe an archive.
 | 
						|
 *
 | 
						|
 *  ALSimpleMonitor     : The monitor used by the simplified interface
 | 
						|
 *                        functions.  However, you don't have to know
 | 
						|
 *                        anything about this monitor class, its use
 | 
						|
 *                        is hidden.
 | 
						|
 *
 | 
						|
 * FUNCTIONS
 | 
						|
 *
 | 
						|
 *   ALFreeDir()
 | 
						|
 *   ALReadDir()
 | 
						|
 *   ALWriteDir()
 | 
						|
 *   ALSetName()
 | 
						|
 *   ALSetComment()
 | 
						|
 *   ALCreate()
 | 
						|
 *   ALAppend()
 | 
						|
 *   ALExtract()
 | 
						|
 *   ALDelete()
 | 
						|
 *
 | 
						|
 * REVISION HISTORY
 | 
						|
 *
 | 
						|
 *  February 14, 1996  2.0A : First release
 | 
						|
 */
 | 
						|
 | 
						|
#if !defined( _ALSIMPLE_H )
 | 
						|
#define _ALSIMPLE_H
 | 
						|
 | 
						|
#include "aldefs.h"
 | 
						|
#include "monitor.h"
 | 
						|
 | 
						|
struct AL_CLASS_TYPE ALZipDir {
 | 
						|
    char AL_DLL_FAR *name;      /* These two members are allocated using  */
 | 
						|
    char AL_DLL_FAR *comment;   /* new char[].  Let the library take care */
 | 
						|
                                /* of allocation and deletion.            */
 | 
						|
    long compressed_size;
 | 
						|
    long compressed_position;
 | 
						|
    long size;
 | 
						|
    long crc;
 | 
						|
    short int mark;
 | 
						|
    short int month;
 | 
						|
    short int date;
 | 
						|
    short int year;
 | 
						|
    short int hour;
 | 
						|
    short int minute;
 | 
						|
    short int second;
 | 
						|
    unsigned char r;
 | 
						|
    unsigned char a;
 | 
						|
    unsigned char s;
 | 
						|
    unsigned char h;
 | 
						|
    unsigned char d;
 | 
						|
    unsigned char level;
 | 
						|
};
 | 
						|
 | 
						|
typedef void (AL_DLL_FAR * CALLBACK_FN )( const char AL_DLL_FAR *file_name,
 | 
						|
                                          int file_ratio,
 | 
						|
                                          int job_ratio );
 | 
						|
 | 
						|
#if defined( __cplusplus )
 | 
						|
 | 
						|
/*
 | 
						|
 * class ALSimpleMonitor
 | 
						|
 *
 | 
						|
 * DESCRIPTION
 | 
						|
 *
 | 
						|
 *  This class is used by the simplified interface functions as a monitor.
 | 
						|
 *  For C and C++ programmers, the monitor simply calls a callback function
 | 
						|
 *  supplied by the user.  VB and Delphi users see the monitor as an object
 | 
						|
 *  that sends text messages to windows they are using as part of their
 | 
						|
 *  user interface.
 | 
						|
 *
 | 
						|
 *  Regardless of the language you are using, this monitor class is hidden
 | 
						|
 *  from you.  However, it is pretty simple, and the details of what it
 | 
						|
 *  is doing may help you understand the simplified interfaces.
 | 
						|
 *
 | 
						|
 * DATA MEMBERS
 | 
						|
 *
 | 
						|
 *  mpCallbackFunction          : A pointer to a callback function that
 | 
						|
 *                                the monitor will call from both
 | 
						|
 *                                Progress() and ArchiveOperation().
 | 
						|
 *
 | 
						|
 *  mhTextWindow                : The text window where file names will
 | 
						|
 *                                be sent from ArchiveOperation().
 | 
						|
 *
 | 
						|
 *  mhFileProgressWindow        : The text window where progress ratios
 | 
						|
 *                                will be sent from Progress().
 | 
						|
 *
 | 
						|
 *  mhJobProgressWindow         : The text window were job ratios will be
 | 
						|
 *                                sent from Progress().
 | 
						|
 *
 | 
						|
 * ALSimpleMonitor()     : The constructor, two versions
 | 
						|
 * ~ALSimpleMonitor()    : The destructor.
 | 
						|
 * Progress()            : The archiving file/job progress function
 | 
						|
 * ArchiveOperation()    : The function called at key points in the
 | 
						|
 *                         archiving routine.
 | 
						|
 *
 | 
						|
 * REVISION HISTORY
 | 
						|
 *
 | 
						|
 *  February 14, 1996  2.0A : First release
 | 
						|
 */
 | 
						|
 | 
						|
class AL_CLASS_TYPE ALSimpleMonitor : public ALMonitor {  /* Tag public class */
 | 
						|
/*
 | 
						|
 * Constructors, destructors, and friend classes
 | 
						|
 */
 | 
						|
     public :
 | 
						|
          AL_PROTO ALSimpleMonitor( CALLBACK_FN fn );
 | 
						|
//
 | 
						|
// Alternate constructor, used by VB and Delphi
 | 
						|
//
 | 
						|
#if defined( AL_VB ) || defined( AL_VB32 )
 | 
						|
          AL_PROTO ALSimpleMonitor( HWND text_window,
 | 
						|
                                    HWND file_progress_window,
 | 
						|
                                    HWND job_progress_window );
 | 
						|
#endif
 | 
						|
          virtual AL_PROTO ~ALSimpleMonitor();
 | 
						|
#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.
 | 
						|
 */
 | 
						|
     protected :
 | 
						|
          AL_PROTO ALSimpleMonitor( const ALSimpleMonitor AL_DLL_FAR & );
 | 
						|
          ALSimpleMonitor AL_DLL_FAR & AL_PROTO operator=( const ALSimpleMonitor AL_DLL_FAR & );
 | 
						|
/*
 | 
						|
 * Member functions
 | 
						|
 */
 | 
						|
     protected :
 | 
						|
          virtual void AL_PROTO Progress( long object_so_far,
 | 
						|
                                          ALStorage AL_DLL_FAR & object );
 | 
						|
          virtual void AL_PROTO
 | 
						|
          ArchiveOperation( ALArchiveOperation operation,
 | 
						|
                            ALArchive AL_DLL_FAR *archive,
 | 
						|
                            ALEntry AL_DLL_FAR *job );
 | 
						|
/*
 | 
						|
 * Data Members
 | 
						|
 */
 | 
						|
    protected :
 | 
						|
        CALLBACK_FN mpCallbackFunction;
 | 
						|
#if defined( AL_VB ) || defined( AL_VB32 )
 | 
						|
        HWND mhTextWindow;
 | 
						|
        HWND mhFileProgressWindow;
 | 
						|
        HWND mhJobProgressWindow;
 | 
						|
#endif
 | 
						|
     public :
 | 
						|
          AL_CLASS_TAG( _ALSimpleMonitorTag );
 | 
						|
};
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
#if defined( __cplusplus )
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
AL_LINKAGE void AL_FUNCTION ALFreeDir( struct ALZipDir AL_DLL_FAR *z );
 | 
						|
AL_LINKAGE struct ALZipDir AL_DLL_FAR * AL_FUNCTION
 | 
						|
ALReadDir( char AL_DLL_FAR *filename,
 | 
						|
           int AL_DLL_FAR *count,
 | 
						|
           int AL_DLL_FAR *error );
 | 
						|
AL_LINKAGE int AL_FUNCTION ALWriteDir( struct ALZipDir AL_DLL_FAR *z );
 | 
						|
AL_LINKAGE void AL_FUNCTION ALSetName( struct ALZipDir AL_DLL_FAR *z,
 | 
						|
                                       char AL_DLL_FAR *name );
 | 
						|
AL_LINKAGE void AL_FUNCTION ALSetComment( struct ALZipDir AL_DLL_FAR *z,
 | 
						|
                                          char AL_DLL_FAR *comment );
 | 
						|
AL_LINKAGE int AL_FUNCTION ALCreate( char AL_DLL_FAR *name,
 | 
						|
                                     char AL_DLL_FAR *file_list,
 | 
						|
                                     int strip_path,
 | 
						|
                                     CALLBACK_FN callback );
 | 
						|
AL_LINKAGE int AL_FUNCTION ALAppend( char AL_DLL_FAR *archive_name,
 | 
						|
                                     char AL_DLL_FAR *input_files,
 | 
						|
                                     int strip_path,
 | 
						|
                                     CALLBACK_FN callback );
 | 
						|
AL_LINKAGE int AL_FUNCTION ALExtract( struct ALZipDir AL_DLL_FAR *z,
 | 
						|
                                      int strip_path,
 | 
						|
                                      CALLBACK_FN callback );
 | 
						|
AL_LINKAGE int AL_FUNCTION ALDelete( struct ALZipDir AL_DLL_FAR *z,
 | 
						|
                                     CALLBACK_FN callback );
 | 
						|
 | 
						|
#if defined( __cplusplus )
 | 
						|
};
 | 
						|
#endif
 | 
						|
 | 
						|
#endif
 | 
						|
 |