164 lines
6.0 KiB
C++
Executable File
164 lines
6.0 KiB
C++
Executable File
/*
|
|
* CMPOBJ.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 ALCompressedObject.
|
|
*
|
|
* CLASS DEFINITIONS:
|
|
*
|
|
* ALCompressedObject
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
* July 13, 1994 1.0B : Modified ReadHeaderData() and WriteHeaderData()
|
|
* to have a pointer to the object being
|
|
* inserted/extracted.
|
|
*
|
|
* February 14, 1996 2.0A : New release
|
|
*/
|
|
|
|
#ifndef _CMPOBJ_H
|
|
#define _CMPOBJ_H
|
|
|
|
#if defined( __cplusplus )
|
|
|
|
/*
|
|
* class ALCompressedObject
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* This is the class definition for ALCompressedObject. A compressed
|
|
* object is a very simple artifact that contains some compressed data,
|
|
* a checksum, and a couple of length variables. No comments, no engine
|
|
* data, no archive data, nothing else. This give this type of object
|
|
* a very low overhead. It also assumes that when you create a compressed
|
|
* object using a storage object and a compression engine that you will
|
|
* know what type of storage object and compression engine to use when
|
|
* expanding it.
|
|
*
|
|
* If you decide you want to add some private data to your compressed
|
|
* object, it isn't hard. Just derive a new class, and implement the
|
|
* two virtual functions defined here to read and write your own private
|
|
* data during compression and decompression.
|
|
*
|
|
* DATA MEMBERS
|
|
*
|
|
* mpCompressor : A pointer to the compression engine that will
|
|
* be used by this object. This is assigned when
|
|
* the object is created, and used to insert objects.
|
|
*
|
|
* mpDecompressor : A pointer to the decompression engine that will
|
|
* be used by this object. This is assigned when
|
|
* the object is created, and used to extract objects.
|
|
* Note that either of the two engine pointers can be
|
|
* 0 if they aren't needed by an application.
|
|
*
|
|
* mpStorageObject : A pointer to the storage object where this
|
|
* object will live.
|
|
*
|
|
* mStatus : A standard ArchiveLib status object.
|
|
*
|
|
* MEMBER FUNCTIONS
|
|
*
|
|
* ALCompressedObject() : The only constructor for ALCompressedObject.
|
|
* ~ALCompressedObject() : The virtual destructor.
|
|
* operator new() : Memory allocation operator, used in DLL only.
|
|
* WriteHeaderData() : Virtual function to allow for storage of
|
|
* customized data in the object header.
|
|
* ReadHeaderData() : The virtual complement to the previous function,
|
|
* lets you read in some customized data.
|
|
* Insert() : Insert a single storage object into the Compressed
|
|
* object.
|
|
* Extract() : Extract the storage object from the Compressed
|
|
* object.
|
|
* ClearError() : A shortcut function to clear the error code
|
|
* in the mStatus member.
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
* February 14, 1996 2.0A : New release
|
|
*/
|
|
|
|
class AL_CLASS_TYPE ALCompressedObject { /* Tag public class */
|
|
/*
|
|
* Constructors, destructors, declarations, friends
|
|
*/
|
|
public :
|
|
AL_PROTO ALCompressedObject( ALStorage AL_DLL_FAR & storage_object,
|
|
ALCompressor AL_DLL_FAR *compressor,
|
|
ALDecompressor AL_DLL_FAR *decompressor );
|
|
virtual AL_PROTO ~ALCompressedObject();
|
|
#if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
|
|
void AL_DLL_FAR * AL_PROTO operator new( size_t size );
|
|
#endif
|
|
/*
|
|
* Define the copy constructor and assignment operator here, that way
|
|
* the compiler won't attempt to.
|
|
*/
|
|
protected :
|
|
AL_PROTO ALCompressedObject( ALCompressedObject AL_DLL_FAR & );
|
|
ALCompressedObject AL_DLL_FAR & AL_PROTO operator = ( ALCompressedObject AL_DLL_FAR & );
|
|
/*
|
|
* Member functions
|
|
*/
|
|
protected :
|
|
virtual int AL_PROTO WriteHeaderData( ALStorage AL_DLL_FAR * storage = 0 );
|
|
virtual int AL_PROTO ReadHeaderData( ALStorage AL_DLL_FAR * storage = 0 );
|
|
public :
|
|
int AL_PROTO Insert( ALStorage AL_DLL_FAR &input_object );
|
|
int AL_PROTO Extract( ALStorage AL_DLL_FAR &output_object );
|
|
void AL_PROTO ClearError();
|
|
/*
|
|
* Data members
|
|
*/
|
|
protected :
|
|
ALCompressor AL_DLL_FAR *mpCompressor;
|
|
ALDecompressor AL_DLL_FAR *mpDecompressor;
|
|
ALStorage AL_DLL_FAR *mpStorageObject;
|
|
|
|
public :
|
|
ALStatus mStatus;
|
|
AL_CLASS_TAG( _ALCompressedObjectTag );
|
|
};
|
|
|
|
#include "cmpobj.inl"
|
|
|
|
#else /* #if defined( __cplusplus ) ... */
|
|
|
|
AL_LINKAGE void AL_FUNCTION ALCompressedClearError( hALCompressed this_object );
|
|
AL_LINKAGE hALCompressed AL_FUNCTION newALCompressed(
|
|
hALStorage storage,
|
|
hALCompressor compressor,
|
|
hALDecompressor decompressor );
|
|
AL_LINKAGE void AL_FUNCTION deleteALCompressed( hALCompressed this_object );
|
|
AL_LINKAGE int AL_FUNCTION
|
|
ALCompressedInsert( hALCompressed this_object,
|
|
hALStorage input_object );
|
|
AL_LINKAGE int AL_FUNCTION
|
|
ALCompressedExtract( hALCompressed this_object, hALStorage output_object );
|
|
AL_LINKAGE int AL_FUNCTION
|
|
ALCompressedGetStatusCode( hALCompressed this_object );
|
|
AL_LINKAGE int AL_FUNCTION
|
|
ALCompressedSetError( hALCompressed this_object,
|
|
int error,
|
|
char AL_DLL_FAR *text );
|
|
AL_LINKAGE char AL_DLL_FAR * AL_FUNCTION
|
|
ALCompressedGetStatusString( hALCompressed this_object );
|
|
AL_LINKAGE char AL_DLL_FAR * AL_FUNCTION
|
|
ALCompressedGetStatusDetail( hALCompressed this_object );
|
|
|
|
#endif /* #if defined( __cplusplus ) ... #else ... */
|
|
|
|
#endif /* #ifdef _CMPOBJ_H */
|
|
|