00001
00002
00003
00004
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
00086
00087
00088
00089 virtual bool Delete( bool inRecursive );
00106
00107 virtual bool GetChildCount( u32 &outCount,
00108 bool inRecursive,
00109 bool inSkipInvisible ) const;
00118
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
00435
00436
00437
00438
00439
00440
00441
00442