wxWidgets/include/wx/dir.h
Vadim Zeitlin 1944c6bdd0 wxDir class added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4873 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1999-12-08 14:16:53 +00:00

110 lines
3.5 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: wx/dir.h
// Purpose: wxDir is a class for enumerating the files in a directory
// Author: Vadim Zeitlin
// Modified by:
// Created: 08.12.99
// RCS-ID: $Id$
// Copyright: (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DIR_H_
#define _WX_DIR_H_
#ifdef __GNUG__
#pragma interface "dir.h"
#endif
#ifndef WX_PRECOMP
#include "wx/string.h"
#endif
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
// these flags define what kind of filenames is included in the list of files
// enumerated by GetFirst/GetNext
enum
{
wxDIR_FILES = 0x0001, // include files
wxDIR_DIRS = 0x0002, // include directories
wxDIR_HIDDEN = 0x0004, // include hidden files
wxDIR_DOTDOT = 0x0008, // include '.' and '..'
// by default, enumerate everything except '.' and '..'
wxDIR_DEFAULT = wxDIR_FILES | wxDIR_DIRS | wxDIR_HIDDEN
};
// ----------------------------------------------------------------------------
// wxDir: portable equivalent of {open/read/close}dir functions
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxDir
{
public:
// test for existence of a directory with the given name
static bool Exists(const wxString& dir);
// ctors
// -----
// default, use Open()
wxDir() { m_data = NULL; }
// opens the directory for enumeration, use IsOpened() to test success
wxDir(const wxString& dir);
// dtor cleans up the associated ressources
~wxDir();
// open the directory for enumerating
bool Open(const wxString& dir);
// returns TRUE if the directory was successfully opened
bool IsOpened() const;
// file enumeration routines
// -------------------------
// start enumerating all files matching filespec (or all files if it is
// empty) and flags, return TRUE on success
bool GetFirst(wxString *filename,
const wxString& filespec = wxEmptyString,
int flags = wxDIR_DEFAULT) const;
// get next file in the enumeration started with either GetFirst() or
// GetFirstNormal()
bool GetNext(wxString *filename) const;
// TODO using scandir() when available later, emulating it otherwise
#if 0
// get all files in the directory into an array, return TRUE on success
//
// this function uses Select() function to select the files
// unless the filespec is explicitly given and Compare() function to sort
// them
bool Read(wxArrayString& filenames,
const wxString& filespec = wxEmptyString) const;
protected:
// this function is called by Read() if filespec is not specified in
// Read(): it should return TRUE if the file matches our selection
// criteria and FALSE otherwise
virtual bool Select(const wxChar* filename);
// This function is called by Read() to sort the array: it should return
// -1, 0 or +1 if the first file is less than, equal to or greater than
// the second. The base class version does
virtual int Compare(const wxChar *filename1, const wxChar *filename2);
#endif // 0
private:
friend class WXDLLEXPORT wxDirData;
wxDirData *m_data;
};
#endif // _WX_DIR_H_