libshevek
src/dir.hh
00001 /* dir.hh - directory access
00002  * Copyright 2006 Bas Wijnen <wijnen@debian.org>
00003  *
00004  * This program is free software: you can redistribute it and/or modify
00005  * it under the terms of the GNU General Public License as published by
00006  * the Free Software Foundation, either version 3 of the License, or
00007  * (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
00016  */
00017 
00018 #ifndef SHEVEK_DIR_HH
00019 #define SHEVEK_DIR_HH
00020 
00021 #include <string>
00022 #include <sys/types.h>
00023 #include <set>
00024 #include <glibmm.h>
00025 
00026 namespace shevek
00027 {
00029   class dir
00030   {
00031   public:
00033     struct file
00034     {
00036       std::string name;
00038       bool is_dir;
00040       uid_t uid;
00042       gid_t gid;
00044       off_t size;
00046       bool operator< (file const &that) const;
00047     };
00049     typedef std::set <file> store;
00051     typedef store::const_iterator const_iterator;
00053     dir ();
00055     dir (std::string const &path);
00057     void load (std::string const &path);
00059     const_iterator begin () const;
00061     const_iterator end () const;
00063     unsigned size () const;
00064   private:
00065     store data;
00066   };
00067 }
00068 
00069 #endif