campo-sirio/arch/cmpobj.h

121 lines
3.8 KiB
C++
Executable File

/*
* CMPOBJ.H
*
* Header file for ArchiveLib 1.0
*
* Copyright (c) 1994 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
*
*/
#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
*
* mpCompressionEngine : 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 or
* extract objects.
*
* 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.
*
* REVISION HISTORY
*
* May 26, 1994 1.0A : First release
*
*/
class AL_CLASS_TYPE ALCompressedObject {
/*
* Constructors, destructors, declarations, friends
*/
public :
AL_PROTO ALCompressedObject( ALStorage AL_DLL_FAR & storage_object,
ALCompressionEngine AL_DLL_FAR & engine );
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();
virtual int AL_PROTO ReadHeaderData();
public :
int AL_PROTO Insert( ALStorage AL_DLL_FAR &input_object );
int AL_PROTO Extract( ALStorage AL_DLL_FAR &output_object );
/*
* Data members
*/
protected :
ALCompressionEngine AL_DLL_FAR *mpCompressionEngine;
ALStorage AL_DLL_FAR *mpStorageObject;
public :
ALStatus mStatus;
AL_CLASS_TAG( _ALCompressedObjectTag );
};
#endif /* #if defined( __cplusplus ) */
#endif /* #ifdef _CMPOBJ_H */