diff --git a/src/map/ENC/iso8211.cpp b/src/map/ENC/iso8211.cpp index 5ee607de..1d1662f6 100644 --- a/src/map/ENC/iso8211.cpp +++ b/src/map/ENC/iso8211.cpp @@ -298,11 +298,11 @@ bool ISO8211::readRecord(Record &record) return true; } -const ISO8211::Field *ISO8211::field(const Record &record, quint32 name) +const ISO8211::Field *ISO8211::Record::field(quint32 name) const { - for (int i = 0; i < record.size(); i++) - if (record.at(i).tag() == name) - return &record.at(i); + for (int i = 0; i < size(); i++) + if (at(i).tag() == name) + return &at(i); return 0; } diff --git a/src/map/ENC/iso8211.h b/src/map/ENC/iso8211.h index 992f7846..7588836a 100644 --- a/src/map/ENC/iso8211.h +++ b/src/map/ENC/iso8211.h @@ -26,14 +26,17 @@ public: Data _data; }; - typedef QVector Record; + class Record : public QVector + { + public: + const Field *field(quint32 name) const; + }; ISO8211(const QString &path) : _file(path) {} bool readDDR(); bool readRecord(Record &record); const QString &errorString() const {return _errorString;} - static const Field *field(const Record &record, quint32 name); static constexpr quint32 NAME(const char str[4]) { return static_cast(str[0]) diff --git a/src/map/ENC/mapdata.cpp b/src/map/ENC/mapdata.cpp index 7c4af56c..98292d35 100644 --- a/src/map/ENC/mapdata.cpp +++ b/src/map/ENC/mapdata.cpp @@ -151,9 +151,9 @@ static const ISO8211::Field *SGXD(const ISO8211::Record &r) { const ISO8211::Field *f; - if ((f = ISO8211::field(r, SG2D))) + if ((f = r.field(SG2D))) return f; - else if ((f = ISO8211::field(r, SG3D))) + else if ((f = r.field(SG3D))) return f; else return 0; @@ -495,7 +495,7 @@ QVector MapData::soundings(const ISO8211::Record &r, uint comf, uint somf) { QVector s; - const ISO8211::Field *f = ISO8211::field(r, SG3D); + const ISO8211::Field *f = r.field(SG3D); if (!f) return QVector(); @@ -517,7 +517,7 @@ QVector MapData::soundingGeometry(const ISO8211::Record &r, quint32 id; RecordMapIterator it; - const ISO8211::Field *fspt = ISO8211::field(r, FSPT); + const ISO8211::Field *fspt = r.field(FSPT); if (!fspt || fspt->data().at(0).size() != 4) return QVector(); @@ -545,7 +545,7 @@ Coordinates MapData::pointGeometry(const ISO8211::Record &r, quint32 id; RecordMapIterator it; - const ISO8211::Field *fspt = ISO8211::field(r, FSPT); + const ISO8211::Field *fspt = r.field(FSPT); if (!fspt || fspt->data().at(0).size() != 4) return Coordinates(); @@ -575,7 +575,7 @@ QVector MapData::lineGeometry(const ISO8211::Record &r, quint8 type; quint32 id; - const ISO8211::Field *fspt = ISO8211::field(r, FSPT); + const ISO8211::Field *fspt = r.field(FSPT); if (!fspt || fspt->data().at(0).size() != 4) return QVector(); @@ -588,7 +588,7 @@ QVector MapData::lineGeometry(const ISO8211::Record &r, if (it == ve.constEnd()) return QVector(); const ISO8211::Record &frid = it.value(); - const ISO8211::Field *vrpt = ISO8211::field(frid, VRPT); + const ISO8211::Field *vrpt = frid.field(VRPT); if (!vrpt || vrpt->data().size() != 2) return QVector(); @@ -641,7 +641,7 @@ Polygon MapData::polyGeometry(const ISO8211::Record &r, const RecordMap &vc, quint8 type; quint32 id; - const ISO8211::Field *fspt = ISO8211::field(r, FSPT); + const ISO8211::Field *fspt = r.field(FSPT); if (!fspt || fspt->data().at(0).size() != 4) return Polygon(); @@ -660,7 +660,7 @@ Polygon MapData::polyGeometry(const ISO8211::Record &r, const RecordMap &vc, if (it == ve.constEnd()) return Polygon(); const ISO8211::Record &frid = it.value(); - const ISO8211::Field *vrpt = ISO8211::field(frid, VRPT); + const ISO8211::Field *vrpt = frid.field(VRPT); if (!vrpt || vrpt->data().size() != 2) return Polygon(); @@ -723,7 +723,7 @@ MapData::Attributes MapData::attributes(const ISO8211::Record &r) { Attributes attr; - const ISO8211::Field *attf = ISO8211::field(r, ATTF); + const ISO8211::Field *attf = r.field(ATTF); if (!(attf && attf->data().at(0).size() == 2)) return attr; diff --git a/src/map/encmap.cpp b/src/map/encmap.cpp index 1e1cd922..3d3a47d8 100644 --- a/src/map/encmap.cpp +++ b/src/map/encmap.cpp @@ -63,9 +63,9 @@ static const ISO8211::Field *SGXD(const ISO8211::Record &r) { const ISO8211::Field *f; - if ((f = ISO8211::field(r, SG2D))) + if ((f = r.field(SG2D))) return f; - else if ((f = ISO8211::field(r, SG3D))) + else if ((f = r.field(SG3D))) return f; else return 0;