mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 04:57:00 -04:00
slightly better error messages when reading an enum value fails: also report the default used
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1464 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# This file contains the keys expected to be in MSE locales
|
||||
# It was automatically generated by tools/locale/locale.pl
|
||||
# Generated on Sun Jan 11 17:40:25 2009
|
||||
# Generated on Mon Aug 2 23:18:19 2010
|
||||
|
||||
action:
|
||||
add control point: 0
|
||||
@@ -84,10 +84,10 @@ button:
|
||||
select all: 0
|
||||
select cards: 0
|
||||
select none: 0
|
||||
spellcheck enabled: 0
|
||||
show: 0
|
||||
show editing hints: 0
|
||||
show lines: 0
|
||||
spellcheck enabled: 0
|
||||
symbol gallery: optional, 0
|
||||
upgrade group: optional, 0
|
||||
upgrade package: 0
|
||||
@@ -137,7 +137,7 @@ error:
|
||||
successful install: optional, 2
|
||||
unable to open output file: 0
|
||||
unable to store file: 0
|
||||
unrecognized value: 1
|
||||
unrecognized value: 2
|
||||
unsupported field type: 1
|
||||
unsupported fill type: 1
|
||||
unsupported format: 1
|
||||
|
||||
@@ -429,14 +429,20 @@ template <> void Reader::handle(FileName& f) {
|
||||
|
||||
// ----------------------------------------------------------------------------- : EnumReader
|
||||
|
||||
String EnumReader::notDoneErrorMessage() const {
|
||||
if (!first) throw InternalError(_("No first value in EnumReader"));
|
||||
return _ERROR_2_("unrecognized value", read, first);
|
||||
}
|
||||
|
||||
void EnumReader::warnIfNotDone(Reader* errors_to) {
|
||||
if (!done) {
|
||||
// warning: unknown value
|
||||
errors_to->warning(_ERROR_1_("unrecognized value", read));
|
||||
errors_to->warning(notDoneErrorMessage());
|
||||
}
|
||||
}
|
||||
|
||||
void EnumReader::errorIfNotDone() {
|
||||
if (!done) {
|
||||
throw ParseError(_ERROR_1_("unrecognized value", read));
|
||||
throw ParseError(notDoneErrorMessage());
|
||||
}
|
||||
}
|
||||
|
||||
+14
-11
@@ -268,18 +268,19 @@ void Reader::handle(IndexMap<K,V>& m) {
|
||||
class EnumReader {
|
||||
public:
|
||||
inline EnumReader(String read)
|
||||
: read(read), first(true), done(false) {}
|
||||
: read(read), first(nullptr), done(false) {}
|
||||
|
||||
/// Handle a possible value for the enum, if the name matches the name in the input
|
||||
template <typename Enum>
|
||||
inline void handle(const Char* name, Enum value, Enum& enum_) {
|
||||
if (!done && read == name) {
|
||||
done = true;
|
||||
first = false;
|
||||
enum_ = value;
|
||||
} else if (first) {
|
||||
first = false;
|
||||
enum_ = value;
|
||||
if (!done) {
|
||||
if (read == name) {
|
||||
done = true;
|
||||
enum_ = value;
|
||||
} else if (!first) {
|
||||
first = name;
|
||||
enum_ = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -288,9 +289,11 @@ class EnumReader {
|
||||
void errorIfNotDone();
|
||||
|
||||
private:
|
||||
String read; ///< The string to match to a value name
|
||||
bool first; ///< Has the first (default) value been matched?
|
||||
bool done; ///< Was anything matched?
|
||||
String read; ///< The string to match to a value name
|
||||
Char const* first; ///< Has the first (default) value been handled? If so, what is its name.
|
||||
bool done; ///< Was anything matched?
|
||||
|
||||
String notDoneErrorMessage() const;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------- : EOF
|
||||
|
||||
Reference in New Issue
Block a user