Show
Ignore:
Timestamp:
12/23/07 14:12:23 (4 years ago)
Author:
rakshasa
Message:

* Refactoring utils::Directory.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/rtorrent/src/utils/directory.h

    r938 r1022  
    3939 
    4040#include <string> 
    41 #include <list> 
     41#include <vector> 
    4242 
    4343namespace utils { 
    4444 
    45 class Directory : private std::list<std::string> { 
     45struct directory_entry { 
     46  // The name and types should match POSIX. 
     47  uint32_t            d_fileno; 
     48  uint16_t            d_reclen; 
     49  uint8_t             d_type; 
     50 
     51  std::string         d_name; 
     52}; 
     53 
     54class Directory : private std::vector<directory_entry> { 
    4655public: 
    47   typedef std::list<std::string> Base; 
     56  typedef std::vector<directory_entry> base_type; 
    4857 
    49   using Base::iterator; 
    50   using Base::const_iterator; 
    51   using Base::reverse_iterator; 
    52   using Base::const_reverse_iterator; 
     58  using base_type::iterator; 
     59  using base_type::const_iterator; 
     60  using base_type::reverse_iterator; 
     61  using base_type::const_reverse_iterator; 
     62  using base_type::value_type; 
    5363 
    54   using Base::begin; 
    55   using Base::end; 
    56   using Base::rbegin; 
    57   using Base::rend; 
     64  using base_type::begin; 
     65  using base_type::end; 
     66  using base_type::rbegin; 
     67  using base_type::rend; 
    5868 
    59   using Base::empty; 
    60   using Base::size; 
     69  using base_type::empty; 
     70  using base_type::size; 
    6171 
    62   using Base::erase; 
     72  using base_type::erase; 
    6373 
    6474  Directory() {} 
     
    6979  bool                update(bool hideDot = true); 
    7080 
     81  // Ergh... 
    7182  const std::string&  get_path() { return m_path; } 
     83  void                set_path(const std::string& path) { m_path = path; } 
    7284 
    7385  // Make a list with full path names. 
    74   Base                make_list(); 
     86  // 
     87  // Fix the uses of this, real bad stuff. 
     88  std::vector<std::string> make_list(); 
    7589 
    7690private: 
     
    7892}; 
    7993 
     94inline bool operator == (const directory_entry& left, const directory_entry& right) { return left.d_name == right.d_name; } 
     95inline bool operator != (const directory_entry& left, const directory_entry& right) { return left.d_name != right.d_name; } 
     96inline bool operator <  (const directory_entry& left, const directory_entry& right) { return left.d_name <  right.d_name; } 
     97inline bool operator >  (const directory_entry& left, const directory_entry& right) { return left.d_name >  right.d_name; } 
     98inline bool operator <= (const directory_entry& left, const directory_entry& right) { return left.d_name <= right.d_name; } 
     99inline bool operator >= (const directory_entry& left, const directory_entry& right) { return left.d_name >= right.d_name; } 
     100 
    80101} 
    81102