4#ifndef RECORDDIRECTORY_H
5#define RECORDDIRECTORY_H
14#include <unordered_set>
19class TranslatorMessage;
21using namespace Qt::StringLiterals;
37 return sourceText == mi.sourceText && context == mi.context && comment == mi.comment;
46 if (lhs->lineNo != rhs->lineNo)
47 return lhs->lineNo < rhs->lineNo;
49 return lhs->startOffset < rhs->endOffset;
61 std::size_t h1 = qHash(key.context);
62 std::size_t h2 = qHash(key.sourceText);
63 std::size_t h3 = qHash(key.comment);
64 return h1 ^ (h2 << 1) ^ (h3 << 2);
74 using MsgLocations = QHash<QString, std::set<std::shared_ptr<MessageItem>, MsgPtrComp>>;
75 using ErrorLocations = QHash<QString, QMap<
int, QString>>;
77 void recordMessage(
const TranslatorMessage &msg);
78 QString id(
const TranslatorMessage &msg)
const;
79 void recordExistingId(
const QString &id);
80 void recordError(
const QString &file,
int line,
const QString &error);
81 void recordNonSupported(
const QString &file,
int line) { m_nonSupporteds[file].insert(line); }
82 void recordAddedLines(
const QString &file,
int fromLine,
int addedLines);
83 bool isNonSupported(
const QString &file,
int line)
const
85 return m_nonSupporteds[file].contains(line);
87 int addedLines(
const QString &file,
int line)
const;
88 bool containsFile(
const QString &filename)
const noexcept;
89 const MsgLocations &messageLocations()
const noexcept {
return m_msgLocations; }
90 const ErrorLocations &errors()
const noexcept {
return m_errors; }
91 QString calculateId(
const TranslatorMessage &msg)
const;
95 std::unordered_set<MessageItem> m_messages;
96 MsgLocations m_msgLocations;
97 QHash<QString, QSet<
int>> m_nonSupporteds;
98 ErrorLocations m_errors;
99 std::unordered_map<QString, std::map<
int,
int>> m_fileAddedLines;
100 std::unordered_set<QString> m_existingIds;
void verifySources(const QStringList &sources, ConversionData &cd)
FileVerifier(const RecordDirectory &records, bool quiet)
bool verifyTs(const QString &tsFile, QSet< QString > &transformedIds)
bool operator==(const MessageItem &mi) const noexcept
Combined button and popup list for selecting options.
QStringList readLines(const QString &filename)
void printOut(const QString &out)
void printErr(const QString &out)
void writeLines(const QString &filename, const QStringList &lines)
QString getIndentation(const QString &line)
QMultiHash< QString, QString > getIncludeOptions(const QFileInfo &root, const QStringList &paths)
int main(int argc, char *argv[])
[ctor_close]
bool operator()(const std::shared_ptr< MessageItem > &lhs, const std::shared_ptr< MessageItem > &rhs) const noexcept
std::size_t operator()(const MessageItem &key) const