libshevek
dir.hh
1 /* dir.hh - directory access
2  * Copyright 2006 Bas Wijnen <wijnen@debian.org>
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef SHEVEK_DIR_HH
19 #define SHEVEK_DIR_HH
20 
21 #include <string>
22 #include <sys/types.h>
23 #include <set>
24 #include <glibmm.h>
25 
26 namespace shevek
27 {
29  class dir
30  {
31  public:
33  struct file
34  {
36  std::string name;
38  bool is_dir;
40  uid_t uid;
42  gid_t gid;
44  off_t size;
46  bool operator< (file const &that) const;
47  };
49  typedef std::set <file> store;
51  typedef store::const_iterator const_iterator;
53  dir ();
55  dir (std::string const &path);
57  void load (std::string const &path);
59  const_iterator begin () const;
61  const_iterator end () const;
63  unsigned size () const;
64  private:
65  store data;
66  };
67 }
68 
69 #endif