2 // Written by James Turner, started July 2010.
4 // Copyright (C) 2010 Curtis L. Olson - http://www.flightgear.org/~curt
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Library General Public
8 // License as published by the Free Software Foundation; either
9 // version 2 of the License, or (at your option) any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Library General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software
18 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26 #include <sys/types.h>
28 #include <simgear/compiler.h>
31 #include <simgear/math/sg_types.hxx>
32 #include <simgear/misc/sg_path.hxx>
40 typedef std::vector<SGPath> PathList;
49 * when this directory object is destroyed, remove the corresponding
50 * diretory (and its contents) from the disk. Often used with temporary
51 * directories to ensure they are cleaned up.
53 void setRemoveOnDestroy();
58 * create a temporary directory, using the supplied name
60 static Dir tempDir(const std::string& templ);
62 Dir(const SGPath& path);
63 Dir(const Dir& rel, const SGPath& relPath);
69 NO_DOT_OR_DOTDOT = 1 << 12,
70 INCLUDE_HIDDEN = 1 << 13
73 PathList children(int types = 0, const std::string& nameGlob = "") const;
75 SGPath file(const std::string& name) const;
81 * create the directory (and any parents as required) with the
82 * request mode, or return failure
84 bool create(mode_t mode);
87 * remove the directory.
88 * If recursive is true, contained files and directories are
91 bool remove(bool recursive = false);
94 * Check that the directory at the path exists (and is a directory!)
99 * parent directory, if one exists
103 mutable SGPath _path;
104 bool _removeOnDestroy;
106 } // of namespace simgear
108 #endif // _SG_DIR_HXX