summaryrefslogtreecommitdiff
path: root/src/serialport/qserialportinfo_win.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-08-02 10:32:32 +0200
committerLiang Qi <liang.qi@qt.io>2016-08-02 13:14:05 +0200
commit8fa108de666e815053c6e586f1efabc592ae20a5 (patch)
tree6e9418f38cd884a7a204d7c0e1ec10c871c37346 /src/serialport/qserialportinfo_win.cpp
parentb2dcacddabb5bcfbc031a0681a0e90996092a506 (diff)
parent10967b1443720116744ecfc42fe442681d149c5a (diff)
downloadqtserialport-8fa108de666e815053c6e586f1efabc592ae20a5.tar.gz
Merge remote-tracking branch 'origin/5.7' into dev
Conflicts: .qmake.conf src/serialport/qserialport.cpp Change-Id: I858fec6e426f5fd867b7eda7b1db69a2d447b357
Diffstat (limited to 'src/serialport/qserialportinfo_win.cpp')
-rw-r--r--src/serialport/qserialportinfo_win.cpp33
1 files changed, 11 insertions, 22 deletions
diff --git a/src/serialport/qserialportinfo_win.cpp b/src/serialport/qserialportinfo_win.cpp
index 398666e..1bab3e9 100644
--- a/src/serialport/qserialportinfo_win.cpp
+++ b/src/serialport/qserialportinfo_win.cpp
@@ -187,23 +187,6 @@ static QString devicePortName(HDEVINFO deviceInfoSet, PSP_DEVINFO_DATA deviceInf
return portName;
}
-class SerialPortNameEqualFunctor
-{
-public:
- explicit SerialPortNameEqualFunctor(const QString &serialPortName)
- : m_serialPortName(serialPortName)
- {
- }
-
- bool operator() (const QSerialPortInfo &serialPortInfo) const
- {
- return serialPortInfo.portName() == m_serialPortName;
- }
-
-private:
- const QString &m_serialPortName;
-};
-
static QString deviceDescription(HDEVINFO deviceInfoSet,
PSP_DEVINFO_DATA deviceInfoData)
{
@@ -288,6 +271,15 @@ static QString deviceSerialNumber(QString instanceIdentifier,
return QString();
}
+static bool anyOfPorts(const QList<QSerialPortInfo> &ports, const QString &portName)
+{
+ const auto end = ports.end();
+ auto isPortNamesEquals = [&portName](const QSerialPortInfo &portInfo) {
+ return portInfo.portName() == portName;
+ };
+ return std::find_if(ports.begin(), end, isPortNamesEquals) != end;
+}
+
QList<QSerialPortInfo> QSerialPortInfo::availablePorts()
{
static const struct {
@@ -318,10 +310,8 @@ QList<QSerialPortInfo> QSerialPortInfo::availablePorts()
if (portName.isEmpty() || portName.contains(QLatin1String("LPT")))
continue;
- if (std::find_if(serialPortInfoList.begin(), serialPortInfoList.end(),
- SerialPortNameEqualFunctor(portName)) != serialPortInfoList.end()) {
+ if (anyOfPorts(serialPortInfoList, portName))
continue;
- }
QSerialPortInfoPrivate priv;
@@ -346,8 +336,7 @@ QList<QSerialPortInfo> QSerialPortInfo::availablePorts()
const auto portNames = portNamesFromHardwareDeviceMap();
for (const QString &portName : portNames) {
- if (std::find_if(serialPortInfoList.cbegin(), serialPortInfoList.cend(),
- SerialPortNameEqualFunctor(portName)) == serialPortInfoList.cend()) {
+ if (!anyOfPorts(serialPortInfoList, portName)) {
QSerialPortInfoPrivate priv;
priv.portName = portName;
priv.device = QSerialPortInfoPrivate::portNameToSystemLocation(portName);