summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Faure <faure@kde.org>2011-11-05 12:09:54 +0100
committerQt by Nokia <qt-info@nokia.com>2011-11-08 12:09:06 +0100
commit5e26608ae2d724f5e45d9e8667378bf7faf69d8c (patch)
treecedada7bc66ca7fc361a02719e98865f4b5613a3
parent4d398c90fb5f5830f7c060d2a7867ba15f8c39a1 (diff)
Add Q_DECLARE_PRIVATE equivalent for QDir, to be able to subclass it
Apply the same solution to QFileInfo (no public detach(), but a non-inline d_func instead). Change-Id: I31c4c759f44a0649b97f7884b078b174c9c00f22 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/corelib/io/qdir.cpp14
-rw-r--r--src/corelib/io/qdir.h19
-rw-r--r--src/corelib/io/qfileinfo.cpp5
-rw-r--r--src/corelib/io/qfileinfo.h10
-rw-r--r--tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp3
5 files changed, 33 insertions, 18 deletions
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index e7fdc4ad55..32fd81981b 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -508,6 +508,13 @@ inline void QDirPrivate::initFileEngine()
*/
/*!
+ \internal
+*/
+QDir::QDir(QDirPrivate &p) : d_ptr(&p)
+{
+}
+
+/*!
Constructs a QDir pointing to the given directory \a path. If path
is empty the program's working directory, ("."), is used.
@@ -2097,6 +2104,13 @@ void QDir::refresh() const
d->clearFileLists();
}
+/*! \internal
+*/
+QDirPrivate* QDir::d_func()
+{
+ return d_ptr.data();
+}
+
/*!
\internal
diff --git a/src/corelib/io/qdir.h b/src/corelib/io/qdir.h
index de5fb1bf00..822173dfc8 100644
--- a/src/corelib/io/qdir.h
+++ b/src/corelib/io/qdir.h
@@ -57,9 +57,6 @@ class QDirPrivate;
class Q_CORE_EXPORT QDir
{
-protected:
- QSharedDataPointer<QDirPrivate> d_ptr;
-
public:
enum Filter { Dirs = 0x001,
Files = 0x002,
@@ -99,7 +96,7 @@ public:
Reversed = 0x08,
IgnoreCase = 0x10,
DirsLast = 0x20,
- LocaleAware = 0x40,
+ LocaleAware = 0x40,
Type = 0x80,
NoSort = -1
};
@@ -208,6 +205,20 @@ public:
static QString cleanPath(const QString &path);
void refresh() const;
+
+protected:
+ explicit QDir(QDirPrivate &d);
+
+ QSharedDataPointer<QDirPrivate> d_ptr;
+
+private:
+ // Q_DECLARE_PRIVATE equivalent for shared data pointers
+ QDirPrivate* d_func();
+ inline const QDirPrivate* d_func() const
+ {
+ return d_ptr.constData();
+ }
+
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QDir::Filters)
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp
index 7d925f380b..1ea6c8d50a 100644
--- a/src/corelib/io/qfileinfo.cpp
+++ b/src/corelib/io/qfileinfo.cpp
@@ -1275,11 +1275,10 @@ QDateTime QFileInfo::lastRead() const
}
/*! \internal
- Detaches all internal data.
*/
-void QFileInfo::detach()
+QFileInfoPrivate* QFileInfo::d_func()
{
- d_ptr.detach();
+ return d_ptr.data();
}
/*!
diff --git a/src/corelib/io/qfileinfo.h b/src/corelib/io/qfileinfo.h
index ab3d2dc847..ef4573132c 100644
--- a/src/corelib/io/qfileinfo.h
+++ b/src/corelib/io/qfileinfo.h
@@ -132,20 +132,14 @@ public:
QDateTime lastModified() const;
QDateTime lastRead() const;
- void detach();
-
bool caching() const;
void setCaching(bool on);
protected:
QSharedDataPointer<QFileInfoPrivate> d_ptr;
-private:
- inline QFileInfoPrivate* d_func()
- {
- detach();
- return const_cast<QFileInfoPrivate *>(d_ptr.constData());
- }
+private:
+ QFileInfoPrivate* d_func();
inline const QFileInfoPrivate* d_func() const
{
return d_ptr.constData();
diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
index 4fa32b0ef6..8650bc4d1e 100644
--- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
+++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
@@ -1592,9 +1592,6 @@ void tst_QFileInfo::detachingOperations()
QVERIFY(info1.makeAbsolute());
QVERIFY(!info1.caching());
-
- info1.detach();
- QVERIFY(!info1.caching());
}
#if !defined(Q_OS_WINCE)