cleanup: use std::vector in struct device_table

Since we converted from QString to std::string, let's also use
std::vector instead of QVector. We don't need COW semantics
and all the rigmarole. Let's try to keep Qt data structures
out of the core.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-10-05 10:12:12 +02:00 committed by Dirk Hohndel
parent fd8bd9d5c7
commit 4a50badb57
4 changed files with 9 additions and 9 deletions

View file

@ -213,7 +213,7 @@ bool device::operator<(const device &a) const
return std::tie(deviceId, model) < std::tie(a.deviceId, a.model); return std::tie(deviceId, model) < std::tie(a.deviceId, a.model);
} }
static const device *getDCExact(const QVector<device> &dcs, const divecomputer *dc) static const device *getDCExact(const std::vector<device> &dcs, const divecomputer *dc)
{ {
auto it = std::lower_bound(dcs.begin(), dcs.end(), device{dc->model, dc->deviceid, {}, {}, {}}); auto it = std::lower_bound(dcs.begin(), dcs.end(), device{dc->model, dc->deviceid, {}, {}, {}});
return it != dcs.end() && it->model == dc->model && it->deviceId == dc->deviceid ? &*it : NULL; return it != dcs.end() && it->model == dc->model && it->deviceId == dc->deviceid ? &*it : NULL;
@ -258,7 +258,7 @@ void device::showchanges(const std::string &n, const std::string &s, const std::
qDebug("new firmware version %s for DC model %s deviceId 0x%x", f.c_str(), model.c_str(), deviceId); qDebug("new firmware version %s for DC model %s deviceId 0x%x", f.c_str(), model.c_str(), deviceId);
} }
static void addDC(QVector<device> &dcs, const std::string &m, uint32_t d, const std::string &n, const std::string &s, const std::string &f) static void addDC(std::vector<device> &dcs, const std::string &m, uint32_t d, const std::string &n, const std::string &s, const std::string &f)
{ {
if (m.empty() || d == 0) if (m.empty() || d == 0)
return; return;

View file

@ -26,7 +26,7 @@ const char *get_dc_nickname(const struct divecomputer *dc);
#ifdef __cplusplus #ifdef __cplusplus
#include <string> #include <string>
#include <QVector> #include <vector>
struct device { struct device {
bool operator==(const device &a) const; bool operator==(const device &a) const;
bool operator!=(const device &a) const; bool operator!=(const device &a) const;
@ -41,7 +41,7 @@ struct device {
struct device_table { struct device_table {
// Keep the dive computers in a vector sorted by (model, deviceId) // Keep the dive computers in a vector sorted by (model, deviceId)
QVector<device> devices; std::vector<device> devices;
}; };
extern struct device_table device_table; extern struct device_table device_table;

View file

@ -11,7 +11,7 @@ DiveComputerModel::DiveComputerModel(QObject *parent) : CleanerTableModel(parent
QVariant DiveComputerModel::data(const QModelIndex &index, int role) const QVariant DiveComputerModel::data(const QModelIndex &index, int role) const
{ {
if (index.row() < 0 || index.row() >= dcs.size()) if (index.row() < 0 || index.row() >= (int)dcs.size())
return QVariant(); return QVariant();
const device &node = dcs[index.row()]; const device &node = dcs[index.row()];
@ -55,7 +55,7 @@ Qt::ItemFlags DiveComputerModel::flags(const QModelIndex &index) const
bool DiveComputerModel::setData(const QModelIndex &index, const QVariant &value, int) bool DiveComputerModel::setData(const QModelIndex &index, const QVariant &value, int)
{ {
// We should test if the role == Qt::EditRole // We should test if the role == Qt::EditRole
if (index.row() < 0 || index.row() >= dcs.size()) if (index.row() < 0 || index.row() >= (int)dcs.size())
return false; return false;
device &node = dcs[index.row()]; device &node = dcs[index.row()];
@ -66,10 +66,10 @@ bool DiveComputerModel::setData(const QModelIndex &index, const QVariant &value,
void DiveComputerModel::remove(const QModelIndex &index) void DiveComputerModel::remove(const QModelIndex &index)
{ {
if (index.row() < 0 || index.row() >= dcs.size()) if (index.row() < 0 || index.row() >= (int)dcs.size())
return; return;
beginRemoveRows(QModelIndex(), index.row(), index.row()); beginRemoveRows(QModelIndex(), index.row(), index.row());
dcs.remove(index.row()); dcs.erase(dcs.begin() + index.row());
endRemoveRows(); endRemoveRows();
} }

View file

@ -27,7 +27,7 @@ slots:
void remove(const QModelIndex &index); void remove(const QModelIndex &index);
private: private:
QVector<device> dcs; std::vector<device> dcs;
}; };
class DiveComputerSortedModel : public QSortFilterProxyModel { class DiveComputerSortedModel : public QSortFilterProxyModel {