Directory.h
1/*
2 * Copyright (C) 2006-2008 Marc Boris Duerner
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * As a special exception, you may use this file as part of a free
10 * software library without restriction. Specifically, if other files
11 * instantiate templates or use macros or inline functions from this
12 * file, or you compile this file and link it with other files to
13 * produce an executable, this file does not by itself cause the
14 * resulting executable to be covered by the GNU General Public
15 * License. This exception does not however invalidate any other
16 * reasons why the executable file might be covered by the GNU Library
17 * General Public License.
18 *
19 * This library is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 * Lesser General Public License for more details.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with this library; if not, write to the Free Software
26 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
27 */
28
29#ifndef PT_SYSTEM_DIRECTORY_H
30#define PT_SYSTEM_DIRECTORY_H
31
32#include <Pt/System/Api.h>
33#include <iterator>
34
35namespace Pt {
36
37namespace System {
38
39class Path;
40class FileInfo;
41
80class PT_SYSTEM_API DirectoryIterator
81{
82 public:
83 typedef FileInfo value_type;
84 typedef std::ptrdiff_t difference_type;
85 typedef std::forward_iterator_tag iterator_category;
86 typedef const FileInfo* pointer;
87 typedef const FileInfo& reference;
88
89 public:
92 : _impl(0)
93 { }
94
96 explicit DirectoryIterator(const Path& path);
97
99 explicit DirectoryIterator(const FileInfo& fi);
100
103
106
109
112
114 bool operator==(const DirectoryIterator& it) const
115 { return _impl == it._impl; }
116
118 bool operator!=(const DirectoryIterator& it) const
119 { return _impl != it._impl; }
120
122 const FileInfo& operator*() const;
123
125 const FileInfo* operator->() const;
126
127 private:
129 class DirectoryIteratorImpl* _impl;
130};
131
132} // namespace System
133
134} // namespace Pt
135
136#endif // PT_SYSTEM_DIRECTORY_H
DirectoryIterator & operator++()
Advances the iterator to the next file.
DirectoryIterator(const DirectoryIterator &it)
Copy constructor.
const FileInfo * operator->() const
Returns the file the iterator points at.
const FileInfo & operator*() const
Returns the file the iterator points at.
bool operator!=(const DirectoryIterator &it) const
Inequality comparison.
Definition Directory.h:118
DirectoryIterator(const Path &path)
Constructs with directory path.
DirectoryIterator & operator=(const DirectoryIterator &it)
Assignment operator.
bool operator==(const DirectoryIterator &it) const
Equality comparison.
Definition Directory.h:114
DirectoryIterator()
Default constructor.
Definition Directory.h:91
DirectoryIterator(const FileInfo &fi)
Constructs with directory.
Provides information about a node in the file-system.
Definition FileInfo.h:104
Represents a path in the file-system.
Definition Path.h:48
System programming
Definition Connection.h:26
Core module.
Definition Allocator.h:33