www.pudn.com > λ²Ù×÷.zip > DL.HPP


////////////////////////////////////////////////////////// 
//                                                      // 
//           ******************************             // 
//           ****  Browning's Classes  ****             // 
//           ******************************             // 
//                                                      // 
//                  Class DL_3.Hpp                      // 
//                                                      // 
//       Public Domain           Roy G. Browning        // 
//       December 1989           The Fulcrum's Edge     // 
//                                                      // 
//       Zortech C/C++           version 2.01           // 
//                                                      // 
//       Ztc -o -mti DL_3                               // 
//                                                      // 
//       Initiated               05-01-1989             // 
////////////////////////////////////////////////////////// 
 
////////////////////////////////////////////////////////// 
//                                                      // 
//                   Charity Request                    // 
//                                                      // 
//       If benefit is derived in any fashion from      // 
//       this public code it is requested that a        // 
//       donation be made to a children's charity       // 
//       if sufficient funds are available.             // 
//                                                      // 
////////////////////////////////////////////////////////// 
 
////////////////////////////////////////////////////////// 
//                                                      // 
//                  C++ing How Series                   // 
//                                                      // 
////////////////////////////////////////////////////////// 
 
#include  
#include  
#include  
#include  
#include  
#include  
 
#define MAXFILES 2048 
 
extern "C" { 
            extern int Cmp_FileName(const FIND **p1, 
                                    const FIND **p2); 
            extern int Cmp_FileExt(const FIND **p1, 
                                   const FIND **p2); 
            extern int Cmp_FileDate(const FIND **p1, 
                                    const FIND **p2); 
            extern int Cmp_FileSize(const FIND **p1, 
                                    const FIND **p2); 
           }; 
 
extern void First_Object(); 
extern void Second_Object(); 
extern void Third_Object(); 
extern void Fourth_Object(); 
 
enum logic { 
            error = (-1), 
            false, 
            true 
           }; 
 
enum numbers { 
              minusone = (-1), 
              zero, 
              one, 
              two, 
              three, 
              four, 
              five, 
              six, 
              seven, 
              eight, 
              nine, 
              ten, 
              eleven, 
              twelve 
             }; 
 
// Directory entry attributes 
 
//      FA_RDONLY      0x01 
//      FA_HIDDEN      0x02 
//      FA_SYSTEM      0x04 
//      FA_LABEL       0x08 
//      FA_DIREC       0x10 
//      FA_ARCH        0x20 
 
 
////////////////////////////////////////////////////////// 
//                                                      // 
//                   Class FileList                     // 
//                                                      // 
//       Reads and stores a disk directory in an        // 
//       array of structure pointers.  The default      // 
//       arguments are used if none are specified       // 
//       when the class is created.                     // 
//                                                      // 
//       If `num_files' equals minus one an error       // 
//       occurred.                                      // 
//                                                      // 
//       Element()  returns a reference to the          // 
//                  element number indicated            // 
//                  by the index passed                 // 
//                                                      // 
//       FileName_Match()     returns a pointer to      // 
//                            an index array of         // 
//                            matching directory        // 
//                            FileNames                 // 
//                                                      // 
//       Number()   returns the number of files         // 
//                  listed                              // 
//                                                      // 
//       Print()    prints a formatted directory        // 
//                  listing to the stdout (display)     // 
//                                                      // 
////////////////////////////////////////////////////////// 
 
class FileList { 
 
protected: 
 
     int num_files; 
     int *match_numbers; 
     int match_numbers_allocated; 
 
     FIND **F; 
 
public: 
 
     FileList(const char* name = "*.*", 
              const int attrib = zero); 
 
     ~FileList(); 
 
     FIND& Element(const int i) const { return *F[i]; } 
 
     int* FileName_Match(char* string = NULL) const; 
 
     int Number() const { return num_files; }  
 
     void Print() const; 
}; 
 
////////////////////////////////////////////////////////// 
//                                                      // 
//                   Class FileName                     // 
//                                                      // 
//       "Derived" from FileList which is con-          // 
//       structed prior to sorting the directory        // 
//       listing via File Names.  The default argu-     // 
//       ments are used if none are given.              // 
//                                                      // 
////////////////////////////////////////////////////////// 
 
class FileName : public FileList { 
 
public: 
 
     FileName(const char* = "*.*", const int = zero); 
 
     ~FileName() {} 
}; 
 
////////////////////////////////////////////////////////// 
//                                                      // 
//                   Class FileSize                     // 
//                                                      // 
//       "Derived" from FileList which is con-          // 
//       structed prior to sorting the directory        // 
//       listing via File Size.  The default argu-      // 
//       ments are used if none are given.              // 
//                                                      // 
////////////////////////////////////////////////////////// 
 
class FileSize : public FileList { 
 
public: 
 
     FileSize(const char* = "*.*", const int = zero); 
 
     ~FileSize() {} 
}; 
 
////////////////////////////////////////////////////////// 
//                                                      // 
//                   Class FileDate                     // 
//                                                      // 
//       "Derived" from FileList which is con-          // 
//       structed prior to sorting the directory        // 
//       listing via File Dates.  The default argu-     // 
//       ments are used if none are given.              // 
//                                                      // 
////////////////////////////////////////////////////////// 
 
class FileDate : public FileList { 
 
public: 
 
     FileDate(const char* = "*.*", const int = zero); 
 
     ~FileDate() {} 
}; 
 
////////////////////////////////////////////////////////// 
//                                                      // 
//                   Class FileExt                      // 
//                                                      // 
//       "Derived" from FileList which is con-          // 
//       structed prior to sorting the directory        // 
//       listing via File Extensions.  The default      // 
//       arguments are used if none are given.          // 
//                                                      // 
////////////////////////////////////////////////////////// 
 
class FileExt : public FileList { 
 
public: 
 
     FileExt(const char* = "*.*", const int = zero); 
 
     ~FileExt() {} 
};