[WebIDL] Remove some unnecessary specialization for enum types
[WebKit.git] / Source / WebCore / bindings / scripts / test / JS / JSTestStandaloneDictionary.cpp
1 /*
2     This file is part of the WebKit open source project.
3     This file has been generated by generate-bindings.pl. DO NOT MODIFY!
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19 */
20
21 #include "config.h"
22
23 #if ENABLE(Condition1)
24
25 #include "JSTestStandaloneDictionary.h"
26
27 #include <runtime/JSString.h>
28 #include <wtf/NeverDestroyed.h>
29
30 using namespace JSC;
31
32 namespace WebCore {
33
34 template<> DictionaryImplName convertDictionary<DictionaryImplName>(ExecState& state, JSValue value)
35 {
36     VM& vm = state.vm();
37     auto throwScope = DECLARE_THROW_SCOPE(vm);
38     bool isNullOrUndefined = value.isUndefinedOrNull();
39     auto* object = isNullOrUndefined ? nullptr : value.getObject();
40     if (UNLIKELY(!isNullOrUndefined && !object)) {
41         throwTypeError(&state, throwScope);
42         return { };
43     }
44     if (UNLIKELY(object && object->type() == RegExpObjectType)) {
45         throwTypeError(&state, throwScope);
46         return { };
47     }
48     DictionaryImplName result;
49     JSValue boolMemberValue = isNullOrUndefined ? jsUndefined() : object->get(&state, Identifier::fromString(&state, "boolMember"));
50     if (!boolMemberValue.isUndefined()) {
51         result.boolMember = convert<IDLBoolean>(state, boolMemberValue);
52         RETURN_IF_EXCEPTION(throwScope, { });
53     }
54     JSValue enumMemberValue = isNullOrUndefined ? jsUndefined() : object->get(&state, Identifier::fromString(&state, "enumMember"));
55     if (!enumMemberValue.isUndefined()) {
56         result.enumMember = convert<IDLEnumeration<TestStandaloneDictionary::EnumInStandaloneDictionaryFile>>(state, enumMemberValue);
57         RETURN_IF_EXCEPTION(throwScope, { });
58     }
59     JSValue stringMemberValue = isNullOrUndefined ? jsUndefined() : object->get(&state, Identifier::fromString(&state, "stringMember"));
60     if (!stringMemberValue.isUndefined()) {
61         result.stringMember = convert<IDLDOMString>(state, stringMemberValue);
62         RETURN_IF_EXCEPTION(throwScope, { });
63     }
64     return result;
65 }
66
67 template<> JSString* convertEnumerationToJS(ExecState& state, TestStandaloneDictionary::EnumInStandaloneDictionaryFile enumerationValue)
68 {
69     static NeverDestroyed<const String> values[] = {
70         ASCIILiteral("enumValue1"),
71         ASCIILiteral("enumValue2"),
72     };
73     static_assert(static_cast<size_t>(TestStandaloneDictionary::EnumInStandaloneDictionaryFile::EnumValue1) == 0, "TestStandaloneDictionary::EnumInStandaloneDictionaryFile::EnumValue1 is not 0 as expected");
74     static_assert(static_cast<size_t>(TestStandaloneDictionary::EnumInStandaloneDictionaryFile::EnumValue2) == 1, "TestStandaloneDictionary::EnumInStandaloneDictionaryFile::EnumValue2 is not 1 as expected");
75     ASSERT(static_cast<size_t>(enumerationValue) < WTF_ARRAY_LENGTH(values));
76     return jsStringWithCache(&state, values[static_cast<size_t>(enumerationValue)]);
77 }
78
79 template<> std::optional<TestStandaloneDictionary::EnumInStandaloneDictionaryFile> parseEnumeration<TestStandaloneDictionary::EnumInStandaloneDictionaryFile>(ExecState& state, JSValue value)
80 {
81     auto stringValue = value.toWTFString(&state);
82     if (stringValue == "enumValue1")
83         return TestStandaloneDictionary::EnumInStandaloneDictionaryFile::EnumValue1;
84     if (stringValue == "enumValue2")
85         return TestStandaloneDictionary::EnumInStandaloneDictionaryFile::EnumValue2;
86     return std::nullopt;
87 }
88
89 template<> const char* expectedEnumerationValues<TestStandaloneDictionary::EnumInStandaloneDictionaryFile>()
90 {
91     return "\"enumValue1\", \"enumValue2\"";
92 }
93
94 } // namespace WebCore
95
96 #endif // ENABLE(Condition1)