campo-sirio/arch/wildcard.h

170 lines
5.1 KiB
C++
Executable File

/*
* WILDCARD.H
*
* Header file for ArchiveLib 1.0
*
* Copyright (c) 1994 Greenleaf Software, Inc.
* All Rights Reserved
*
* DESCRIPTION
*
* This file contains the class declaration for ALWildCardExpander,
* the class used to expand wildcard file specifications under
* DOS and Win32s.
*
* CLASS DEFINITIONS:
*
* ALWildCardExpander
*
* ENUMERATED TYPES:
*
* ALExpanderState (embedded in ALWildCardExpander)
*
* REVISION HISTORY
*
* May 26, 1994 1.0A : First release
*
*/
#ifndef _WILDCARD_H
#define _WILDCARD_H
// #include <dos.h>
#include "arclib.h"
#if defined( __cplusplus )
/*
* class ALOpenInputFile
*
* DESCRIPTION
*
* This class is used to expand wild card specifications on a DOS
* or NT file system. Note that you can do exciting things with this, like
* traversing through subdirectories, and separate various specs using
* commas or white space.
*
* DATA MEMBERS
*
* mState : The current state of the expander. This is a value
* from ALExpander state that lets use keep track
* of where we are between calls to the expander.
*
* mpNextExpander : If we are traversing subdirectories, we will
* open a new expander for each subdirectory. This
* is a pointer to any subdirectory we might already
* have open for a search in progress.
*
* mInputLine : The list of wildcard filespecs passed in as an
* argument. This gets whittled away, and will be
* smaller and smaller as all the names are parsed out.
*
* mFullWildName : The current wild card file spec that is being
* expanded.
*
* mWildNameOnly : The current wild name that is being expanded,
* stripped of its drive and path information.
*
* mWildPathOnly : The current drive and path being expanded, stripped
* of its filename and extension.
*
* mResultFileName : The file name that is returned to the calling
* program.
*
* mFindFileData : Under Win32s, this holds data about the file we
* found.
*
* mFindFileHandle : Under Win32s, this is a handle used during the
* wildcard expansion.
*
* mpFfblk : Under MS-DOS, this structure holds the state of
* the wildcard expansion in progress.
*
* miTraverseFlag : This flag indicates whether the search should traverse
* traverse through subdirectories or just search
* in the current directory.
*
* mCase : Indicates whether file names should always be forced
* to upper case, forced to lower case, or left mixed.
*
* MEMBER FUNCTIONS
*
* ALWildCardExpander() : Constructor, everything we need to know to
* perform the search is defined here.
* ~ALWildCardExpander() : Destructor.
* operator new() : Memory allocation function, used when the
* library is in a DLL.
* GetNextWildName() : Protected routine to get the next wild name
* from the input line.
* GetNextFile() : The function to get the next expanded file
* name. It keeps chunking out names until
* the search is complete.
*
* REVISION HISTORY
*
* May 26, 1994 1.0A : First release
*
*/
class AL_CLASS_TYPE ALWildCardExpander {
/*
* Constructors, destructors, assignment operators, declarations
*/
protected :
enum ALExpanderState {
GET_NEXT_WILD_NAME,
GET_FIRST_FILE_NAME,
GET_NEXT_FILE_NAME,
GET_FIRST_DIRECTORY,
GET_NEXT_DIRECTORY,
};
public :
AL_PROTO ALWildCardExpander( const char AL_DLL_FAR *file_list,
int traverse_flag = 0,
ALCase name_case = AL_LOWER );
AL_PROTO ~ALWildCardExpander();
#if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
void AL_DLL_FAR * AL_PROTO operator new( size_t size );
#endif
/*
* Disable copy constructor and assignment operator
*/
protected :
ALWildCardExpander AL_DLL_FAR & AL_PROTO operator=( ALWildCardExpander AL_DLL_FAR & );
AL_PROTO ALWildCardExpander( ALWildCardExpander AL_DLL_FAR & );
/*
* Member functions
*/
protected :
int AL_PROTO GetNextWildName();
public :
char AL_DLL_FAR * AL_PROTO GetNextFile();
/*
* Data members
*/
protected :
ALExpanderState mState;
ALWildCardExpander AL_DLL_FAR *mpNextExpander;
ALName mInputLine;
ALName mFullWildName;
ALName mWildNameOnly;
ALName mWildPathOnly;
ALName mResultFileName;
#if defined( AL_WIN32S )
WIN32_FIND_DATA mFindFileData;
HANDLE mFindFileHandle;
#else
struct find_t AL_DLL_FAR *mpFfblk;
#endif
int miTraverseFlag;
public :
const ALCase mCase;
AL_CLASS_TAG( _ALWildCardExpanderTag );
};
#endif /* #if defined( __cplusplus ) */
#endif /* #ifdef _WINMON_H */