1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 14:27:35 +00:00

LibIDL: Attach extended attributes on enums

This commit is contained in:
stelar7 2023-11-05 01:44:12 +01:00 committed by Andreas Kling
parent ea2b733862
commit 19bf42a7e6
3 changed files with 5 additions and 3 deletions

View file

@ -635,12 +635,13 @@ void Parser::parse_namespace(Interface& interface)
consume_whitespace(); consume_whitespace();
} }
void Parser::parse_enumeration(Interface& interface) void Parser::parse_enumeration(HashMap<DeprecatedString, DeprecatedString> extended_attributes, Interface& interface)
{ {
assert_string("enum"sv); assert_string("enum"sv);
consume_whitespace(); consume_whitespace();
Enumeration enumeration {}; Enumeration enumeration {};
enumeration.extended_attributes = move(extended_attributes);
auto name = lexer.consume_until([](auto ch) { return is_ascii_space(ch); }); auto name = lexer.consume_until([](auto ch) { return is_ascii_space(ch); });
consume_whitespace(); consume_whitespace();
@ -832,7 +833,7 @@ void Parser::parse_non_interface_entities(bool allow_interface, Interface& inter
if (lexer.next_is("dictionary")) { if (lexer.next_is("dictionary")) {
parse_dictionary(interface); parse_dictionary(interface);
} else if (lexer.next_is("enum")) { } else if (lexer.next_is("enum")) {
parse_enumeration(interface); parse_enumeration(extended_attributes, interface);
} else if (lexer.next_is("typedef")) { } else if (lexer.next_is("typedef")) {
parse_typedef(interface); parse_typedef(interface);
} else if (lexer.next_is("interface mixin")) { } else if (lexer.next_is("interface mixin")) {

View file

@ -42,7 +42,7 @@ private:
void parse_interface(Interface&); void parse_interface(Interface&);
void parse_namespace(Interface&); void parse_namespace(Interface&);
void parse_non_interface_entities(bool allow_interface, Interface&); void parse_non_interface_entities(bool allow_interface, Interface&);
void parse_enumeration(Interface&); void parse_enumeration(HashMap<DeprecatedString, DeprecatedString>, Interface&);
void parse_typedef(Interface&); void parse_typedef(Interface&);
void parse_interface_mixin(Interface&); void parse_interface_mixin(Interface&);
void parse_dictionary(Interface&); void parse_dictionary(Interface&);

View file

@ -211,6 +211,7 @@ struct Typedef {
struct Enumeration { struct Enumeration {
OrderedHashTable<DeprecatedString> values; OrderedHashTable<DeprecatedString> values;
OrderedHashMap<DeprecatedString, DeprecatedString> translated_cpp_names; OrderedHashMap<DeprecatedString, DeprecatedString> translated_cpp_names;
HashMap<DeprecatedString, DeprecatedString> extended_attributes;
DeprecatedString first_member; DeprecatedString first_member;
bool is_original_definition { true }; bool is_original_definition { true };
}; };