diff options
Diffstat (limited to 'src/dbus/qdbusutil.cpp')
-rw-r--r-- | src/dbus/qdbusutil.cpp | 58 |
1 files changed, 37 insertions, 21 deletions
diff --git a/src/dbus/qdbusutil.cpp b/src/dbus/qdbusutil.cpp index aababd12e9..28341a71a8 100644 --- a/src/dbus/qdbusutil.cpp +++ b/src/dbus/qdbusutil.cpp @@ -42,6 +42,7 @@ #include "qdbus_symbols_p.h" #include <QtCore/qstringlist.h> +#include <QtCore/qvector.h> #include "qdbusargument.h" #include "qdbusunixfiledescriptor.h" @@ -330,10 +331,10 @@ namespace QDBusUtil /*! \internal - \fn bool QDBusUtil::isValidPartOfObjectPath(const QString &part) + \fn bool QDBusUtil::isValidPartOfObjectPath(const QStringRef &part) See QDBusUtil::isValidObjectPath */ - bool isValidPartOfObjectPath(const QString &part) + bool isValidPartOfObjectPath(const QStringRef &part) { if (part.isEmpty()) return false; // can't be valid if it's empty @@ -347,6 +348,13 @@ namespace QDBusUtil } /*! + \internal + \fn bool QDBusUtil::isValidPartOfObjectPath(const QString &part) + + \overload + */ + + /*! \fn bool QDBusUtil::isValidInterfaceName(const QString &ifaceName) Returns \c true if this is \a ifaceName is a valid interface name. @@ -364,36 +372,35 @@ namespace QDBusUtil if (ifaceName.isEmpty() || ifaceName.length() > DBUS_MAXIMUM_NAME_LENGTH) return false; - QStringList parts = ifaceName.split(QLatin1Char('.')); + const auto parts = ifaceName.splitRef(QLatin1Char('.')); if (parts.count() < 2) return false; // at least two parts - for (int i = 0; i < parts.count(); ++i) - if (!isValidMemberName(parts.at(i))) + for (const QStringRef &part : parts) + if (!isValidMemberName(part)) return false; return true; } /*! - \fn bool QDBusUtil::isValidUniqueConnectionName(const QString &connName) + \fn bool QDBusUtil::isValidUniqueConnectionName(const QStringRef &connName) Returns \c true if \a connName is a valid unique connection name. Unique connection names start with a colon (":") and are followed by a list of dot-separated components composed of ASCII letters, digits, the hyphen or the underscore ("_") character. */ - bool isValidUniqueConnectionName(const QString &connName) + bool isValidUniqueConnectionName(const QStringRef &connName) { if (connName.isEmpty() || connName.length() > DBUS_MAXIMUM_NAME_LENGTH || !connName.startsWith(QLatin1Char(':'))) return false; - QStringList parts = connName.mid(1).split(QLatin1Char('.')); + const auto parts = connName.mid(1).split(QLatin1Char('.')); if (parts.count() < 1) return false; - for (int i = 0; i < parts.count(); ++i) { - const QString &part = parts.at(i); + for (const QStringRef &part : parts) { if (part.isEmpty()) return false; @@ -407,6 +414,12 @@ namespace QDBusUtil } /*! + \fn bool QDBusUtil::isValidUniqueConnectionName(const QString &connName) + + \overload + */ + + /*! \fn bool QDBusUtil::isValidBusName(const QString &busName) Returns \c true if \a busName is a valid bus name. @@ -429,12 +442,11 @@ namespace QDBusUtil if (busName.startsWith(QLatin1Char(':'))) return isValidUniqueConnectionName(busName); - QStringList parts = busName.split(QLatin1Char('.')); + const auto parts = busName.splitRef(QLatin1Char('.')); if (parts.count() < 1) return false; - for (int i = 0; i < parts.count(); ++i) { - const QString &part = parts.at(i); + for (const QStringRef &part : parts) { if (part.isEmpty()) return false; @@ -450,12 +462,12 @@ namespace QDBusUtil } /*! - \fn bool QDBusUtil::isValidMemberName(const QString &memberName) + \fn bool QDBusUtil::isValidMemberName(const QStringRef &memberName) Returns \c true if \a memberName is a valid member name. A valid member name does not exceed 255 characters in length, is not empty, is composed only of ASCII letters, digits and underscores, but does not start with a digit. */ - bool isValidMemberName(const QString &memberName) + bool isValidMemberName(const QStringRef &memberName) { if (memberName.isEmpty() || memberName.length() > DBUS_MAXIMUM_NAME_LENGTH) return false; @@ -470,6 +482,12 @@ namespace QDBusUtil } /*! + \fn bool QDBusUtil::isValidMemberName(const QString &memberName) + + \overload + */ + + /*! \fn bool QDBusUtil::isValidErrorName(const QString &errorName) Returns \c true if \a errorName is a valid error name. Valid error names are valid interface names and vice-versa, so this function is actually an alias for isValidInterfaceName. @@ -501,12 +519,10 @@ namespace QDBusUtil path.endsWith(QLatin1Char('/'))) return false; - QStringList parts = path.split(QLatin1Char('/')); - Q_ASSERT(parts.count() >= 1); - parts.removeFirst(); // it starts with /, so we get an empty first part - - for (int i = 0; i < parts.count(); ++i) - if (!isValidPartOfObjectPath(parts.at(i))) + // it starts with /, so we skip the empty first part + const auto parts = path.midRef(1).split(QLatin1Char('/')); + for (const QStringRef &part : parts) + if (!isValidPartOfObjectPath(part)) return false; return true; |