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

CascadeFSObject.h

Go to the documentation of this file.
00001 //
00002 // CascadeFSObject.h - header file for class CascadeFSObject
00003 //
00004 // This is the base class for CascadeFile and CascadeDirectory.  A
00005 // CascadeDirectory is a container for objects of type CascadeFSObject.
00006 //
00007 // Copyright (c) 2002, Roku, LLC.  All rights reserved.
00008 //
00010 
00011 #ifndef _ROKU_INCLUDE_CASCADE_UTIL_CASCADEFSOBJECT_H
00012 #define _ROKU_INCLUDE_CASCADE_UTIL_CASCADEFSOBJECT_H
00013 
00014 #include <cascade/CascadeObject.h>
00015 #include <cascade/util/CascadeString.h>
00016 #include <sys/types.h>
00017 #include <regex.h>
00018 #include <sys/stat.h>
00019 
00042 class CascadeFSObject : public CascadeObject
00043 {
00044 public:
00045     typedef enum FSCopyError
00046     {
00047         eFSCopyNoErr,
00048         eFSCopyCanceled,
00049         eFSCopyUnknownErr,
00050         eFSCopyDestExists,
00051         eFSCopyCantOpenSrc,
00052         eFSCopyCantCreateDest,
00053         eFSCopyCantOpenDest,
00054         eFSCopyReadSrcFailed,
00055         eFSCopyWriteDstFailed,
00056         eFSCopyDestIsSrc,
00057         eFSCopyDestInsideSrc,
00058         eFSCopyInsufficientSpace,
00059         eFSCopyBadParam,
00060         eFSCopyPermissionErr
00061     };
00065 
00066 public:
00067     CascadeFSObject();
00076 
00077     CascadeFSObject( const char *pName );
00087 
00088     virtual ~CascadeFSObject();
00092 
00093 public:
00094     virtual CascadeString GetName( void ) const;
00103 
00104     virtual bool SetName( const char *inName );
00116 
00117     virtual CascadeString GetFullPath( void ) const;
00126 
00127     virtual CascadeString GetFilenameExtension( void ) const;
00143 
00144     virtual CascadeFSObject * GetParent( void ) const;
00151 
00152     virtual bool IsDirectory( void ) const = 0;
00159 
00160     virtual bool Exists( void ) const;
00167 
00168     static bool Exists( const CascadeString &inPath );
00176 
00177     static bool IsDirectory( const CascadeString &inPath );
00185 
00186     virtual bool IsRoot( void ) const;
00193 
00194 protected:
00195     void * m_pFSObjInternal;
00196     CascadeString   m_fullPath;
00197 
00198 public:
00199     class Selector
00200     {
00201     public:
00202         typedef enum
00203         {
00204             eInvalid = 0,
00205             eFiles = 1,
00206             eDirectories = 2,
00207             eBoth = 3
00208         } SelectorTypeFilter;
00209     public:
00210         Selector() { mFilter = eBoth; }
00216 
00217         virtual ~Selector() {}
00219 
00220         virtual bool Match( CascadeFSObject &inObject ) = 0;
00227 
00228         inline void SetSelectorTypeFilter( SelectorTypeFilter inFilter ) 
00229             { mFilter = inFilter; }
00236     protected:
00237         SelectorTypeFilter mFilter;
00238     };
00247     
00248     class RegexpSelector : public Selector
00249     {
00250     public:
00251         RegexpSelector() { mpRegEx = new regex_t; mbCompiled = false; }
00253 
00254         virtual ~RegexpSelector();
00259 
00260     public:
00261         virtual bool Compile( const CascadeString &inExpression, int inCFlags = 0 );
00271 
00272         virtual bool Match(CascadeFSObject &inObject);
00277     private:
00278         regex_t *mpRegEx;
00279         bool mbCompiled;
00280     };
00294 
00295     class PermissionsSelector : public Selector
00296     {
00297     public:
00298         PermissionsSelector() {m_PermissionBits = 0;}
00302 
00303         virtual ~PermissionsSelector(){}
00305 
00306     public:
00307                 virtual void SetPermissions(u32 inPermFlags);
00314 
00315         virtual bool Match(CascadeFSObject &inObject);
00320     private:
00321                 u32 m_PermissionBits;
00322     };
00332 
00333     class TypeSelector : public Selector
00334     {
00335     public:
00336         TypeSelector() { mFilter = CascadeFSObject::Selector::eDirectories; }
00340         inline virtual bool Match(CascadeFSObject &inObject) {
00341             return ( mFilter == eBoth ||
00342                      ( (mFilter == eDirectories) == inObject.IsDirectory() ) ); }
00347     };
00356     
00357 };
00358 
00359 #endif // #ifndef _ROKU_INCLUDE_CASCADE_UTIL_CASCADEFSOBJECT_H
00360 
00362 // LOG
00364 //      04-02-03    mjkobb  created
00365 //      12-May-03       pellis  added PermissionsSelector selector
00366 //                                              to support checking if a file is any of rwx.
00367 //  07-28-03    mjkobb  Declare functions that are const as const
00368 //  07-31-03    mjkobb  Added TypeSelector
00369 // 10-Aug-03    mjkobb  Added static IsDirector() and Exists(), added
00370 //                      FSCopyError
00371 // 18-Aug-03    mjkobb  Added eFSCopyPermissionErr
00372 //  21-Aug-03   dwoodward   don't return const CascadeStrings... causing problems!
00373 //  22-Oct-03   dsletten    made RegexpSelector::Compile() take a *const* CascadeString ref
00374 
00375 

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