Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

CascadeDirectory.h

Go to the documentation of this file.
00001 //
00002 // CascadeDirectory.h - header file for class CascadeDirectory
00003 //
00004 // Copyright (c) 2002, Roku, LLC.  All rights reserved.
00005 //
00007 
00008 #ifndef _ROKU_INCLUDE_CASCADE_UTIL_CASCADEDIRECTORY_H
00009 #define _ROKU_INCLUDE_CASCADE_UTIL_CASCADEDIRECTORY_H
00010 
00011 #include <cascade/util/CascadeFSObject.h>
00012 #include <cascade/util/CascadeFile.h>
00013 #include <cascade/util/CascadeString.h>
00014 #include <cascade/util/CascadeArray.h>
00015 #include <cascade/interthread/CascadeMutex.h>
00016 #include <sys/types.h>
00017 
00031 class CascadeDirectory : public CascadeFSObject
00032 {
00033 public:
00034     CascadeDirectory();
00040 
00041     CascadeDirectory( const char *pName );
00052 
00053     virtual ~CascadeDirectory();
00057 
00058 public:
00059 
00060     static CascadeDirectory * GetCWD( void );
00070 
00071     virtual bool Create( mode_t inMode = 0666 );
00085         // FIXME: What if a full path
00086         // is specified and not all directories on the path exist?  It's easy
00087         // enough to make them, but perhaps that should signal an error?
00088 
00089     virtual bool Delete( bool inRecursive );
00106 
00107     virtual bool GetChildCount( u32 &outCount, 
00108                                 bool inRecursive, 
00109                                 bool inSkipInvisible ) const;
00118         //  with '.' are skipped if inSkipInvisible is true.  Any directory 
00146 
00147     virtual bool GetChildren( 
00148         CascadeTemplateArray<CascadeFSObject*>* &outChildren,
00149         bool inRecursive, 
00150         bool inSkipInvisible ) const;
00183 
00184     virtual bool GetMatchingChildCount( CascadeFSObject::Selector &inSelector, 
00185                                         bool inRecursive, 
00186                                         bool inSkipInvisible,
00187                                         u32 &outCount ) const;
00217 
00218     virtual bool GetMatchingChildren( 
00219         CascadeFSObject::Selector &inSelector,
00220         bool inRecursive,
00221         bool inSkipInvisible,
00222         CascadeTemplateArray<CascadeFSObject*>* &outChildren ) const;
00261 
00262     typedef bool (DirectoryEnumerationCallback)( CascadeFSObject *obj,
00263                                                  void *pClientData );
00283 
00284     virtual bool EnumerateMatchingChildren( 
00285         CascadeFSObject::Selector &inSelector,
00286         bool inRecursive,
00287         bool inSkipInvisible,
00288         DirectoryEnumerationCallback inCallback,
00289         void *inClientData ) const;
00338     
00339     virtual bool SetCWD( void ) const;
00348 
00349     typedef bool (DirCopyCallback)(u32 inTotal, 
00350                                    u32 inComplete, 
00351                                    const CascadeString &inCurrentName,
00352                                    void *pClientData );
00371 
00372     virtual bool CopyTo( CascadeDirectory &inDestination, 
00373                          bool inRecursive,
00374                          DirCopyCallback *inCallback,
00375                          void *inClientData,
00376                          CascadeFile::FileCopyCallback *inFileCallback,
00377                          void *inFileClientData,
00378                          FSCopyError &outError );
00403 
00404 
00405     virtual bool Contains( const CascadeFSObject *inObject, bool &outContains );
00418 
00419     virtual bool IsDirectory( void ) const { return true; }
00424 private:
00425     void * m_pDirectoryInternal;
00426     static CascadeMutex s_dirScanMutex;
00427 };
00428 
00429 
00430 #endif // #ifndef _ROKU_INCLUDE_CASCADE_UTIL_CASCADEDIRECTORY_H
00431 
00433 // LOG
00435 // 04-02-03 mjkobb  created
00436 // 06-08-03 mjkobb  Added the option to skip invisible files in
00437 //                  directory enumeration functions
00438 // 07-28-03 mjkobb  Fix declarations of const functions to be const
00439 // 08-11-03 mjkobb  Added CopyTo
00440 // 05/16/05 mjkobb  Made inObject argument to Contains a const pointer.
00441 
00442 

Generated on Sun Jul 24 14:27:17 2005 for Cascade Library by  doxygen 1.4.1