diff --git a/Parser/Parser.h b/Parser/Parser.h index 8ca9cf97faca934f348de749fc6b7a39a9cdd5a6..ec52388c293aa04add4e898c81d6689ef766a87b 100644 --- a/Parser/Parser.h +++ b/Parser/Parser.h @@ -46,10 +46,10 @@ public: std::map<std::string, std::vector<std::string> > & copt, int member_ValMax) { + if (tag >= 0) _tag = tag; + _member_ValMax = member_ValMax; _fopt.insert(fopt.begin(), fopt.end()); _copt.insert(copt.begin(), copt.end()); - _member_ValMax = member_ValMax; - if (tag >= 0) _tag = tag; return _tag; } @@ -213,10 +213,13 @@ public: int & tag_out, int member_ValMax, bool append = false) { Structs * structs_P = &(*this)[key_namespace]; - if (!append && structs_P->count(key_name)) { - tag_out = (*structs_P)[key_name].getTag(); - return 1; // 1: Error: Redefinition of Struct + if (structs_P->count(key_name)) { + if (!append) { + tag_out = (*structs_P)[key_name].getTag(); + return 1; // 1: Error: Redefinition of Struct + } } + else if (append) append = false; // non-existing Struct tag_out = structs_P->defStruct(key_name, fopt, copt, member_ValMax, append); return 0; // 0: no error }