deargui-vpl/ref/virtools/Includes/CKDirectoryParser.h

68 lines
1.9 KiB
C++

/*************************************************************************/
/* File : CKDirectoryParser.h */
/* Author : Nicolas Galinotti */
/* */
/* Virtools SDK */
/* Copyright (c) Virtools 2000, All Rights Reserved. */
/*************************************************************************/
#ifndef CKDIRECTORYPARSER_H
#define CKDIRECTORYPARSER_H "$Id:$"
/***********************************************************************
Summary: Utility class for Directories parsing.
Remarks:
CKDirectoryParser class useful for iterating inside a directory arborescence.
It can be used to parse only a directory looking for files with an extension filter or
to parse a complete arborescence.
On Win32 platforms, suffers the extension mismatches limitation : if you want to parse the *.ext files, *.exta files
will also be listed.
Example:
// Counts and makes a list of files with extension .cpp
// in a directory tree
CKDirectoryParser MyParser(Directory,"*.cpp",TRUE);
XClassArray<XString> FileList;
char* str = NULL;
while(str = parser.GetNextFile()) {
// str contains the full path of the file.
FileList.PushBack(XString(str));
}
See also: CKPathMaker,CKPathSplitter
***********************************************************************/
class CKDirectoryParser
{
public:
VX_EXPORT CKDirectoryParser(char* dir,char* fileMask,BOOL recurse=FALSE, BOOL iReturnDirectory = FALSE);
VX_EXPORT ~CKDirectoryParser();
VX_EXPORT char* GetNextFile();
VX_EXPORT void Reset(char* dir=NULL,char *fileMask=NULL,BOOL recurse=FALSE,BOOL iReturnDirectory = FALSE);
protected:
void Clean();
void* m_FindData;
#if defined(_LINUX) || defined(PSX2) || defined(PSP)
void* m_Dir;
#else
int m_hFile;
#endif
char m_FullFileName[_MAX_PATH];
XString m_StartDir;
XString m_FileMask;
DWORD m_State;
CKDirectoryParser *m_SubParser;
};
#endif