PTLib  Version 2.18.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PDirectory Class Reference

Class to represent a directory in the operating system file system. More...

#include <pdirect.h>

Inheritance diagram for PDirectory:
Collaboration diagram for PDirectory:

Classes

struct  Entry
 

Public Member Functions

Construction
 PDirectory ()
 Create a directory object of the current working directory. More...
 
 PDirectory (const char *cpathname)
 Create a directory object of the specified directory. More...
 
 PDirectory (const PString &pathname)
 Create a directory object of the specified directory. More...
 
PDirectoryoperator= (const PString &pathname)
 Set the directory to the specified path. More...
 
PDirectoryoperator= (const char *cpathname)
 Set the directory to the specified path. More...
 
- Public Member Functions inherited from PString
virtual PObjectClone () const
 Make a complete duplicate of the string. More...
 
virtual Comparison Compare (const PObject &obj) const
 Get the relative rank of the two strings. More...
 
virtual void PrintOn (ostream &strm) const
 Output the string to the specified stream. More...
 
virtual void ReadFrom (istream &strm)
 Input the string from the specified stream. More...
 
virtual PINDEX HashFunction () const
 Calculate a hash value for use in sets and dictionaries. More...
 
virtual PBoolean SetSize (PINDEX newSize)
 Set the size of the string. More...
 
virtual PBoolean IsEmpty () const
 Determine if the string is empty. More...
 
virtual PBoolean MakeUnique ()
 Make this instance to be the one and only reference to the container contents. More...
 
bool MakeMinimumSize (PINDEX newLength=0)
 Set the actual memory block array size to the minimum required to hold the current string contents. More...
 
virtual PINDEX GetLength () const
 Determine the length of the null terminated string. More...
 
PINDEX Find (char ch, PINDEX offset=0) const
 Locate the position within the string of the character. More...
 
PINDEX Find (const PString &str, PINDEX offset=0) const
 Locate the position within the string of the substring. More...
 
PINDEX Find (const char *cstr, PINDEX offset=0) const
 
PINDEX FindLast (char ch, PINDEX offset=P_MAX_INDEX) const
 Locate the position of the last matching character. More...
 
PINDEX FindLast (const PString &str, PINDEX offset=P_MAX_INDEX) const
 Locate the position of the last matching substring. More...
 
PINDEX FindLast (const char *cstr, PINDEX offset=P_MAX_INDEX) const
 Locate the position of the last matching substring. More...
 
PINDEX FindOneOf (const PString &set, PINDEX offset=0) const
 Locate the position of one of the characters in the set. More...
 
PINDEX FindOneOf (const char *cset, PINDEX offset=0) const
 Locate the position of one of the characters in the set. More...
 
PINDEX FindSpan (const PString &set, PINDEX offset=0) const
 Locate the position of character not in the set. More...
 
PINDEX FindSpan (const char *cset, PINDEX offset=0) const
 Locate the position of character not in the set. More...
 
PINDEX FindRegEx (const PRegularExpression &regex, PINDEX offset=0) const
 Locate the position within the string of one of the regular expression. More...
 
PBoolean FindRegEx (const PRegularExpression &regex, PINDEX &pos, PINDEX &len, PINDEX offset=0, PINDEX maxPos=P_MAX_INDEX) const
 Locate the position within the string of one of the regular expression. More...
 
PBoolean MatchesRegEx (const PRegularExpression &regex) const
 Return true if the entire string matches the regular expression. More...
 
PStringReplace (const PString &target, const PString &subs, PBoolean all=false, PINDEX offset=0)
 Locate the substring within the string and replace it with the specifed substring. More...
 
PStringSplice (const PString &str, PINDEX pos, PINDEX len=0)
 Splice the string into the current string at the specified position. More...
 
PStringSplice (const char *cstr, PINDEX pos, PINDEX len=0)
 Splice the string into the current string at the specified position. More...
 
PStringDelete (PINDEX start, PINDEX len)
 Remove the substring from the string. More...
 
PString operator() (PINDEX start, PINDEX end) const
 Extract a portion of the string into a new string. More...
 
PString Left (PINDEX len) const
 Extract a portion of the string into a new string. More...
 
PString Right (PINDEX len) const
 Extract a portion of the string into a new string. More...
 
PString Mid (PINDEX start, PINDEX len=P_MAX_INDEX) const
 Extract a portion of the string into a new string. More...
 
PString LeftTrim () const
 Create a string consisting of all characters from the source string except all spaces at the beginning of the string. More...
 
PString RightTrim () const
 Create a string consisting of all characters from the source string except all spaces at the end of the string. More...
 
PString Trim () const
 Create a string consisting of all characters from the source string except all spaces at the beginning and end of the string. More...
 
PString ToLower () const
 Create a string consisting of all characters from the source string with all upper case letters converted to lower case. More...
 
PString ToUpper () const
 Create a string consisting of all characters from the source string with all lower case letters converted to upper case. More...
 
 P_DECLARE_BITWISE_ENUM_EX (SplitOptions, 6,(SplitOnly, SplitTrimBefore, SplitTrimAfter, SplitDefaultToBefore, SplitDefaultToAfter, SplitBeforeNonEmpty, SplitAfterNonEmpty), SplitTrim=SplitTrimBefore|SplitTrimAfter, SplitNonEmpty=SplitBeforeNonEmpty|SplitAfterNonEmpty)
 Options for PString::Split() function. More...
 
__inline bool Split (const PString &delimiter, PString &before, PString &after, SplitOptions options=SplitTrim) const
 Split the string into two substrings around delimiter. More...
 
__inline bool Split (char delimiter, PString &before, PString &after, SplitOptions options) const
 
__inline bool Split (char delimiter, PString &before, PString &after, SplitOptions_Bits options) const
 
__inline bool Split (const char *delimiter, PString &before, PString &after, SplitOptions options) const
 
__inline bool Split (const char *delimiter, PString &before, PString &after, SplitOptions_Bits options) const
 
__inline bool Split (char delimiter, PString &before, PString &after, bool trim) const
 
PStringArray Tokenise (const PString &separators, PBoolean onePerSeparator=true) const
 Split the string into an array of substrings. More...
 
PStringArray Tokenise (const char *cseparators, PBoolean onePerSeparator=true) const
 Split the string into an array of substrings. More...
 
PStringArray Lines () const
 Split the string into individual lines. More...
 
 PString ()
 Construct an empty string. More...
 
 PString (const PString &str)
 Create a new reference to the specified string. More...
 
 PString (const PCharArray &buf)
 Create a new reference to the specified buffer. More...
 
 PString (const PBYTEArray &buf)
 Create a new string based on the BYTE array. More...
 
 PString (const std::string &str)
 Create a new string from the specified std::string. More...
 
 PString (const char *cstr)
 Create a string from the C string array. More...
 
 PString (const char *cstr, PINDEX len)
 Create a string from the wchar_t string array. More...
 
 PString (char ch)
 Create a string from the single character. More...
 
 PString (short n)
 Create a string from the integer type. More...
 
 PString (unsigned short n)
 Create a string from the integer type. More...
 
 PString (int n)
 Create a string from the integer type. More...
 
 PString (unsigned int n)
 Create a string from the integer type. More...
 
 PString (long n)
 Create a string from the integer type. More...
 
 PString (unsigned long n)
 Create a string from the integer type. More...
 
 PString (ConversionType type, const char *str,...)
 
 PString (ConversionType type, unsigned long value, unsigned param=10)
 
 PString (ConversionType type, signed long value, unsigned param=10)
 
 PString (ConversionType type, unsigned int value, unsigned param=10)
 
 PString (ConversionType type, signed int value, unsigned param=10)
 
 PString (ConversionType type, unsigned short value, unsigned param=10)
 
 PString (ConversionType type, signed short value, unsigned param=10)
 
 PString (ConversionType type, unsigned char value, unsigned param=10)
 
 PString (ConversionType type, signed char value, unsigned param=10)
 
 PString (ConversionType type, double value, unsigned places)
 
PStringoperator= (const PString &str)
 Assign the string to the current object. More...
 
PStringoperator= (const std::string &str)
 Assign the string to the current object. More...
 
PStringoperator= (const char *cstr)
 Assign the C string to the current object. More...
 
PStringoperator= (char ch)
 Assign the character to the current object. More...
 
PStringoperator= (short n)
 Assign a string from the integer type. More...
 
PStringoperator= (unsigned short n)
 Assign a string from the integer type. More...
 
PStringoperator= (int n)
 Assign a string from the integer type. More...
 
PStringoperator= (unsigned int n)
 Assign a string from the integer type. More...
 
PStringoperator= (long n)
 Assign a string from the integer type. More...
 
PStringoperator= (unsigned long n)
 Assign a string from the integer type. More...
 
virtual PStringMakeEmpty ()
 Make the current string empty. More...
 
PString operator+ (const PString &str) const
 Concatenate two strings to produce a third. More...
 
PString operator+ (const char *cstr) const
 Concatenate a C string to a PString to produce a third. More...
 
PString operator+ (char ch) const
 Concatenate a single character to a PString to produce a third. More...
 
PStringoperator+= (const PString &str)
 Concatenate a string to another string, modifiying that string. More...
 
PStringoperator+= (const char *cstr)
 Concatenate a C string to a PString, modifiying that string. More...
 
PStringoperator+= (char ch)
 Concatenate a single character to a PString. More...
 
PString operator& (const PString &str) const
 Concatenate a PString to another PString to produce a third. More...
 
PString operator& (const char *cstr) const
 Concatenate a C string to a PString to produce a third. More...
 
PString operator& (char ch) const
 Concatenate a single character to a PString to produce a third. More...
 
PStringoperator&= (const PString &str)
 Concatenate a PString to a PString, modifiying that string. More...
 
PStringoperator&= (const char *cstr)
 Concatenate a C string to a PString, modifiying that string. More...
 
PStringoperator&= (char ch)
 Concatenate a character to a PString, modifiying that string. More...
 
bool operator*= (const PString &str) const
 Compare two strings using case insensitive comparison. More...
 
bool operator== (const PString &str) const
 Compare two strings using the PObject::Compare() function. More...
 
bool operator!= (const PString &str) const
 Compare two strings using the PObject::Compare() function. More...
 
bool operator< (const PString &str) const
 Compare two strings using the PObject::Compare() function. More...
 
bool operator> (const PString &str) const
 Compare two strings using the PObject::Compare() function. More...
 
bool operator<= (const PString &str) const
 Compare two strings using the PObject::Compare() function. More...
 
bool operator>= (const PString &str) const
 Compare two strings using the PObject::Compare() function. More...
 
bool operator*= (const char *cstr) const
 Compare a PString to a C string using a case insensitive compare function. More...
 
bool operator== (const char *cstr) const
 Compare a PString to a C string using the Compare() function. More...
 
bool operator!= (const char *cstr) const
 Compare a PString to a C string using the PObject::Compare() function. More...
 
bool operator< (const char *cstr) const
 Compare a PString to a C string using the PObject::Compare() function. More...
 
bool operator> (const char *cstr) const
 Compare a PString to a C string using the PObject::Compare() function. More...
 
bool operator<= (const char *cstr) const
 Compare a PString to a C string using the PObject::Compare() function. More...
 
bool operator>= (const char *cstr) const
 Compare a PString to a C string using the PObject::Compare() function. More...
 
Comparison NumCompare (const PString &str, PINDEX count=P_MAX_INDEX, PINDEX offset=0) const
 Compare a string against a substring of the object. More...
 
Comparison NumCompare (const char *cstr, PINDEX count=P_MAX_INDEX, PINDEX offset=0) const
 Compare a string against a substring of the object. More...
 
PStringsprintf (const char *cfmt,...)
 Concatenate a formatted output to the string. More...
 
PStringvsprintf (const PString &fmt, va_list args)
 Concatenate a formatted output to the string. More...
 
PStringvsprintf (const char *cfmt, va_list args)
 Concatenate a formatted output to the string. More...
 
template<typename T >
__inline T As (T t=T()) const
 Convert the string to any type that can be converted using a stream. More...
 
long AsInteger (unsigned base=0) const
 Convert the string to an integer value using the specified number base. More...
 
DWORD AsUnsigned (unsigned base=0) const
 Convert the string to an integer value using the specified number base. More...
 
int64_t AsInteger64 (unsigned base=0) const
 Convert the string to an integer value using the specified number base. More...
 
__inline PInt64 AsInt64 (unsigned base=0) const
 
uint64_t AsUnsigned64 (unsigned base=0) const
 Convert the string to an integer value using the specified number base. More...
 
double AsReal () const
 Convert the string to a floating point number. More...
 
PBYTEArray ToPascal () const
 Convert a standard null terminated string to a "pascal" style string. More...
 
PString ToLiteral () const
 Convert the string to C literal string format. More...
 
PString FromLiteral (PINDEX &offset) const
 Parse a C literal string format as for PString::ToLiteral(). More...
 
 operator const unsigned char * () const
 Get the internal buffer as a pointer to unsigned characters. More...
 
 operator std::string () const
 Cast the PString to a std::string. More...
 
char * GetPointerAndSetLength (PINDEX len)
 Get a pointer to the buffer and set the length of the string. More...
 
virtual const char * GetPointer (PINDEX=0) const
 Get a const pointer to the buffer contents This function overrides the ancestor function that returns a char *. More...
 
__inline std::string::size_type size () const
 
__inline std::string::size_type length () const
 
__inline std::string::size_type capacity () const
 
__inline bool empty () const
 
__inline void clear ()
 
__inline const char * c_str () const
 
__inline char * data ()
 
__inline void push_back (char ch)
 
__inline PStringappend (std::string::size_type count, char ch)
 
__inline PStringappend (const char *s)
 
__inline PStringappend (const std::string &s)
 
__inline PStringinsert (std::string::size_type index, std::string::size_type count, char ch)
 
__inline PStringinsert (std::string::size_type index, const char *s)
 
__inline PStringinsert (std::string::size_type index, const std::string &s)
 
__inline PStringerase (std::string::size_type index=0, std::string::size_type count=std::string::npos)
 
__inline PStringreplace (std::string::size_type pos, std::string::size_type count, const char *s)
 
__inline PStringreplace (std::string::size_type pos, std::string::size_type count, const std::string &s)
 
__inline std::string substr (std::string::size_type pos=0, std::string::size_type count=std::string::npos) const
 
__inline std::string::size_type find (char c, std::string::size_type pos=0) const
 
__inline std::string::size_type find (const char *s, std::string::size_type pos=0) const
 
__inline std::string::size_type find (const std::string &s, std::string::size_type pos=0) const
 
__inline std::string::size_type rfind (char c, std::string::size_type pos=0) const
 
__inline std::string::size_type rfind (const char *s, std::string::size_type pos=0) const
 
__inline std::string::size_type rfind (const std::string &s, std::string::size_type pos=0) const
 
__inline std::string::size_type find_first_of (const char *s, std::string::size_type pos=0) const
 
__inline std::string::size_type find_first_of (const std::string &s, std::string::size_type pos=0) const
 
__inline std::string::size_type find_first_not_of (const char *s, std::string::size_type pos=0) const
 
__inline std::string::size_type find_first_not_of (const std::string &s, std::string::size_type pos=0) const
 
- Public Member Functions inherited from PCharArray
 PCharArray (PINDEX initialSize=0)
 Construct a new dynamic array of char. More...
 
 PCharArray (char const *buffer, PINDEX length, PBoolean dynamic=true)
 Construct a new dynamic array of char. More...
 
 PCharArray (PContainerReference &reference_)
 
virtual void PrintOn (ostream &strm) const
 Print the array. More...
 
virtual void ReadFrom (istream &strm)
 Read the array. More...
 
- Public Member Functions inherited from PBaseArray< char >
 PBaseArray (PINDEX initialSize=0)
 Construct a new dynamic array of elements of the specified type. More...
 
 PBaseArray (charconst *buffer, PINDEX length, PBoolean dynamic=true)
 Construct a new dynamic array of elements of the specified type. More...
 
PBoolean SetAt (PINDEX index, charval)
 Set the specific element in the array. More...
 
char GetAt (PINDEX index) const
 Get a value from the array. More...
 
void Attach (const char *buffer, PINDEX bufferSize)
 Attach a pointer to a static block to the base array type. More...
 
char * GetPointer (PINDEX minSize=0)
 Get a pointer to the internal array and assure that it is of at least the specified size. More...
 
char operator[] (PINDEX index) const
 Get a value from the array. More...
 
char & operator[] (PINDEX index)
 Get a reference to value from the array. More...
 
 operator charconst * () const
 Get a pointer to the internal array. More...
 
PBoolean Concatenate (const PBaseArray &array)
 Concatenate one array to the end of this array. More...
 
- Public Member Functions inherited from PAbstractArray
 PAbstractArray (PINDEX elementSizeInBytes, PINDEX initialSize=0)
 Create a new dynamic array of initalSize elements of elementSizeInBytes bytes each. More...
 
 PAbstractArray (PINDEX elementSizeInBytes, const void *buffer, PINDEX bufferSizeInElements, PBoolean dynamicAllocation)
 Create a new dynamic array of bufferSizeInElements elements of elementSizeInBytes bytes each. More...
 
void Attach (const void *buffer, PINDEX bufferSize)
 Attach a pointer to a static block to the base array type. More...
 
void * GetPointer (PINDEX minSize=1)
 Get a pointer to the internal array and assure that it is of at least the specified size. More...
 
const void * GetPointer () const
 
PBoolean Concatenate (const PAbstractArray &array)
 Concatenate one array to the end of this array. More...
 
- Public Member Functions inherited from PContainer
 PContainer (PINDEX initialSize=0)
 Create a new unique container. More...
 
 PContainer (const PContainer &cont)
 Create a new refernce to container. More...
 
PContaineroperator= (const PContainer &cont)
 Assign one container reference to another. More...
 
virtual ~PContainer ()
 Destroy the container class. More...
 
virtual PINDEX GetSize () const
 Get the current size of the container. More...
 
__inline size_t size () const
 
PBoolean SetMinSize (PINDEX minSize)
 Set the minimum size of container. More...
 
__inline bool empty () const
 
PBoolean IsUnique () const
 Determine if container is unique reference. More...
 
- Public Member Functions inherited from PObject
__inline unsigned GetTraceContextIdentifier () const
 Get PTRACE context identifier. More...
 
__inline void SetTraceContextIdentifier (unsigned id)
 
__inline void SetTraceContextIdentifier (const PObject &obj)
 
__inline void SetTraceContextIdentifier (const PObject *obj)
 
__inline void CopyTraceContextIdentifier (PObject &obj) const
 
__inline void CopyTraceContextIdentifier (PObject *obj) const
 
virtual ~PObject ()
 
__inline const char * GetClass () const
 
__inline bool IsClass (const char *name) const
 
__inline const PObjectPTraceObjectInstance () const
 
template<class CLS >
CLS * CloneAs () const
 As for Clone() but converts to specified type. More...
 
virtual Comparison CompareObjectMemoryDirect (const PObject &obj) const
 Determine the byte wise comparison of two objects. More...
 
bool operator== (const PObject &obj) const
 Compare the two objects. More...
 
bool operator!= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator< (const PObject &obj) const
 Compare the two objects. More...
 
bool operator> (const PObject &obj) const
 Compare the two objects. More...
 
bool operator<= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator>= (const PObject &obj) const
 Compare the two objects. More...
 

Protected Member Functions

void Construct ()
 
void Destruct ()
 
- Protected Member Functions inherited from PString
virtual Comparison InternalCompare (PINDEX offset, PINDEX length, const char *cstr) const
 
virtual int internal_strcmp (const char *s1, const char *s2) const
 
virtual int internal_strncmp (const char *s1, const char *s2, size_t n) const
 
bool InternalSplit (const PString &delimiter, PString &before, PString &after, SplitOptions_Bits options) const
 
 PString (int dummy, const PString *str)
 
virtual void AssignContents (const PContainer &)
 Copy the container contents. More...
 
 PString (PContainerReference &reference_, PINDEX len)
 
- Protected Member Functions inherited from PBaseArray< char >
 PBaseArray (PContainerReference &reference_)
 
virtual void PrintElementOn (ostream &stream, PINDEX index) const
 
- Protected Member Functions inherited from PAbstractArray
PBoolean InternalSetSize (PINDEX newSize, PBoolean force)
 
virtual void PrintElementOn (ostream &stream, PINDEX index) const
 
virtual void ReadElementFrom (istream &stream, PINDEX index)
 
 PAbstractArray (PContainerReference &reference, PINDEX elementSizeInBytes)
 
- Protected Member Functions inherited from PContainer
 PContainer (int dummy, const PContainer *cont)
 Constructor used in support of the Clone() function. More...
 
 PContainer (PContainerReference &reference)
 Construct using static PContainerReference. More...
 
virtual void DestroyContents ()=0
 Destroy the container contents. More...
 
void CopyContents (const PContainer &c)
 Copy the container contents. More...
 
void CloneContents (const PContainer *src)
 Create a duplicate of the container contents. More...
 
void Destruct ()
 Internal function called from container destructors. More...
 
virtual void DestroyReference ()
 Destroy the PContainerReference instance. More...
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 

Protected Attributes

PFileInfo::FileTypes m_scanMask
 Mask of file types that the directory scan will return. More...
 
DIR * directory
 
PFileInfoentryInfo
 
struct dirent * entryBuffer
 
- Protected Attributes inherited from PString
PINDEX m_length
 
- Protected Attributes inherited from PAbstractArray
PINDEX elementSize
 Size of an element in bytes. More...
 
char * theArray
 Pointer to the allocated block of memory. More...
 
PBoolean allocatedDynamically
 Flag indicating the array was allocated on the heap. More...
 
- Protected Attributes inherited from PContainer
PContainerReferencereference
 
- Protected Attributes inherited from PObject
unsigned m_traceContextIdentifier
 

Access functions

PDirectory GetParent () const
 Get the directory for the parent to the current directory. More...
 
PFilePathString GetVolume () const
 Get the volume name that the directory is in. More...
 
bool IsRoot () const
 Determine if the directory is the root directory of a volume. More...
 
PDirectory GetRoot () const
 Get the root directory of a volume. More...
 
PStringArray GetPath () const
 Get the directory path as an array of strings. More...
 
bool GetVolumeSpace (PInt64 &total, PInt64 &free, DWORD &clusterSize) const
 Determine the total number of bytes and number of bytes free on the volume that this directory is contained on. More...
 
static PINLINE bool IsSeparator (char ch)
 Determine if the character ch is a directory path separator. More...
 

File system functions

bool Exists () const
 Test for if the directory exists. More...
 
bool Change () const
 Change the current working directory to the objects location. More...
 
bool Create (int perm=PFileInfo::DefaultDirPerms, bool recurse=false) const
 Create a new directory with the specified permissions. More...
 
bool Remove ()
 Delete the directory. More...
 
static bool Exists (const PString &path)
 Test for if the specified directory exists. More...
 
static bool Change (const PString &path)
 Change the current working directory to that specified. More...
 
static bool Create (const PString &p, int perm=PFileInfo::DefaultDirPerms, bool recurse=false)
 Create a new directory as specified with the specified permissions. More...
 
static bool Remove (const PString &path)
 Delete the specified directory. More...
 
static PDirectory GetTemporary ()
 Get the OS temporary directory. More...
 

Directory listing functions

typedef std::vector< EntryEntries
 
virtual bool Open (PFileInfo::FileTypes scanMask=PFileInfo::DefaultSearch)
 Open the directory for scanning its list of files. More...
 
virtual bool Restart (PFileInfo::FileTypes scanMask=PFileInfo::DefaultSearch)
 Restart file list scan from the beginning of directory. More...
 
virtual bool Next ()
 Move to the next file in the directory scan. More...
 
virtual void Close ()
 Close the directory during or after a file list scan. More...
 
virtual PFilePathString GetEntryName () const
 Get the name (without the volume or directory path) of the current entry in the directory scan. More...
 
virtual bool IsSubDir () const
 Determine if the directory entry currently being scanned is itself another directory entry. More...
 
virtual bool GetInfo (PFileInfo &info) const
 Get file information on the current directory entry. More...
 
 P_DECLARE_ENUM (Sorting, Unsorted, SortByType, SortByName, SortBySize, SortByCreated, SortByModified, SortByAccessed, SortByPermission)
 
bool GetEntries (Entries &entries, Sorting sortBy=Unsorted)
 Get all the entries in this directory. More...
 
bool GetEntries (Entries &entries, const PCaselessString &sortBy)
 

Additional Inherited Members

- Public Types inherited from PString
typedef const char * Initialiser
 
enum  ConversionType {
  Pascal, Basic, Literal, Signed,
  Unsigned, Decimal, Exponent, ScaleSI,
  Printf, NumConversionTypes
}
 
- Public Types inherited from PObject
enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
 Result of the comparison operation performed by the Compare() function. More...
 
- Static Public Member Functions inherited from PString
static const PStringEmpty ()
 Return an empty string. More...
 
- Static Public Member Functions inherited from PObject
static __inline void CopyTraceContextIdentifier (PObject &to, const PObject &from)
 
static __inline void CopyTraceContextIdentifier (PObject &to, const PObject *from)
 
static __inline void CopyTraceContextIdentifier (PObject *to, const PObject &from)
 
static __inline void CopyTraceContextIdentifier (PObject *to, const PObject *from)
 
static __inline const char * Class ()
 
static __inline const PObjectPTraceObjectInstance (const char *)
 
static __inline const PObjectPTraceObjectInstance (const PObject *obj)
 
template<typename T >
static Comparison Compare2 (T v1, T v2)
 Compare two types, returning Comparison type. More...
 
static Comparison InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
 Internal function caled from CompareObjectMemoryDirect() More...
 

Detailed Description

Class to represent a directory in the operating system file system.

A directory is a special file that contains a list of file paths.

The directory paths are highly platform dependent and a minimum number of assumptions should be made.

The PDirectory object is a string consisting of a possible volume name, and a series directory names in the path from the volumes root to the directory that the object represents. Each directory is separated by the platform dependent separator character which is defined by the PDIR_SEPARATOR macro. The path always has a trailing separator.

Some platforms allow more than one character to act as a directory separator so when doing any processing the IsSeparator() function should be used to determine if a character is a possible separator.

The directory may be opened to gain access to the list of files that it contains. Note that the directory does {not} contain the "." and ".." entries that some platforms support.

The ancestor class is dependent on the platform. For file systems that are case sensitive, eg Unix, the ancestor is PString. For other platforms, the ancestor class is PCaselessString.

Member Typedef Documentation

typedef std::vector<Entry> PDirectory::Entries

Constructor & Destructor Documentation

PDirectory::PDirectory ( )

Create a directory object of the current working directory.

PDirectory::PDirectory ( const char *  cpathname)

Create a directory object of the specified directory.

The cpathname parameter may be a relative directory which is made absolute by the creation of the PDirectory object.

Parameters
cpathnameDirectory path name for new object.
PDirectory::PDirectory ( const PString pathname)

Create a directory object of the specified directory.

The pathname parameter may be a relative directory which is made absolute by the creation of the PDirectory object.

Parameters
pathnameDirectory path name for new object.

Member Function Documentation

bool PDirectory::Change ( ) const

Change the current working directory to the objects location.

Returns
true if current working directory was changed.
static bool PDirectory::Change ( const PString path)
static

Change the current working directory to that specified.

Returns
true if current working directory was changed.
Parameters
pathDirectory file path.
virtual void PDirectory::Close ( )
virtual

Close the directory during or after a file list scan.

Referenced by Destruct().

void PDirectory::Construct ( )
protected
bool PDirectory::Create ( int  perm = PFileInfo::DefaultDirPerms,
bool  recurse = false 
) const

Create a new directory with the specified permissions.

Returns
true if directory created.
static bool PDirectory::Create ( const PString p,
int  perm = PFileInfo::DefaultDirPerms,
bool  recurse = false 
)
static

Create a new directory as specified with the specified permissions.

Returns
true if directory created.
Parameters
pDirectory file path.
void PDirectory::Destruct ( )
inlineprotected

References Close(), and PContainer::Destruct().

bool PDirectory::Exists ( ) const

Test for if the directory exists.

Returns
true if directory exists.
static bool PDirectory::Exists ( const PString path)
static

Test for if the specified directory exists.

Returns
true if directory exists.
Parameters
pathDirectory file path.
bool PDirectory::GetEntries ( Entries entries,
Sorting  sortBy = Unsorted 
)

Get all the entries in this directory.

Parameters
entriesEntries in directory.
sortByField to sort list on
bool PDirectory::GetEntries ( Entries entries,
const PCaselessString sortBy 
)
Parameters
entriesEntries in directory.
sortByField to sort list on
virtual PFilePathString PDirectory::GetEntryName ( ) const
virtual

Get the name (without the volume or directory path) of the current entry in the directory scan.

This may be the name of a file or a subdirectory or even a link or device for operating systems that support them.

To get a full path name concatenate the PDirectory object itself with the entry name.

Note that the directory scan will {not} return the "." and ".." entries that some platforms support.

Returns
string for directory entry.
virtual bool PDirectory::GetInfo ( PFileInfo info) const
virtual

Get file information on the current directory entry.

Returns
true if file information was successfully retrieved.
Parameters
infoObject to receive the file information.
PDirectory PDirectory::GetParent ( ) const

Get the directory for the parent to the current directory.

If the directory is already the root directory it returns the root directory again.

Returns
parent directory.
PStringArray PDirectory::GetPath ( ) const

Get the directory path as an array of strings.

The first element in the array is the volume string, eg under Win32 it is "c:" or "\\machine", while under unix it is an empty string.

PDirectory PDirectory::GetRoot ( ) const

Get the root directory of a volume.

Returns
root directory.
static PDirectory PDirectory::GetTemporary ( )
static

Get the OS temporary directory.

PFilePathString PDirectory::GetVolume ( ) const

Get the volume name that the directory is in.

This is platform dependent, for example for MS-DOS it is the 11 character volume name for the drive, eg "DOS_DISK", and for Macintosh it is the disks volume name eg "Untitled". For a unix platform it is the device name for the file system eg "/dev/sda1".

Returns
string for the directory volume.
bool PDirectory::GetVolumeSpace ( PInt64 &  total,
PInt64 &  free,
DWORD &  clusterSize 
) const

Determine the total number of bytes and number of bytes free on the volume that this directory is contained on.

Note that the free space will be the physical limit and if user quotas are in force by the operating system, the use may not actually be able to use all of these bytes.

Returns
true if the information could be determined.
Parameters
totalTotal number of bytes available on volume
freeNumber of bytes unused on the volume
clusterSize"Quantisation factor" in bytes for files on volume
bool PDirectory::IsRoot ( ) const

Determine if the directory is the root directory of a volume.

Returns
true if the object is a root directory.
static PINLINE bool PDirectory::IsSeparator ( char  ch)
static

Determine if the character ch is a directory path separator.

Returns
true if may be used to separate directories in a path.
Parameters
chCharacter to check as being a separator.
virtual bool PDirectory::IsSubDir ( ) const
virtual

Determine if the directory entry currently being scanned is itself another directory entry.

Note that the directory scan will {not} return the "." and ".." entries that some platforms support.

Returns
true if entry is a subdirectory.
virtual bool PDirectory::Next ( )
virtual

Move to the next file in the directory scan.

Only files that are of a type that is specified in the mask passed to the Open() or Restart() functions will be returned.

Note that the directory scan will {not} return the "." and ".." entries that some platforms support.

Returns
true if there is another valid file in the directory.
virtual bool PDirectory::Open ( PFileInfo::FileTypes  scanMask = PFileInfo::DefaultSearch)
virtual

Open the directory for scanning its list of files.

Once opened the GetEntryName() function may be used to get the current directory entry and the Next() function used to move to the next directory entry.

Only files that are of a type that is specified in the mask will be returned.

Note that the directory scan will {not} return the "." and ".." entries that some platforms support.

Returns
true if directory was successfully opened, and there was at least one file in it of the specified types.
Parameters
scanMaskMask of files to provide.
PDirectory& PDirectory::operator= ( const PString pathname)

Set the directory to the specified path.

Parameters
pathnameDirectory path name for new object.
PDirectory& PDirectory::operator= ( const char *  cpathname)

Set the directory to the specified path.

Parameters
cpathnameDirectory path name for new object.
PDirectory::P_DECLARE_ENUM ( Sorting  ,
Unsorted  ,
SortByType  ,
SortByName  ,
SortBySize  ,
SortByCreated  ,
SortByModified  ,
SortByAccessed  ,
SortByPermission   
)
bool PDirectory::Remove ( )

Delete the directory.

Returns
true if directory was deleted.
static bool PDirectory::Remove ( const PString path)
static

Delete the specified directory.

Returns
true if directory was deleted.
Parameters
pathDirectory file path.
virtual bool PDirectory::Restart ( PFileInfo::FileTypes  scanMask = PFileInfo::DefaultSearch)
virtual

Restart file list scan from the beginning of directory.

This is similar to the Open() command but does not require that the directory be closed (using Close()) first.

Only files that are of a type that is specified in the mask will be returned.

Note that the directory scan will {not} return the "." and ".." entries that some platforms support.

Returns
true if directory was successfully opened, and there was at least one file in it of the specified types.
Parameters
scanMaskMask of files to provide.

Member Data Documentation

DIR* PDirectory::directory
protected
struct dirent* PDirectory::entryBuffer
protected
PFileInfo* PDirectory::entryInfo
protected
PFileInfo::FileTypes PDirectory::m_scanMask
protected

Mask of file types that the directory scan will return.


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