170 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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           */
 |