1 /*
2  * DQt - D bindings for the Qt Toolkit
3  *
4  * GNU Lesser General Public License Usage
5  * This file may be used under the terms of the GNU Lesser
6  * General Public License version 3 as published by the Free Software
7  * Foundation and appearing in the file LICENSE.LGPL3 included in the
8  * packaging of this file. Please review the following information to
9  * ensure the GNU Lesser General Public License version 3 requirements
10  * will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
11  */
12 module qt.core.diriterator;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.dir;
17 import qt.core.fileinfo;
18 import qt.core.flags;
19 import qt.core.scopedpointer;
20 import qt.core.string;
21 import qt.core.stringlist;
22 import qt.helpers;
23 
24 /// Binding for C++ class [QDirIterator](https://doc.qt.io/qt-6/qdiriterator.html).
25 extern(C++, class) struct /+ Q_CORE_EXPORT +/ QDirIterator
26 {
27 public:
28     enum IteratorFlag {
29         NoIteratorFlags = 0x0,
30         FollowSymlinks = 0x1,
31         Subdirectories = 0x2
32     }
33     /+ Q_DECLARE_FLAGS(IteratorFlags, IteratorFlag) +/
34 alias IteratorFlags = QFlags!(IteratorFlag);
35     this(ref const(QDir) dir, IteratorFlags flags = IteratorFlag.NoIteratorFlags);
36     this(ref const(QString) path,
37                      IteratorFlags flags = IteratorFlag.NoIteratorFlags);
38     this(ref const(QString) path,
39                      QDir.Filters filter,
40                      IteratorFlags flags = IteratorFlag.NoIteratorFlags);
41     this(ref const(QString) path,
42                      ref const(QStringList) nameFilters,
43                      QDir.Filters filters = QDir.Filter.NoFilter,
44                      IteratorFlags flags = IteratorFlag.NoIteratorFlags);
45 
46     ~this();
47 
48     QString next();
49     bool hasNext() const;
50 
51     QString fileName() const;
52     QString filePath() const;
53     QFileInfo fileInfo() const;
54     QString path() const;
55 
56 private:
57     /+ Q_DISABLE_COPY(QDirIterator) +/
58 @disable this(this);
59 /+this(ref const(QDirIterator));+//+ref QDirIterator operator =(ref const(QDirIterator));+/
60     QScopedPointer!(QDirIteratorPrivate) d;
61     /+ friend class QDir; +/
62     mixin(CREATE_CONVENIENCE_WRAPPERS);
63 }
64 /+pragma(inline, true) QFlags!(QDirIterator.IteratorFlags.enum_type) operator |(QDirIterator.IteratorFlags.enum_type f1, QDirIterator.IteratorFlags.enum_type f2)/+noexcept+/{return QFlags!(QDirIterator.IteratorFlags.enum_type)(f1)|f2;}+/
65 /+pragma(inline, true) QFlags!(QDirIterator.IteratorFlags.enum_type) operator |(QDirIterator.IteratorFlags.enum_type f1, QFlags!(QDirIterator.IteratorFlags.enum_type) f2)/+noexcept+/{return f2|f1;}+/
66 /+pragma(inline, true) QFlags!(QDirIterator.IteratorFlags.enum_type) operator &(QDirIterator.IteratorFlags.enum_type f1, QDirIterator.IteratorFlags.enum_type f2)/+noexcept+/{return QFlags!(QDirIterator.IteratorFlags.enum_type)(f1)&f2;}+/
67 /+pragma(inline, true) QFlags!(QDirIterator.IteratorFlags.enum_type) operator &(QDirIterator.IteratorFlags.enum_type f1, QFlags!(QDirIterator.IteratorFlags.enum_type) f2)/+noexcept+/{return f2&f1;}+/
68 /+pragma(inline, true) void operator +(QDirIterator.IteratorFlags.enum_type f1, QDirIterator.IteratorFlags.enum_type f2)/+noexcept+/;+/
69 /+pragma(inline, true) void operator +(QDirIterator.IteratorFlags.enum_type f1, QFlags!(QDirIterator.IteratorFlags.enum_type) f2)/+noexcept+/;+/
70 /+pragma(inline, true) void operator +(int f1, QFlags!(QDirIterator.IteratorFlags.enum_type) f2)/+noexcept+/;+/
71 /+pragma(inline, true) void operator -(QDirIterator.IteratorFlags.enum_type f1, QDirIterator.IteratorFlags.enum_type f2)/+noexcept+/;+/
72 /+pragma(inline, true) void operator -(QDirIterator.IteratorFlags.enum_type f1, QFlags!(QDirIterator.IteratorFlags.enum_type) f2)/+noexcept+/;+/
73 /+pragma(inline, true) void operator -(int f1, QFlags!(QDirIterator.IteratorFlags.enum_type) f2)/+noexcept+/;+/
74 /+pragma(inline, true) QIncompatibleFlag operator |(QDirIterator.IteratorFlags.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
75 /+pragma(inline, true) void operator +(int f1, QDirIterator.IteratorFlags.enum_type f2)/+noexcept+/;+/
76 /+pragma(inline, true) void operator +(QDirIterator.IteratorFlags.enum_type f1, int f2)/+noexcept+/;+/
77 /+pragma(inline, true) void operator -(int f1, QDirIterator.IteratorFlags.enum_type f2)/+noexcept+/;+/
78 /+pragma(inline, true) void operator -(QDirIterator.IteratorFlags.enum_type f1, int f2)/+noexcept+/;+/
79 
80 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QDirIterator::IteratorFlags) +/