annotate C++/Directory.cpp @ 232:420b1710355f

Luae: disable optionals, it is not currently ready
author David Demelier <markand@malikania.fr>
date Sun, 22 Jun 2014 16:23:15 +0200
parents 7086e93bc4ea
children d157f4747676
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
198
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * Directory.cpp -- open and read directories
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013 David Demelier <markand@malikania.fr>
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
199
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
17 */
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
18
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
19 #include <sstream>
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
20
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
21 #include "Directory.h"
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
22
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
23 #if defined(_MSC_VER)
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
24 # include <Windows.h>
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
25 #else
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
26 # include <cstring>
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
27 # include <cerrno>
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
28
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
29 # include <sys/types.h>
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
30 # include <dirent.h>
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
31 #endif
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
32
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
33 #if defined(_MSC_VER)
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
34
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
35 namespace {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
36
198
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 std::string systemError()
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 {
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 LPSTR error = nullptr;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 std::string errmsg = "Unknown error";
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 FormatMessageA(
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 NULL,
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 GetLastError(),
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 (LPSTR)&error, 0, NULL);
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 if (error) {
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 errmsg = std::string(error);
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 LocalFree(error);
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 }
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 return errmsg;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 }
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 }
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 void Directory::systemLoad(const std::string &path, int flags)
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 {
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 std::ostringstream oss;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 HANDLE handle;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 WIN32_FIND_DATA fdata;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 oss << path << "\\*";
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 handle = FindFirstFile(oss.str().c_str(), &fdata);
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 if (handle == nullptr)
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 throw std::runtime_error(systemError());
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 do {
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 Entry entry;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 entry.name = fdata.cFileName;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 if ((flags & Directory::NotDot) && entry.name == ".")
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 continue;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 if ((flags & Directory::NotDotDot) && entry.name == "..")
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 continue;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 switch (fdata.dwFileAttributes) {
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 case FILE_ATTRIBUTE_DIRECTORY:
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 entry.type = Dir;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 break;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 case FILE_ATTRIBUTE_NORMAL:
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 entry.type = File;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 break;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 case FILE_ATTRIBUTE_REPARSE_POINT:
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 entry.type = Link;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 break;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 default:
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 break;
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 }
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
93
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 m_list.push_back(entry);
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 } while (FindNextFile(handle, &fdata) != 0);
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 FindClose(handle);
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 }
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 #else
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
199
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
102 void Directory::systemLoad(const std::string &path, int flags)
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
103 {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
104 DIR *dp;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
105 struct dirent *ent;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
106
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
107 if ((dp = opendir(path.c_str())) == nullptr)
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
108 throw std::runtime_error(strerror(errno));
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
109
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
110 while ((ent = readdir(dp)) != nullptr) {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
111 Entry entry;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
112
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
113 entry.name = ent->d_name;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
114 if ((flags & Directory::NotDot) && entry.name == ".")
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
115 continue;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
116 if ((flags & Directory::NotDotDot) && entry.name == "..")
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
117 continue;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
118
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
119 switch (ent->d_type) {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
120 case DT_DIR:
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
121 entry.type = Dir;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
122 break;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
123 case DT_REG:
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
124 entry.type = File;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
125 break;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
126 case DT_LNK:
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
127 entry.type = Link;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
128 break;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
129 default:
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
130 break;
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
131 }
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
132
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
133 m_list.push_back(entry);
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
134 }
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
135
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
136 closedir(dp);
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
137 }
198
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
138
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 #endif
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
140
199
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
141 Directory::Entry::Entry()
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
142 : type(Unknown)
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
143 {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
144 }
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
145
204
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
146 bool operator==(const Directory::Entry &e1, const Directory::Entry &e2)
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
147 {
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
148 return e1.name == e2.name && e1.type == e2.type;
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
149 }
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
150
199
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
151 Directory::Directory()
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
152 {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
153 }
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
154
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
155 Directory::Directory(const std::string &path, int flags)
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
156 {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
157 systemLoad(path, flags);
198
01294ed877f6 Directory: support of Windows complete
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 }
199
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
159
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
160 Directory::List::iterator Directory::begin()
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
161 {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
162 return m_list.begin();
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
163 }
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
164
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
165 Directory::List::const_iterator Directory::cbegin() const
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
166 {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
167 return m_list.cbegin();
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
168 }
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
169
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
170 Directory::List::iterator Directory::end()
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
171 {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
172 return m_list.end();
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
173 }
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
174
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
175 Directory::List::const_iterator Directory::cend() const
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
176 {
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
177 return m_list.cend();
08eb7b00b950 Directory: support for Linux and BSD complete
David Demelier <markand@malikania.fr>
parents: 198
diff changeset
178 }
204
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
179
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
180 int Directory::count() const
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
181 {
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
182 return m_list.size();
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
183 }
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
184
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
185 bool operator==(const Directory &d1, const Directory &d2)
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
186 {
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
187 return d1.m_list == d2.m_list;
7086e93bc4ea Directory: add count() operator== and STL compat
David Demelier <markand@malikania.fr>
parents: 199
diff changeset
188 }