Qt 4.8
qfilesystementry_p.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtCore module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #ifndef QFILESYSTEMENTRY_P_H_INCLUDED
43 #define QFILESYSTEMENTRY_P_H_INCLUDED
44 
45 //
46 // W A R N I N G
47 // -------------
48 //
49 // This file is not part of the Qt API. It exists purely as an
50 // implementation detail. This header file may change from version to
51 // version without notice, or even be removed.
52 //
53 // We mean it.
54 //
55 
56 #include <QtCore/qstring.h>
57 #include <QtCore/qbytearray.h>
58 
59 #if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
60 #define QFILESYSTEMENTRY_NATIVE_PATH_IS_UTF16
61 #endif
62 
64 
66 {
67 public:
68 
69 #ifndef QFILESYSTEMENTRY_NATIVE_PATH_IS_UTF16
70  typedef QByteArray NativePath;
71 #else
73 #endif
74  struct FromNativePath{};
75  struct FromInternalPath{};
76 
78  explicit QFileSystemEntry(const QString &filePath);
79 
80  QFileSystemEntry(const QString &filePath, FromInternalPath dummy);
81  QFileSystemEntry(const NativePath &nativeFilePath, FromNativePath dummy);
82  QFileSystemEntry(const QString &filePath, const NativePath &nativeFilePath);
83 
84  QString filePath() const;
85  QString fileName() const;
86  QString path() const;
87  NativePath nativeFilePath() const;
88  QString baseName() const;
89  QString completeBaseName() const;
90  QString suffix() const;
91  QString completeSuffix() const;
92  bool isAbsolute() const;
93  bool isRelative() const;
94  bool isClean() const;
95 
96 #if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
97  bool isDriveRoot() const;
98 #endif
99  bool isRoot() const;
100 
101  bool isEmpty() const;
102  void clear()
103  {
104  *this = QFileSystemEntry();
105  }
106 
107 private:
108  // creates the QString version out of the bytearray version
109  void resolveFilePath() const;
110  // creates the bytearray version out of the QString version
111  void resolveNativeFilePath() const;
112  // resolves the separator
113  void findLastSeparator() const;
114  // resolves the dots and the separator
115  void findFileNameSeparators() const;
116 
117  mutable QString m_filePath; // always has slashes as separator
118  mutable NativePath m_nativeFilePath; // native encoding and separators
119 
120  mutable qint16 m_lastSeparator; // index in m_filePath of last separator
121  mutable qint16 m_firstDotInFileName; // index after m_filePath for first dot (.)
122  mutable qint16 m_lastDotInFileName; // index after m_firstDotInFileName for last dot (.)
123 };
124 
126 
127 #endif // include guard
void resolveNativeFilePath() const
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
void findLastSeparator() const
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:135
bool isAbsolute() const
The QString class provides a Unicode character string.
Definition: qstring.h:83
NativePath nativeFilePath() const
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
NativePath m_nativeFilePath
short qint16
Definition: qglobal.h:935
QString fileName() const
bool isDriveRoot() const
QString completeBaseName() const
QString baseName() const
void findFileNameSeparators() const
QString filePath() const
bool isRelative() const
QString suffix() const
void resolveFilePath() const
QString completeSuffix() const
QString path() const