| 120 | } |
| 121 | |
| 122 | void Statements::AddEnum(std::shared_ptr<EnumType>& e) |
| 123 | { |
| 124 | if (e == nullptr) |
| 125 | yyerror("Enum is null!"); |
| 126 | if (e->name->empty()) |
| 127 | yyerror("Enum name is invalid!"); |
| 128 | if (!e->body) |
| 129 | yyerror("Enum is empty - " + *e->name.get()); |
| 130 | |
| 131 | // Check for duplicates |
| 132 | auto it = std::find_if(enums.begin(), enums.end(), [&e](auto item)->bool { return *item->name.get() == *e->name.get(); }); |
| 133 | if (it != enums.end()) |
| 134 | yyerror("Duplicate enum name " + *e->name.get()); |
| 135 | |
| 136 | enums.push_back(e); |
| 137 | } |
| 138 | |
| 139 | void Statements::AddFlags(std::shared_ptr<FlagsType>& f) |
| 140 | { |