casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Private Member Functions | Private Attributes
casa::DirectoryIterator Class Reference

Traverse the contents of a directory. More...

#include <DirectoryIterator.h>

List of all members.

Public Member Functions

 DirectoryIterator ()
 Construct the iterator for the working directory.
 DirectoryIterator (const Directory &dir)
 Construct the iterator for the given directory.
 DirectoryIterator (const Directory &dir, const Regex &regExpression)
 Construct the iterator for the given directory.
 DirectoryIterator (const DirectoryIterator &that)
 Copy constructor (copy semantics).
DirectoryIteratoroperator= (const DirectoryIterator &that)
 Assignment (copy semantics).
 ~DirectoryIterator ()
void operator++ ()
 Position on the next matching entry in the directory.
void operator++ (int)
String name () const
 Returns the file name at the current position.
File file () const
 Returns a File object for the file at the current position.
void reset ()
 Reposition the directory stream on the first entry.
Bool pastEnd () const
 Checks if the iterator is past the end.

Private Member Functions

void init ()
 Initialize the iterator.

Private Attributes

DIR * itsDirectoryDescriptor
 This variable is used for seeking in the directory.
dirent * itsDirectoryEntry
 This structure is used for information of the directory.
Bool itsEnd
 Boolean to check if the directory stream has past the end.
Directory itsDirectory
 class directory
Regex itsExpression
 Regular expression if given, with this variable it is possible to compare files with regular expression.
dirent ** itsNameList
 Cray XT3 does not support readdir on compute nodes.
int itsNrNames
int itsNameInx

Detailed Description

Traverse the contents of a directory.

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
<h3>Intended use:</h3> Public interface

Prerequisite

Synopsis

DirectoryIterator allows to traverse a directory. In this way all file names in a directory can be gotten. Files . and .. will always be skipped.

By means of a regular expression it is possible to traverse the directory selectively. That is, only the file names matching the regular expression will be returned. Note that the regular expression is a true regular expression (as defined by class Regex and not a file expression as used in shells. Thus to get all .cc files, one has to specify ".*.cc" and not "*.cc".

The File class can be used to determine if a file represents a symlink, directory or regular file.

Example

       Directory dir("testdir");
       // Get all .cc files.
       // Note that Regex is a true regular expression and not a
       // simplified file expression (like *.cc) as used in shells.
       DirectoryIterator dirIter(dir, ".*.\cc");
       while (!dirIter.pastEnd()){
          cout << dirIter.name() << endl;
          dirIter++;
       }

Motivation

With this class it is easy to iterate through a directory.

To Do

Definition at line 96 of file DirectoryIterator.h.


Constructor & Destructor Documentation

Construct the iterator for the working directory.

All entries (except . and ..) will be traversed. It positions the iterator on the first entry.

Construct the iterator for the given directory.

All entries (except . and ..) will be traversed. It positions the iterator on the first entry.

casa::DirectoryIterator::DirectoryIterator ( const Directory dir,
const Regex regExpression 
)

Construct the iterator for the given directory.

All entries matching the regular expression will be traversed. It positions the iterator on the first entry.

Copy constructor (copy semantics).

The iterator will be positioned at the beginning.


Member Function Documentation

Returns a File object for the file at the current position.

Note that this adds the path of the directory to get the correct path for the file.
An exception is thrown if the iterator is already past the end.

void casa::DirectoryIterator::init ( ) [private]

Initialize the iterator.

Returns the file name at the current position.


An exception is thrown if the iterator is already past the end.

void casa::DirectoryIterator::operator++ ( )

Position on the next matching entry in the directory.


An exception is thrown if the iterator is already past the end.

void casa::DirectoryIterator::operator++ ( int  )
DirectoryIterator& casa::DirectoryIterator::operator= ( const DirectoryIterator that)

Assignment (copy semantics).

The iterator will be positioned at the beginning.

Checks if the iterator is past the end.

Reposition the directory stream on the first entry.


Member Data Documentation

class directory

Definition at line 164 of file DirectoryIterator.h.

This variable is used for seeking in the directory.

The directory is opened and closed once during the lifetime of the class.

Definition at line 155 of file DirectoryIterator.h.

This structure is used for information of the directory.

Definition at line 158 of file DirectoryIterator.h.

Boolean to check if the directory stream has past the end.

Definition at line 161 of file DirectoryIterator.h.

Regular expression if given, with this variable it is possible to compare files with regular expression.

Definition at line 168 of file DirectoryIterator.h.

Definition at line 174 of file DirectoryIterator.h.

Cray XT3 does not support readdir on compute nodes.

Use scandir instead.

Definition at line 172 of file DirectoryIterator.h.

Definition at line 173 of file DirectoryIterator.h.


The documentation for this class was generated from the following file: