libshevek

- Main Page
- Classes
- Files

- File List

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