-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherror.cpp
More file actions
60 lines (54 loc) · 2.9 KB
/
error.cpp
File metadata and controls
60 lines (54 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include "error.h"
Error::Error(ErrorCode code, const QString& details)
: m_code(code), m_details(details) {}
QString Error::toString() const {
return messageTemplate(m_code, m_details);
}
Error::ErrorCode Error::code() const {
return m_code;
}
bool Error::operator==(const Error& other) const
{
return m_code == other.m_code && m_details == other.m_details;
}
QString Error::messageTemplate(ErrorCode code, const QString& details)
{
switch (code) {
case FileNotFound:
return "Неверно указан файл с входными данными. Возможно, файл не существует";
case OutputFileInvalid:
return "Неверно указан файл для выходных данных. Возможно указанного расположения не существует или нет прав на запись.";
case AccordanceEmpty:
return "Входные данные соответствий между русскими и латинскими буквами оказались пустыми";
case InvalidCharInInput:
return QString("Во входном тексте встречен недопустимый символ: “%1”").arg(details);
case AccordanceMissingColon:
return QString("Во входных данных соответствий отсутствует символ ':' в строке “%1”").arg(details);
case AccordanceMissingLeft:
return QString("Не обнаружено соответствие для буквы “%1”").arg(details);
case AccordanceMissingRight:
return QString("Не обнаружено соответствие для буквы “%1”").arg(details);
case AccordanceDuplicate:
return QString("Несколько соответствий для буквы “%1”").arg(details);
case AccordanceInvalidRussian:
return QString("Недопустимая русская буква “%1”").arg(details);
case AccordanceInvalidLatin:
return QString("Недопустимая латинская буква “%1”").arg(details);
case InputTextEmpty:
return "Входной текст оказался пустым";
case TooManyArguments:
return "Указано слишком много аргументов.";
case MissingInputFile:
return "Не указан путь к файлу с входными данными.";
case MissingAccordanceFile:
return "Не указан путь к файлу с соответствиями между буквами.";
case MissingOutputFile:
return "Не указан путь к выходному файлу.";
default:
return "Неизвестная ошибка";
}
}
uint qHash(const Error& error, uint seed)
{
return qHash(static_cast<int>(error.code()), seed) ^ qHash(error.toString(), seed);
}