gdir.h

Go to the documentation of this file.
00001 #ifndef gDIR_X_H
00002 #define gDIR_X_H
00003 
00004 #include <dirent.h>
00005 #include "glist.h"
00006 #include "gfile.h"
00007 #include "gfilestat.h"
00008 ////////////////////////////////////////////////////////////
00009 enum eFileSystemName {
00010     e_FSysNoName,
00011     e_FSysFile,
00012     e_FSysDir
00013 };
00014 ////////////////////////////////////////////////////////////
00015 class gFileSysName : public gString {
00016 public:
00017     virtual ~gFileSysName () ;
00018 
00019     // Get methods
00020     virtual bool IsOk () {
00021         return fsysName!=e_FSysNoName;
00022     }
00023     virtual bool IsStrOk () ;
00024     virtual bool IsDirectory () {
00025         return isDirectory;
00026     }
00027     virtual char* Str () ;
00028     virtual char* Name () {
00029         return Str();
00030     }
00031     virtual bool HasStat () {
00032         return myStat!=nil;
00033     }
00034     virtual gFileStat& GetStat () ;
00035     virtual gFileStat* GetStatPtr () {
00036         return myStat;
00037     }
00038 
00039     // Public data-members
00040     eFileSystemName fsysName;
00041 
00042 protected:
00043     gFileSysName (char* s,
00044                   eFileSystemName aFSysName,
00045                   bool isADirectory) ;
00046 
00047     gFileSysName (char* s,
00048                   eFileSystemName aFSysName,
00049                   gFileStat& aStat) ;
00050 
00051     bool isDirectory;
00052     gFileStat* myStat;
00053 
00054 private:
00055     // Operators,etc
00056     gFileSysName (gFileSysName& ) ; //empty
00057     gFileSysName& operator= (gFileSysName& ) ; //empty
00058 };
00059 ////////////////////////////////////////////////////////////
00060 class gFileName : public gFileSysName {
00061 public:
00062     gFileName () ;
00063     gFileName (char* s) ;
00064     gFileName (gString& s) ;
00065     gFileName (gString& s, gFileStat& aStat) ;
00066     virtual ~gFileName () ;
00067 
00068 private:
00069     // Operators,etc
00070     gFileName (gFileName& ) ; //empty
00071     gFileName& operator= (gFileName& ) ; //empty
00072 };
00073 ////////////////////////////////////////////////////////////
00074 class gDirName : public gFileSysName {
00075 public:
00076     gDirName () ;
00077     gDirName (char* s) ;
00078     gDirName (gString& s) ;
00079     gDirName (gString& s, gFileStat& aStat) ;
00080     virtual ~gDirName () ;
00081 
00082     // Get methods
00083     virtual char* Str () ;
00084     virtual char* Name () ;
00085 
00086     // Set methods
00087     virtual void SetDirName (char* s) ;
00088 
00089     // Save/etc methods
00090     virtual t_uchar* ToString (t_uchar* uBuf) ;
00091 
00092 protected:
00093     gString dirStr;
00094 
00095     // Protected methods
00096     void thisBuildDirStr (char* s) ;
00097 
00098 private:
00099     // Operators,etc
00100     gDirName (gDirName& ) ; //empty
00101     gDirName& operator= (gDirName& ) ; //empty
00102 };
00103 ////////////////////////////////////////////////////////////
00104 class gDirStream : public gFile {
00105 public:
00106     gDirStream (char* dName=nil) ;
00107     virtual ~gDirStream () ;
00108 
00109     // Public data-members
00110     DIR* pdir;
00111     gString dirName;  // Original directory name
00112     gFileStat dStat;
00113 
00114     // Get methods
00115     virtual bool IsOpened () ;
00116     virtual char* Name () {
00117         return dirName.Str();
00118     }
00119 
00120 protected:
00121     bool isDirOpened;
00122 
00123     int doOpenDir (char* dName) ;
00124     int doCloseDir () ;
00125 
00126 private:
00127     // Operators,etc
00128     gDirStream (gDirStream& ) ; //empty
00129     gDirStream& operator= (gDirStream& ) ; //empty
00130 };
00131 ////////////////////////////////////////////////////////////
00132 class gDirGeneric : public gList {
00133 public:
00134     virtual ~gDirGeneric () ;
00135 
00136     // Public data-members
00137     int lastOpError;
00138     gDirName sDirName;
00139     static t_uchar slashChr;
00140 
00141     // Get methods
00142     virtual bool IsOk () {
00143         return lastOpError==0;
00144     }
00145     virtual bool IsNameOk (char* s) ;
00146     virtual bool AllNamesOk (int depthLevel) ;
00147 
00148     virtual gFileSysName* GetName (unsigned idx) ;
00149 
00150     // Set methods
00151     // .
00152 
00153     // Save/etc methods
00154     virtual t_uchar* ToString (t_uchar* uBuf) ;
00155     virtual bool SaveGuts (FILE* f) ;
00156     virtual bool RestoreGuts (FILE* f) ;
00157 
00158 protected:
00159     gDirGeneric (eStorage kind) ;
00160 
00161     gString slashStr;
00162 
00163     // Protected methods
00164     bool thisNameOk (char* s,
00165                      unsigned& posBad) ;
00166 
00167     bool thisAllNamesOk (unsigned depthLevel,
00168                          unsigned& posBad,
00169                          int& notOkDepth) ;
00170 
00171 private:
00172     // Operators,empty
00173     gDirGeneric (gDirGeneric& ) ;
00174     gDirGeneric& operator= (gDirGeneric& ) ;
00175 };
00176 ////////////////////////////////////////////////////////////
00177 class gDir : public gDirGeneric {
00178 public:
00179     gDir (char* dName=nil) ;
00180     gDir (gString& dName) ;
00181     virtual ~gDir () ;
00182 
00183     // Public data-members
00184     gDirStream dirStream;
00185     gList errUnstatL;
00186 
00187     // Get methods
00188     virtual gFileStat* GetStat (unsigned idx) ;
00189     virtual bool GetNameDir (unsigned idx, gString& resName) ;
00190     virtual bool GetFullNameDir (unsigned idx, gString& resName, gString& resFullName) ;
00191 
00192     // Set methods
00193     virtual void AddDir (char* s) ;
00194     virtual void AddFile (char* s) ;
00195 
00196 protected:
00197     int dirCount;
00198 
00199     // Protected methods
00200     int thisScanDir () ;
00201     int thisAddStatName (eFileSystemName aFSysName, char* s, gFileStat& aStat) ;
00202     int thisAddSystemName (gFileSysName* aPtr) ;
00203 
00204 private:
00205     // Operators,empty
00206     gDir (gDir& ) ;
00207     gDir& operator= (gDir& ) ;
00208 };
00209 ////////////////////////////////////////////////////////////
00210 #endif //gDIR_X_H
00211 

Generated on Sat Aug 18 02:40:52 2007 for xpfweb_v2x lib by  doxygen 1.4.2