File indexing completed on 2024-05-12 04:42:36
0001 /* 0002 SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KPUBLICTRANSPORT_HAFASPARSER_H 0008 #define KPUBLICTRANSPORT_HAFASPARSER_H 0009 0010 #include "hafasbackend.h" 0011 #include "kpublictransport_export.h" 0012 0013 #include <KPublicTransport/Line> 0014 #include <KPublicTransport/Reply> 0015 0016 #include <QString> 0017 0018 #include <span> 0019 #include <vector> 0020 0021 namespace KPublicTransport { 0022 0023 class Location; 0024 0025 /** Common base for the various Hafas response parsers. 0026 * @internal only exported for unit tests 0027 */ 0028 class KPUBLICTRANSPORT_EXPORT HafasParser 0029 { 0030 public: 0031 void setLocationIdentifierTypes(const QString &idType, const QString &standardIdType = {}); 0032 void setLineModeMap(std::span<HafasLineModeMapEntry> modeMap); 0033 void setStandardLocationIdentfierCountries(std::vector<uint8_t> &&uicCountryCodes); 0034 0035 Reply::Error error() const; 0036 QString errorMessage() const; 0037 0038 protected: 0039 HafasParser(); 0040 ~HafasParser(); 0041 0042 void clearErrorState(); 0043 Line::Mode parseLineMode(const QString &modeId) const; 0044 Line::Mode parseLineMode(const QStringView &modeId) const; 0045 Line::Mode parseLineMode(int modeId) const; 0046 0047 void setLocationIdentifier(Location &loc, const QString &id) const; 0048 0049 protected: 0050 mutable QString m_errorMsg; 0051 mutable Reply::Error m_error = Reply::NoError; 0052 0053 private: 0054 Q_DISABLE_COPY(HafasParser) 0055 0056 QString m_locationIdentifierType; 0057 QString m_standardLocationIdentifierType; 0058 std::span<HafasLineModeMapEntry> m_lineModeMap; 0059 std::vector<uint8_t> m_uicCountryCodes; 0060 }; 0061 0062 } 0063 0064 #endif // KPUBLICTRANSPORT_HAFASPARSER_H