BALL::Directory Class Reference
[Operating system support]

#include <BALL/SYSTEM/directory.h>

List of all members.


Public Member Functions

Constructors and Destructors
 Directory ()
 Directory (const String &directory_path, bool set_current=false)
 Directory (const Directory &directory)
 ~Directory ()
void clear ()
void destroy ()
Assignment
bool set (const String &directory_path, bool set_current=false)
void set (const Directory &directory)
Directoryoperator= (const Directory &directory)
void get (Directory &directory) const
Accessors
const StringgetPath () const
bool rename (String old_path, String new_path)
bool renameTo (String new_path)
bool setCurrent (String directory_path)
bool setCurrent ()
bool create (String path, const mode_t &mode=0777)
bool remove (String old_path)
bool remove ()
bool getFirstEntry (String &entry)
bool getNextEntry (String &entry)
Size countItems ()
Size countFiles ()
Size countDirectories ()
bool find (const String &filename, String &filepath)

Static Public Attributes

Constants
static const Size MAX_PATH_LENGTH

Private Member Functions

String getcwd_ ()
int chdir_ (const String &new_dir)
void synchronize_ ()
bool desynchronize_ (bool result=true)

Private Attributes

DIR * dir_
dirent * dirent_
String directory_path_
String backup_path_

Predicates

bool has (const String &item)
bool isValid () const
bool isCurrent () const
bool isEmpty ()
bool operator== (const Directory &directory) const
bool operator!= (const Directory &directory) const
static String getUserHomeDir ()
 

Get the home directory of the current user.


static bool changeToUserHomeDir ()
 

Goto the home directory of the current user.



Detailed Description

Directory class.


Constructor & Destructor Documentation

BALL::Directory::Directory (  ) 

Default constructor. Constructs new Directory object. The directory path is set to the current working directory. The directory path does not have a path seperator {"/"} at its end.

Returns:
Directory - new constructed Directory object
BALL::Directory::Directory ( const String directory_path,
bool  set_current = false 
)

Detailed constructor. Construct new Directory object from {directory_path}. The directory path does not have a path seperator {"/"} at its end. If the given directory does not exists, the directory path is set to an empty string.

Parameters:
directory_path the name of the directory to be opend
set_current true, to set the directory as the current, default = false
Returns:
Directory - new constructed Directory object
BALL::Directory::Directory ( const Directory directory  ) 

Copy constructor. Construct new Directory object by copying directory .

Parameters:
directory the Directory object to be copied (cloned)
Returns:
Directory - new constructed Directory cloned from directory
BALL::Directory::~Directory (  ) 

Destructor.


Member Function Documentation

static bool BALL::Directory::changeToUserHomeDir (  )  [static]

Goto the home directory of the current user.

int BALL::Directory::chdir_ ( const String new_dir  )  [private]
void BALL::Directory::clear (  ) 

Explicit default initialization. Set the state to the default values. The path is set to an empty string.

Size BALL::Directory::countDirectories (  ) 

Count the subdirectories in the directory.

Returns:
Size the number of subdirectories
Size BALL::Directory::countFiles (  ) 

Count the files in the directory.

Returns:
Size the number of files
Size BALL::Directory::countItems (  ) 

Count all items in the directory.

Returns:
Size the number of items (files, links, directories)
bool BALL::Directory::create ( String  path,
const mode_t &  mode = 0777 
)

Create a new directory. The directory is created using an absolute path, if it starts with a path seperator, else it is created in this directory.

Parameters:
path the path of the new directory
mode the access mode of the directory
Returns:
bool true if the directory could be created
void BALL::Directory::destroy (  ) 

Explicit destructor.

bool BALL::Directory::desynchronize_ ( bool  result = true  )  [private]
bool BALL::Directory::find ( const String filename,
String filepath 
)

Find a file in the directory. The search is recursive.

Parameters:
filename the name of the file to be searched
filepath the path of the file, if it was found
Returns:
bool true if the file was found
void BALL::Directory::get ( Directory directory  )  const

Copying with cloning facility. Copy this instance to directory .

Parameters:
directory the directory to be assigned to
String BALL::Directory::getcwd_ (  )  [private]
bool BALL::Directory::getFirstEntry ( String entry  ) 

Get the name of the first entry in the directory.

Parameters:
entry reference to the name of the first entry
Returns:
bool true if an entry was found
bool BALL::Directory::getNextEntry ( String entry  ) 

Get the name of the next entry in the directory.

Parameters:
entry reference to the name of the next entry
Returns:
bool true if an entry was found
const String& BALL::Directory::getPath (  )  const

Get the path of this instance. The directory path does not have a path seperator {"/"} at its end and is absolute. If a unvalid path was set the path is an empty string.

Returns:
String the name of the directory
static String BALL::Directory::getUserHomeDir (  )  [static]

Get the home directory of the current user.

Referenced by main().

bool BALL::Directory::has ( const String item  ) 

Test if the directory has an item.

Parameters:
item the name of the item to look for
Returns:
bool true if the directory has the item
bool BALL::Directory::isCurrent (  )  const

Test if the directory is the current working directory.

Returns:
bool
bool BALL::Directory::isEmpty (  ) 

Test if the directory is empty.

Returns:
bool
bool BALL::Directory::isValid (  )  const

Test if the directory is valid. The directory is valid if it exists. This function uses opendir(const char *dirname).

Returns:
bool true if the directory is valid
bool BALL::Directory::operator!= ( const Directory directory  )  const

Inequality operator.

Returns:
bool, true if the name of both directories are inequal
Directory& BALL::Directory::operator= ( const Directory directory  ) 

Assignment operator. Assign directory to this instance.

bool BALL::Directory::operator== ( const Directory directory  )  const

Equality operator.

Returns:
bool, true if the name of both directories are equal
bool BALL::Directory::remove (  ) 

Remove this directory. The directory this object points to is deleted and the object is cleared.

Returns:
bool true if the directory could be removed
bool BALL::Directory::remove ( String  old_path  ) 

Remove a directory. With this method the directory associated with this object can not be removed. Use remove() instead to do so.

Parameters:
old_path the path of the directory
Returns:
bool true if the directory could be removed
bool BALL::Directory::rename ( String  old_path,
String  new_path 
)

Rename a given directory. With this method the directory associated with this object can not be renamed. Use renameTo instead to do so.

Parameters:
old_path the old path
new_path the new path
Returns:
bool true if the directory could be renamed
bool BALL::Directory::renameTo ( String  new_path  ) 

Rename the directory associated with this object.

Parameters:
new_path the new path
Returns:
bool true if the directory could be renamed
void BALL::Directory::set ( const Directory directory  ) 

Assignment with cloning facility. Assign the Directory directory to *this.

Parameters:
directory the directory to be cloned
bool BALL::Directory::set ( const String directory_path,
bool  set_current = false 
)

Assign the Directory with the path directory_path. The given directory path can be either absolute or relative. If the path starts with a path seperator it is set as a absolute path.

Parameters:
directory_path the name of the directory to be cloned
set_current true to set the directory as the current, default = false
Returns:
bool true if the path could be set and is valid
bool BALL::Directory::setCurrent (  ) 

Set this directory as the current working directory.

Returns:
bool true if the directory could be set as the current
bool BALL::Directory::setCurrent ( String  directory_path  ) 

Set a directory as the current.

Parameters:
directory_path the name of the directory
Returns:
bool true if the directory could be set as the current
void BALL::Directory::synchronize_ (  )  [private]

Member Data Documentation

DIR* BALL::Directory::dir_ [private]
dirent* BALL::Directory::dirent_ [private]

The maximum length of a path. This constant is used for system calls that require a maximum length (e.g., getcwd()). Default is 8192.