Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qdir_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QDIR_P_H
6#define QDIR_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include "qdirlisting.h"
22
23#include <QtCore/qmutex.h>
24
25#include <memory>
26
27QT_BEGIN_NAMESPACE
28
29class QDirPrivate : public QSharedData
30{
31public:
32 enum PathNormalization {
33 DefaultNormalization = 0x00,
34 UrlNormalizationMode = 0x01,
35 RemotePath = 0x02,
36 };
37 Q_DECLARE_FLAGS(PathNormalizations, PathNormalization)
38 Q_FLAGS(PathNormalizations)
39
40 explicit QDirPrivate(const QString &path, const QStringList &nameFilters_ = QStringList(),
41 QDir::SortFlags sort_ = QDir::SortFlags(QDir::Name | QDir::IgnoreCase),
42 QDir::Filters filters_ = QDir::AllEntries);
43
44 explicit QDirPrivate(const QDirPrivate &copy); // Copies everything except mutex and fileEngine
45
46 bool exists() const;
47
48#ifndef QT_BOOTSTRAPPED
49 static QDirListing::IteratorFlags toDirListingFlags(QDir::Filters filters);
50 static bool checkNonDirListingFlags(const QDirListing::DirEntry &dirEntry,
51 QDir::Filters filters);
52
53 void initFileLists(const QDir &dir) const;
54#endif // !QT_BOOTSTRAPPED
55
56 static void sortFileList(QDir::SortFlags, const QFileInfoList &, QStringList *, QFileInfoList *);
57
58 static inline QChar getFilterSepChar(const QString &nameFilter);
59
60 static inline QStringList splitFilters(const QString &nameFilter, QChar sep = {});
61
62
63 void setPath(const QString &path);
64
65 enum MetaDataClearing { KeepMetaData, IncludingMetaData };
66 void clearCache(MetaDataClearing mode);
67
68 QString resolveAbsoluteEntry() const;
69
70 QStringList nameFilters;
71 QDir::SortFlags sort;
72 QDir::Filters filters;
73
74 std::unique_ptr<QAbstractFileEngine> fileEngine;
75
76 QFileSystemEntry dirEntry;
77
78 struct FileCache
79 {
80 QMutex mutex;
81 QStringList files;
82 QFileInfoList fileInfos;
83 std::atomic<bool> fileListsInitialized = false;
84 QFileSystemEntry absoluteDirEntry;
85 QFileSystemMetaData metaData;
86 };
87 mutable FileCache fileCache;
88};
89
90Q_DECLARE_OPERATORS_FOR_FLAGS(QDirPrivate::PathNormalizations)
91
92Q_AUTOTEST_EXPORT bool qt_normalizePathSegments(QString *path, QDirPrivate::PathNormalizations flags);
93
94QT_END_NAMESPACE
95
96#endif
\inmodule QtCore
Definition qdirlisting.h:68
QDirPrivate(const QDirPrivate &copy)
Definition qdir.cpp:105
@ UrlNormalizationMode
Definition qdir_p.h:34
@ RemotePath
Definition qdir_p.h:35
MetaDataClearing
Definition qdir_p.h:65
@ IncludingMetaData
Definition qdir_p.h:65
void clearCache(MetaDataClearing mode)
Definition qdir.cpp:470
void initFileLists(const QDir &dir) const
Definition qdir.cpp:455
bool exists() const
Definition qdir.cpp:122
QString resolveAbsoluteEntry() const
Definition qdir.cpp:178
bool operator()(const QDirSortItem &, const QDirSortItem &) const
Definition qdir.cpp:258
QDirSortItemComparator(QDir::SortFlags flags, QCollator *coll=nullptr)
Definition qdir.cpp:232
int compareStrings(const QString &a, const QString &b, Qt::CaseSensitivity cs) const
Definition qdir.cpp:248
\inmodule QtCore
Definition qmutex.h:346
static void appendIfMatchesNonDirListingFlags(const QDirListing::DirEntry &dirEntry, QDir::Filters filters, QFileInfoList &l)
Definition qdir.cpp:402
static qsizetype rootLength(QStringView name, QDirPrivate::PathNormalizations flags)
Definition qdir.cpp:56
static bool qt_cleanPath(QString *path)
Definition qdir.cpp:2485
bool comparesEqual(const QDir &lhs, const QDir &rhs)
Definition qdir.cpp:1936
static bool treatAsAbsolute(const QString &path)
Definition qdir.cpp:866
static bool checkPermissions(const QDirListing::DirEntry &dirEntry, QDir::Filters filters)
Definition qdir.cpp:364
bool qt_normalizePathSegments(QString *path, QDirPrivate::PathNormalizations flags)
Definition qdir.cpp:2346
static bool checkDotOrDotDot(const QDirListing::DirEntry &dirEntry, QDir::Filters filters)
Definition qdir.cpp:380
Q_AUTOTEST_EXPORT bool qt_normalizePathSegments(QString *path, QDirPrivate::PathNormalizations flags)
Definition qdir.cpp:2346
QFileInfo item
Definition qdir.cpp:220
QString suffix_cache
Definition qdir.cpp:219
QDirSortItem(const QFileInfo &fi, QDir::SortFlags sort)
Definition qdir.cpp:208
QDirSortItem()=default
QString filename_cache
Definition qdir.cpp:218