diff options
author | Liang Qi <liang.qi@qt.io> | 2016-08-02 10:32:32 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-08-02 13:14:05 +0200 |
commit | 8fa108de666e815053c6e586f1efabc592ae20a5 (patch) | |
tree | 6e9418f38cd884a7a204d7c0e1ec10c871c37346 /src/serialport/qserialportinfo_win.cpp | |
parent | b2dcacddabb5bcfbc031a0681a0e90996092a506 (diff) | |
parent | 10967b1443720116744ecfc42fe442681d149c5a (diff) | |
download | qtserialport-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.cpp | 33 |
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); |