Utils: Make CommandLine related operators hidden friends

Change-Id: Ifb81bb565f7343739883c06817f3e304bdc5b963
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
hjk
2023-01-06 12:59:42 +01:00
parent bee489f9e2
commit 1874906ce1
2 changed files with 21 additions and 19 deletions

View File

@@ -13,13 +13,6 @@
#include <QRegularExpression>
#include <QStack>
QT_BEGIN_NAMESPACE
QDebug operator<<(QDebug dbg, const Utils::CommandLine &cmd)
{
return dbg << cmd.toUserOutput();
}
QT_END_NAMESPACE
// The main state of the Unix shell parser
enum MxQuoting { MxBasic, MxSingleQuote, MxDoubleQuote, MxParen, MxSubst, MxGroup, MxMath };
@@ -1531,4 +1524,14 @@ QStringList CommandLine::splitArguments() const
return ProcessArgs::splitArgs(m_arguments, m_executable.osType());
}
} // namespace Utils
QTCREATOR_UTILS_EXPORT bool operator==(const CommandLine &first, const CommandLine &second)
{
return first.m_executable == second.m_executable && first.m_arguments == second.m_arguments;
}
QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug dbg, const CommandLine &cmd)
{
return dbg << cmd.toUserOutput();
}
} // Utils

View File

@@ -64,7 +64,8 @@ public:
* Assumes that the name of the actual command is *not* part of the line.
* Terminates after the first command if the command line is complex.
*/
class QTCREATOR_UTILS_EXPORT ArgIterator {
class QTCREATOR_UTILS_EXPORT ArgIterator
{
public:
ArgIterator(QString *str, OsType osType = HostOsInfo::hostOs())
: m_str(str), m_osType(osType)
@@ -80,6 +81,7 @@ public:
//! Insert argument into the command line after the last one fetched via next().
//! This may be used before the first call to next() to insert at the front.
void appendArg(const QString &str);
private:
QString *m_str, m_value;
int m_pos = 0;
@@ -88,7 +90,8 @@ public:
OsType m_osType;
};
class QTCREATOR_UTILS_EXPORT ConstArgIterator {
class QTCREATOR_UTILS_EXPORT ConstArgIterator
{
public:
ConstArgIterator(const QString &str, OsType osType = HostOsInfo::hostOs())
: m_str(str), m_ait(&m_str, osType)
@@ -96,6 +99,7 @@ public:
bool next() { return m_ait.next(); }
bool isSimple() const { return m_ait.isSimple(); }
QString value() const { return m_ait.value(); }
private:
QString m_str;
ArgIterator m_ait;
@@ -148,19 +152,14 @@ public:
bool isEmpty() const { return m_executable.isEmpty(); }
friend bool operator==(const CommandLine &first, const CommandLine &second) {
return first.m_executable == second.m_executable && first.m_arguments == second.m_arguments;
}
private:
friend QTCREATOR_UTILS_EXPORT bool operator==(const CommandLine &first, const CommandLine &second);
friend QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug dbg, const CommandLine &cmd);
FilePath m_executable;
QString m_arguments;
};
} // namespace Utils
QT_BEGIN_NAMESPACE
QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug dbg, const Utils::CommandLine &cmd);
QT_END_NAMESPACE
} // Utils
Q_DECLARE_METATYPE(Utils::CommandLine)