[WebIDL] Remove some unnecessary specialization for enum types
[WebKit.git] / Source / WebCore / bindings / scripts / test / JS / JSTestObj.h
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 #pragma once
22
23 #include "JSDOMConvert.h"
24 #include "JSDOMWrapper.h"
25 #include "TestObj.h"
26 #include <runtime/CallData.h>
27 #include <wtf/NeverDestroyed.h>
28
29 namespace WebCore {
30
31 class JSTestObj : public JSDOMWrapper<TestObj> {
32 public:
33     using Base = JSDOMWrapper<TestObj>;
34     static JSTestObj* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestObj>&& impl)
35     {
36         JSTestObj* ptr = new (NotNull, JSC::allocateCell<JSTestObj>(globalObject->vm().heap)) JSTestObj(structure, *globalObject, WTFMove(impl));
37         ptr->finishCreation(globalObject->vm());
38         return ptr;
39     }
40
41     static JSC::JSObject* createPrototype(JSC::VM&, JSDOMGlobalObject&);
42     static JSC::JSObject* prototype(JSC::VM&, JSDOMGlobalObject&);
43     static TestObj* toWrapped(JSC::VM&, JSC::JSValue);
44     static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
45     static bool getOwnPropertySlotByIndex(JSC::JSObject*, JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
46     static void destroy(JSC::JSCell*);
47
48     DECLARE_INFO;
49
50     static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
51     {
52         return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
53     }
54
55     static JSC::CallType getCallData(JSC::JSCell*, JSC::CallData&);
56
57     static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode = JSC::EnumerationMode());
58     static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
59     static JSC::JSObject* serialize(JSC::ExecState*, JSTestObj* thisObject, JSC::ThrowScope&);
60     mutable JSC::WriteBarrier<JSC::Unknown> m_cachedAttribute1;
61     mutable JSC::WriteBarrier<JSC::Unknown> m_cachedAttribute2;
62     static void visitChildren(JSCell*, JSC::SlotVisitor&);
63
64
65     // Custom attributes
66     JSC::JSValue customAttr(JSC::ExecState&) const;
67     void setCustomAttr(JSC::ExecState&, JSC::JSValue);
68
69     // Custom functions
70     JSC::JSValue customMethod(JSC::ExecState&);
71     JSC::JSValue customMethodWithArgs(JSC::ExecState&);
72     static JSC::JSValue classMethod2(JSC::ExecState&);
73     JSC::JSValue testCustomPromiseFunction(JSC::ExecState&);
74 public:
75     static const unsigned StructureFlags = JSC::HasStaticPropertyTable | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::TypeOfShouldCallGetCallData | Base::StructureFlags;
76 protected:
77     JSTestObj(JSC::Structure*, JSDOMGlobalObject&, Ref<TestObj>&&);
78
79     void finishCreation(JSC::VM&);
80 };
81
82 class JSTestObjOwner : public JSC::WeakHandleOwner {
83 public:
84     virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&);
85     virtual void finalize(JSC::Handle<JSC::Unknown>, void* context);
86 };
87
88 inline JSC::WeakHandleOwner* wrapperOwner(DOMWrapperWorld&, TestObj*)
89 {
90     static NeverDestroyed<JSTestObjOwner> owner;
91     return &owner.get();
92 }
93
94 inline void* wrapperKey(TestObj* wrappableObject)
95 {
96     return wrappableObject;
97 }
98
99 JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestObj&);
100 inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestObj* impl) { return impl ? toJS(state, globalObject, *impl) : JSC::jsNull(); }
101 JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, Ref<TestObj>&&);
102 inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state, JSDOMGlobalObject* globalObject, RefPtr<TestObj>&& impl) { return impl ? toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) : JSC::jsNull(); }
103
104 template<> struct JSDOMWrapperConverterTraits<TestObj> {
105     using WrapperClass = JSTestObj;
106     using ToWrappedReturnType = TestObj*;
107 };
108 template<> JSC::JSString* convertEnumerationToJS(JSC::ExecState&, TestObj::EnumType);
109
110 template<> std::optional<TestObj::EnumType> parseEnumeration<TestObj::EnumType>(JSC::ExecState&, JSC::JSValue);
111 template<> const char* expectedEnumerationValues<TestObj::EnumType>();
112
113 template<> JSC::JSString* convertEnumerationToJS(JSC::ExecState&, TestObj::Optional);
114
115 template<> std::optional<TestObj::Optional> parseEnumeration<TestObj::Optional>(JSC::ExecState&, JSC::JSValue);
116 template<> const char* expectedEnumerationValues<TestObj::Optional>();
117
118 template<> JSC::JSString* convertEnumerationToJS(JSC::ExecState&, AlternateEnumName);
119
120 template<> std::optional<AlternateEnumName> parseEnumeration<AlternateEnumName>(JSC::ExecState&, JSC::JSValue);
121 template<> const char* expectedEnumerationValues<AlternateEnumName>();
122
123 #if ENABLE(Condition1)
124
125 template<> JSC::JSString* convertEnumerationToJS(JSC::ExecState&, TestObj::EnumA);
126
127 template<> std::optional<TestObj::EnumA> parseEnumeration<TestObj::EnumA>(JSC::ExecState&, JSC::JSValue);
128 template<> const char* expectedEnumerationValues<TestObj::EnumA>();
129
130 #endif
131
132 #if ENABLE(Condition1) && ENABLE(Condition2)
133
134 template<> JSC::JSString* convertEnumerationToJS(JSC::ExecState&, TestObj::EnumB);
135
136 template<> std::optional<TestObj::EnumB> parseEnumeration<TestObj::EnumB>(JSC::ExecState&, JSC::JSValue);
137 template<> const char* expectedEnumerationValues<TestObj::EnumB>();
138
139 #endif
140
141 #if ENABLE(Condition1) || ENABLE(Condition2)
142
143 template<> JSC::JSString* convertEnumerationToJS(JSC::ExecState&, TestObj::EnumC);
144
145 template<> std::optional<TestObj::EnumC> parseEnumeration<TestObj::EnumC>(JSC::ExecState&, JSC::JSValue);
146 template<> const char* expectedEnumerationValues<TestObj::EnumC>();
147
148 #endif
149
150 template<> JSC::JSString* convertEnumerationToJS(JSC::ExecState&, TestObj::Kind);
151
152 template<> std::optional<TestObj::Kind> parseEnumeration<TestObj::Kind>(JSC::ExecState&, JSC::JSValue);
153 template<> const char* expectedEnumerationValues<TestObj::Kind>();
154
155 template<> JSC::JSString* convertEnumerationToJS(JSC::ExecState&, TestObj::Size);
156
157 template<> std::optional<TestObj::Size> parseEnumeration<TestObj::Size>(JSC::ExecState&, JSC::JSValue);
158 template<> const char* expectedEnumerationValues<TestObj::Size>();
159
160 template<> JSC::JSString* convertEnumerationToJS(JSC::ExecState&, TestObj::Confidence);
161
162 template<> std::optional<TestObj::Confidence> parseEnumeration<TestObj::Confidence>(JSC::ExecState&, JSC::JSValue);
163 template<> const char* expectedEnumerationValues<TestObj::Confidence>();
164
165 template<> TestObj::Dictionary convertDictionary<TestObj::Dictionary>(JSC::ExecState&, JSC::JSValue);
166
167 JSC::JSObject* convertDictionaryToJS(JSC::ExecState&, JSDOMGlobalObject&, const TestObj::Dictionary&);
168
169 template<> TestObj::DictionaryThatShouldNotTolerateNull convertDictionary<TestObj::DictionaryThatShouldNotTolerateNull>(JSC::ExecState&, JSC::JSValue);
170
171 template<> TestObj::DictionaryThatShouldTolerateNull convertDictionary<TestObj::DictionaryThatShouldTolerateNull>(JSC::ExecState&, JSC::JSValue);
172
173 template<> AlternateDictionaryName convertDictionary<AlternateDictionaryName>(JSC::ExecState&, JSC::JSValue);
174
175 template<> TestObj::ParentDictionary convertDictionary<TestObj::ParentDictionary>(JSC::ExecState&, JSC::JSValue);
176
177 template<> TestObj::ChildDictionary convertDictionary<TestObj::ChildDictionary>(JSC::ExecState&, JSC::JSValue);
178
179 #if ENABLE(Condition1)
180
181 template<> TestObj::ConditionalDictionaryA convertDictionary<TestObj::ConditionalDictionaryA>(JSC::ExecState&, JSC::JSValue);
182
183 #endif
184
185 #if ENABLE(Condition1) && ENABLE(Condition2)
186
187 template<> TestObj::ConditionalDictionaryB convertDictionary<TestObj::ConditionalDictionaryB>(JSC::ExecState&, JSC::JSValue);
188
189 #endif
190
191 #if ENABLE(Condition1) || ENABLE(Condition2)
192
193 template<> TestObj::ConditionalDictionaryC convertDictionary<TestObj::ConditionalDictionaryC>(JSC::ExecState&, JSC::JSValue);
194
195 #endif
196
197
198 } // namespace WebCore