- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages

- Class List
- Class Hierarchy
- Class Members

# sbuild::dirstream Class Reference

Access directories. More...

`#include <sbuild-dirstream.h>`

Collaboration diagram for sbuild::dirstream:

[legend]
List of all members.

## Public Types
typedef custom_error< error_code > | error
| Exception type.
| DIR_OPEN
| Failed to open directory.
| DIR_READ
| Failed to read directory.
enum | error_code { DIR_OPEN, DIR_READ }
| Error codes. More...
## Public Member Functions
| dirstream (std::string const &dir)
| The constructor.
virtual | ~dirstream ()
| The destructor.
void | open (std::string const &dirname)
| Open a directory for reading.
void | close ()
| Close the directory.
bool | eof () const
| Check for End Of File.
bool | bad () const
| Check for errors.
| operator bool ()
| Check if the dirstream status is good.
bool | operator! ()
| Check if the dirstream status is bad.
## Private Member Functions
void | read (int quantity=1)
| Read dirents from the underlying DIR stream into the data deque.
## Private Attributes
std::string | dirname
| The directory name.
DIR * | dir
| The underlying DIR stream.
std::deque< direntry > | data
| A list of direntries represents the directory stream as a LIFO stack.
bool | error_status
| Error status.
bool | eof_status
| End of File status.
## Friends
dirstream & | operator>> (dirstream &stream, direntry &entry)
| The overloaded extraction operator.

## Detailed Description

Access directories.

This is a wrapper around the opendir(3), readdir(3) and closedir(3) functions, which are used to read a stream of "dirents" through multiple readdir() calls.

dirstream calls opendir() and closedir() automatically, and represents each dirent as a dirstream::direntry. Like reading from and istream by pulling data out with the >> "extraction operator", direntries are also extracted from the dirstream with the >> operator.

## Member Typedef Documentation

typedef custom_error<error_code> sbuild::dirstream::error

Exception type.

## Member Enumeration Documentation

enum sbuild::dirstream::error_code

Error codes.

Enumerator:

  DIR_OPEN | Failed to open directory.
  DIR_READ | Failed to read directory.

## Constructor & Destructor Documentation

dirstream::dirstream | ( | std::string const & | dir | ) |

The constructor.

Parameters:

  | dir | the directory to read.

dirstream::~dirstream | ( |  | ) | `[virtual]`

The destructor.

## Member Function Documentation

bool dirstream::bad | ( |  | ) | const

Check for errors.

If there is an error, the dirstream is unusable until the next open() call.

Returns:
  true if the dirstream is in an error state, otherwise false.

void dirstream::close | ( |  | ) |

Close the directory.

This uses the closedir(3) call to close the underlying DIR stream. All cached data is deleted and the error state set until open() is called.

See also:
  open()

bool dirstream::eof | ( |  | ) | const

Check for End Of File.

Note that the end of file status is only set adter a read fails, so this should be checked after each read.

Returns:
  true if the dirstream is empty, otherwise false.

void dirstream::open | ( | std::string const & | dirname | ) |

Open a directory for reading.

This uses the opendir(3) call to open the underlying DIR stream. Any previously open directory is closed before opening the new one. The dirstream error state is set if the open fails, and an exception will be thrown.

Parameters:

  | dirname | the directory to read.

See also:
  close()

sbuild::dirstream::operator bool | ( |  | ) |

Check if the dirstream status is good.

Returns:
  true if the status is good (eof() and bad() both return false).

bool sbuild::dirstream::operator! | ( |  | ) |

Check if the dirstream status is bad.

Returns:
  true if the status is bad (eof() or bad() return true).

void dirstream::read | ( | int | quantity = `1` | ) | `[private]`

Read dirents from the underlying DIR stream into the data deque.

If the read fails, the error state will be set, and an exception will be thrown.

Parameters:

  | quantity | the number of dirents to read.

## Friends And Related Function Documentation

dirstream& operator>> | ( | dirstream & | stream,
|  | direntry & | entry |
| ) |  |  | `[friend]`

The overloaded extraction operator.

This is used to pull direntries from a dirstream.

Parameters:

  | stream | the dirstream to get input from.
  | entry | the direntry to set.

Returns:
  the dirstream.

## Member Data Documentation

std::deque<direntry> sbuild::dirstream::data`[private]`

A list of direntries represents the directory stream as a LIFO stack.

DIR* sbuild::dirstream::dir`[private]`

The underlying DIR stream.

std::string sbuild::dirstream::dirname`[private]`

The directory name.

bool sbuild::dirstream::eof_status`[private]`

End of File status.

bool sbuild::dirstream::error_status`[private]`

Error status.

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

- sbuild/sbuild-dirstream.h
- sbuild/sbuild-dirstream.cc