Ver Fonte

LibIDL: Attach extended attributes on enums

stelar7 há 1 ano atrás
pai
commit
19bf42a7e6

+ 3 - 2
Userland/Libraries/LibIDL/IDLParser.cpp

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

+ 1 - 1
Userland/Libraries/LibIDL/IDLParser.h

@@ -42,7 +42,7 @@ private:
     void parse_interface(Interface&);
     void parse_namespace(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_interface_mixin(Interface&);
     void parse_dictionary(Interface&);

+ 1 - 0
Userland/Libraries/LibIDL/Types.h

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