197 lines
5.4 KiB
C++
Executable File
197 lines
5.4 KiB
C++
Executable File
/*
|
|
* _OPENF.H
|
|
*
|
|
* Header file for ArchiveLib 1.0
|
|
*
|
|
* Copyright (c) 1994 Greenleaf Software, Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* These three classes are utility classes used inside ArchiveLib.
|
|
* All they do is let me open a file(s) at the start of a routine and
|
|
* then automatically close it when I exit. It gets closed when
|
|
* the destructor for this class gets called. If the file was
|
|
* already open when the routine was entered, this class leave
|
|
* it open when the destructor gets called. These classes will generally
|
|
* get used like this:
|
|
*
|
|
* int foo( ALStorage &input_file )
|
|
* {
|
|
* ALOpenInputFile file( input_file )
|
|
* ...
|
|
* do stuff with input file
|
|
* ...
|
|
* } The destructor gets called here and the file is closed.
|
|
*
|
|
* This may seem like a lot of work, creating a class just to make
|
|
* sure files get closed, but it replaces a *lot* of code. Every
|
|
* routine that uses a file can use one of these classes.
|
|
*
|
|
*
|
|
* CLASS DEFINITIONS:
|
|
*
|
|
* ALOpenInputFile
|
|
* ALOpenOutputFile
|
|
* ALOpenFiles
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
*/
|
|
|
|
#ifndef __OPENF_H
|
|
#define __OPENF_H
|
|
|
|
#include "arclib.h"
|
|
|
|
/*
|
|
* class ALOpenInputFile
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* This is a utility class. The constructor opens a file for input,
|
|
* and keeps track of whether it was already open or not. The destructor
|
|
* will automatically close the file if it was closed when the
|
|
* ctor was invoked.
|
|
*
|
|
* DATA MEMBERS
|
|
*
|
|
* miFileWasOpen : The flag that keeps track of the file's state
|
|
* at the start of the routine.
|
|
*
|
|
* mpFile : A pointer to the file, so we can close it in the dtor.
|
|
*
|
|
* MEMBER FUNCTIONS
|
|
*
|
|
* ALOpenInputFile : The constructor, opens the file.
|
|
* ~ALOpenInputFile : The destructor, can close the file.
|
|
* operator new : This operator is used in the Win16
|
|
* DLL version of ArchiveLib.
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
*/
|
|
|
|
class AL_CLASS_TYPE ALOpenInputFile {
|
|
public :
|
|
AL_PROTO ALOpenInputFile( ALStorage AL_DLL_FAR &file );
|
|
AL_PROTO ~ALOpenInputFile();
|
|
#if defined( AL_BUILDING_DLL ) || defined( AL_USING_DLL )
|
|
void AL_DLL_FAR * AL_PROTO operator new( size_t size );
|
|
#endif
|
|
/*
|
|
* Prevent the compiler from generating these members.
|
|
*/
|
|
protected :
|
|
AL_PROTO ALOpenInputFile( ALOpenInputFile AL_DLL_FAR &);
|
|
ALOpenInputFile AL_DLL_FAR & operator=( ALOpenInputFile AL_DLL_FAR & );
|
|
protected :
|
|
int miFileWasOpen;
|
|
ALStorage AL_DLL_FAR *mpFile;
|
|
};
|
|
|
|
/*
|
|
* class ALOpenOutputFile
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* This is a utility class. The constructor opens a file for output,
|
|
* and keeps track of whether it was already open or not. The destructor
|
|
* will automatically close the file if it was closed when the
|
|
* ctor was invoked.
|
|
*
|
|
* DATA MEMBERS
|
|
*
|
|
* miFileWasOpen : The flag that keeps track of the file's state
|
|
* at the start of the routine.
|
|
*
|
|
* mpFile : A pointer to the file, so we can close it in the dtor.
|
|
*
|
|
* MEMBER FUNCTIONS
|
|
*
|
|
* ALOpenOutputFile : The constructor, opens the file.
|
|
* ~ALOpenOutputFile : The destructor, can close the file.
|
|
* operator new : This operator is used in the Win16
|
|
* DLL version of ArchiveLib.
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
*/
|
|
|
|
class AL_CLASS_TYPE ALOpenOutputFile {
|
|
public :
|
|
AL_PROTO ALOpenOutputFile( ALStorage AL_DLL_FAR &file );
|
|
AL_PROTO ~ALOpenOutputFile();
|
|
#if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
|
|
void AL_DLL_FAR * AL_PROTO operator new( size_t size );
|
|
#endif
|
|
/*
|
|
* Prevent the compiler from generating these members.
|
|
*/
|
|
protected :
|
|
AL_PROTO ALOpenOutputFile( ALOpenOutputFile AL_DLL_FAR &);
|
|
ALOpenOutputFile AL_DLL_FAR & operator=( ALOpenOutputFile AL_DLL_FAR & );
|
|
protected :
|
|
int miFileWasOpen;
|
|
ALStorage AL_DLL_FAR *mpFile;
|
|
};
|
|
|
|
/*
|
|
* class ALOpenFiles
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* This is a utility class. The constructor opens the first file for
|
|
* input, and the second for output. It does so using the previous
|
|
* two classes, so it doesn't have to keep track of anything.
|
|
*
|
|
* DATA MEMBERS
|
|
*
|
|
* mInputFile : The input file open object. It does all the work
|
|
* related to the input file.
|
|
*
|
|
* mOutputFile : The output file open object. It does all the work
|
|
* related to the output file.
|
|
*
|
|
* MEMBER FUNCTIONS
|
|
*
|
|
* ALOpenFiles : The constructor, opens both files.
|
|
*
|
|
* ~ALOpenFiles : The destructor, can close one or both files.
|
|
*
|
|
* operator new : This operator is used in the Win16
|
|
* DLL version of ArchiveLib.
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
*/
|
|
|
|
class AL_CLASS_TYPE ALOpenFiles {
|
|
public :
|
|
AL_PROTO ALOpenFiles( ALStorage AL_DLL_FAR &input,
|
|
ALStorage AL_DLL_FAR &output );
|
|
AL_PROTO ~ALOpenFiles();
|
|
#if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
|
|
void AL_DLL_FAR * AL_PROTO operator new( size_t size );
|
|
#endif
|
|
/*
|
|
* Prevent the compiler from generating these members.
|
|
*/
|
|
protected :
|
|
AL_PROTO ALOpenFiles( ALOpenFiles AL_DLL_FAR & );
|
|
ALOpenFiles AL_DLL_FAR & operator=( ALOpenFiles AL_DLL_FAR & );
|
|
protected :
|
|
ALOpenInputFile mInputFile;
|
|
ALOpenOutputFile mOutputFile;
|
|
};
|
|
|
|
#endif /* #ifndef __OPENF_H */
|