152 lines
5.6 KiB
C
152 lines
5.6 KiB
C
|
/*
|
||
|
* PKARC.H
|
||
|
*
|
||
|
* Header file for ArchiveLib 2.0
|
||
|
*
|
||
|
* Copyright (c) 1994-1996 Greenleaf Software, Inc.
|
||
|
* All Rights Reserved
|
||
|
*
|
||
|
* DESCRIPTION
|
||
|
*
|
||
|
* This header file contains the class definition for class
|
||
|
* ALPkArchive.
|
||
|
*
|
||
|
* CLASS DEFINITIONS:
|
||
|
*
|
||
|
* ALPkArchive
|
||
|
*
|
||
|
* REVISION HISTORY
|
||
|
*
|
||
|
* February 14, 1996 2.0A : New release
|
||
|
*/
|
||
|
|
||
|
#ifndef _PKARC_H
|
||
|
#define _PKARC_H
|
||
|
|
||
|
#if defined( __cplusplus )
|
||
|
|
||
|
/*
|
||
|
* class ALPkArchive
|
||
|
*
|
||
|
* DESCRIPTION
|
||
|
*
|
||
|
* ALPkArchive defines the interface to PKWare archive objects, on disk,
|
||
|
* memory, or whatever. It is a derived class that is a sibling to ALGlArchive.
|
||
|
* Most of the interface to this archive class is defined in the base
|
||
|
* class.
|
||
|
*
|
||
|
* DATA MEMBERS
|
||
|
*
|
||
|
* mlStartOfCentralDir : An offset in the archive to the start of
|
||
|
* the central directory.
|
||
|
*
|
||
|
* mEcd : A copy of the End-Of-Central-Directory record,
|
||
|
* as found in the ZIP file.
|
||
|
*
|
||
|
* MEMBER FUNCTIONS
|
||
|
*
|
||
|
* ALPkArchive() : Construct from a storage object
|
||
|
* ALPkArchive() : Construct from a named ALFile object
|
||
|
* ~ALPkArchive() : The virtual destructor.
|
||
|
* operator new() : Memory allocation operator used when
|
||
|
* the library is in a DLL
|
||
|
* ReadEcd() : Function used to read in the
|
||
|
* End-Of-Central-Directory record, mEcd.
|
||
|
* LocateEcd)( : Locates the ECD by stumbling around near
|
||
|
* the end of the file.
|
||
|
* AddJobs() : Virtual function that adds new objects
|
||
|
* to the PKWare archive.
|
||
|
* WriteArchiveData() : Called by the base class to write archive
|
||
|
* specific data.
|
||
|
* ReadArchiveData() : Called by the base class to read archive
|
||
|
* specific data.
|
||
|
* PreCompress() : Virtual function called by the base class
|
||
|
* before compressing an object.
|
||
|
* PostCompress() : Virtual function called by the base class
|
||
|
* after compressing an object.
|
||
|
* PreDecompress() : Virtual function called by the base class
|
||
|
* before decompressing an object.
|
||
|
* PreWriteDir() : Virtual function called by the base class
|
||
|
* before writing the directory information
|
||
|
* to the storage object.
|
||
|
* WriteDirEntry() : Virtual function called by the base class
|
||
|
* to write an entry in a directory.
|
||
|
* PostWriteDir() : Virtual function called by the base class
|
||
|
* after writing all the directory entries.
|
||
|
* PreCopyInput() : Virtual function called by the base class
|
||
|
* before copying a compressed file.
|
||
|
* ReadDirectory() : Virtual function that reads in the entire
|
||
|
* ZIP file directory.
|
||
|
*
|
||
|
* REVISION HISTORY
|
||
|
*
|
||
|
* May 26, 1994 1.0A : First release
|
||
|
*
|
||
|
* February 14, 1996 2.0A : New release
|
||
|
*/
|
||
|
class AL_CLASS_TYPE ALPkArchive : public ALArchive { /* Tag public class */
|
||
|
/*
|
||
|
* Constructors, destructors, declarations, and friends
|
||
|
*/
|
||
|
protected :
|
||
|
public :
|
||
|
AL_PROTO ALPkArchive( ALStorage AL_DLL_FAR & );
|
||
|
AL_PROTO ALPkArchive( const char AL_DLL_FAR *file_name );
|
||
|
virtual AL_PROTO ~ALPkArchive();
|
||
|
#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 ALPkArchive( const ALPkArchive AL_DLL_FAR & );
|
||
|
ALPkArchive AL_DLL_FAR & AL_PROTO operator=( ALPkArchive AL_DLL_FAR &rhs );
|
||
|
/*
|
||
|
* Member functions
|
||
|
*/
|
||
|
protected :
|
||
|
int AL_PROTO ALPkArchive::ReadEcd();
|
||
|
int AL_PROTO ALPkArchive::LocateEcd();
|
||
|
int AL_PROTO AddJobs( ALEntryList AL_DLL_FAR & list );
|
||
|
virtual int AL_PROTO WriteArchiveData();
|
||
|
virtual int AL_PROTO ReadArchiveData();
|
||
|
virtual void AL_PROTO PreCompress( ALEntry AL_DLL_FAR &entry );
|
||
|
virtual void AL_PROTO PostCompress( ALEntry AL_DLL_FAR &entry );
|
||
|
virtual void AL_PROTO PreDecompress( ALEntry AL_DLL_FAR &entry );
|
||
|
virtual void AL_PROTO PreWriteDir();
|
||
|
virtual void AL_PROTO WriteDirEntry( ALEntry AL_DLL_FAR &entry );
|
||
|
virtual void AL_PROTO PostWriteDir();
|
||
|
virtual void AL_PROTO PreCopyInput( ALEntry AL_DLL_FAR &entry );
|
||
|
/*
|
||
|
* These functions provide the public API to an archive
|
||
|
*/
|
||
|
public :
|
||
|
virtual int AL_PROTO ReadDirectory( ALEntryList AL_DLL_FAR &list );
|
||
|
/*
|
||
|
* Some protected data members
|
||
|
*/
|
||
|
protected :
|
||
|
struct AL_CLASS_TYPE { /* Tag protected class */
|
||
|
long mlOffset;
|
||
|
short int muThisDiskNumber;
|
||
|
short int muStartCentralDirDiskNumber;
|
||
|
short int muThisDiskCentralDirEntries;
|
||
|
short int muTotalCentralDirEntries;
|
||
|
long mlSizeCentralDir;
|
||
|
} mEcd;
|
||
|
long mlStartOfCentralDir;
|
||
|
public :
|
||
|
AL_CLASS_TAG( _ALPkArchiveTag );
|
||
|
};
|
||
|
|
||
|
#else /* #if defined( __cplusplus ) ... */
|
||
|
|
||
|
AL_LINKAGE hALArchive AL_FUNCTION
|
||
|
newALPkArchiveFromStorage( hALStorage storage );
|
||
|
AL_LINKAGE hALArchive AL_FUNCTION
|
||
|
newALPkArchive( char AL_DLL_FAR *name );
|
||
|
|
||
|
#endif /* #if defined( __cplusplus ) ... #else ... */
|
||
|
|
||
|
#endif /* #ifndef _PKARC_H */
|