a189bb9354b3d44497fbeff156a9e8a10ba6f574
[WebKit-https.git] / Source / JavaScriptCore / inspector / scripts / tests / expected / type-requiring-runtime-casts.json-result
1 ### Begin File: InspectorTestBackendCommands.js
2 /*
3  * Copyright (C) 2013 Google Inc. All rights reserved.
4  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
5  * Copyright (C) 2014 University of Washington. All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26  * THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 // DO NOT EDIT THIS FILE. It is automatically generated from type-requiring-runtime-casts.json
30 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
31
32 // Test.
33 InspectorBackend.registerEnum("Test.UncastedAnimals", {Pigs: "Pigs", Cows: "Cows", Cats: "Cats", Hens: "Hens"});
34 InspectorBackend.registerEnum("Test.CastedAnimals", {Ducks: "Ducks", Hens: "Hens", Crows: "Crows", Flamingos: "Flamingos"});
35 ### End File: InspectorTestBackendCommands.js
36
37 ### Begin File: InspectorTestBackendDispatchers.h
38 /*
39  * Copyright (C) 2013 Google Inc. All rights reserved.
40  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
41  * Copyright (C) 2014 University of Washington. All rights reserved.
42  *
43  * Redistribution and use in source and binary forms, with or without
44  * modification, are permitted provided that the following conditions
45  * are met:
46  * 1. Redistributions of source code must retain the above copyright
47  *    notice, this list of conditions and the following disclaimer.
48  * 2. Redistributions in binary form must reproduce the above copyright
49  *    notice, this list of conditions and the following disclaimer in the
50  *    documentation and/or other materials provided with the distribution.
51  *
52  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
53  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
54  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
55  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
56  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
57  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
58  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
59  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
60  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
61  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
62  * THE POSSIBILITY OF SUCH DAMAGE.
63  */
64
65 // DO NOT EDIT THIS FILE. It is automatically generated from type-requiring-runtime-casts.json
66 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
67
68 #ifndef InspectorTestBackendDispatchers_h
69 #define InspectorTestBackendDispatchers_h
70
71 #if ENABLE(INSPECTOR)
72
73 #include "InspectorTestProtocolTypes.h"
74 #include <inspector/InspectorBackendDispatcher.h>
75 #include <wtf/PassRefPtr.h>
76 #include <wtf/text/WTFString.h>
77
78 namespace Inspector {
79
80 typedef String ErrorString;
81
82 } // namespace Inspector
83
84 #endif // ENABLE(INSPECTOR)
85
86 #endif // !defined(InspectorTestBackendDispatchers_h)
87 ### End File: InspectorTestBackendDispatchers.h
88
89 ### Begin File: InspectorTestBackendDispatchers.cpp
90 /*
91  * Copyright (C) 2013 Google Inc. All rights reserved.
92  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
93  * Copyright (C) 2014 University of Washington. All rights reserved.
94  *
95  * Redistribution and use in source and binary forms, with or without
96  * modification, are permitted provided that the following conditions
97  * are met:
98  * 1. Redistributions of source code must retain the above copyright
99  *    notice, this list of conditions and the following disclaimer.
100  * 2. Redistributions in binary form must reproduce the above copyright
101  *    notice, this list of conditions and the following disclaimer in the
102  *    documentation and/or other materials provided with the distribution.
103  *
104  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
105  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
106  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
107  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
108  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
109  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
110  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
111  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
112  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
113  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
114  * THE POSSIBILITY OF SUCH DAMAGE.
115  */
116
117 // DO NOT EDIT THIS FILE. It is automatically generated from type-requiring-runtime-casts.json
118 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
119
120 #include "config.h"
121 #include "InspectorTestBackendDispatchers.h"
122
123 #if ENABLE(INSPECTOR)
124
125 #include <inspector/InspectorFrontendChannel.h>
126 #include <inspector/InspectorValues.h>
127 #include <wtf/text/CString.h>
128
129 namespace Inspector {
130
131
132
133 } // namespace Inspector
134
135 #endif // ENABLE(INSPECTOR)
136
137 ### End File: InspectorTestBackendDispatchers.cpp
138
139 ### Begin File: InspectorTestFrontendDispatchers.h
140 /*
141  * Copyright (C) 2013 Google Inc. All rights reserved.
142  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
143  * Copyright (C) 2014 University of Washington. All rights reserved.
144  *
145  * Redistribution and use in source and binary forms, with or without
146  * modification, are permitted provided that the following conditions
147  * are met:
148  * 1. Redistributions of source code must retain the above copyright
149  *    notice, this list of conditions and the following disclaimer.
150  * 2. Redistributions in binary form must reproduce the above copyright
151  *    notice, this list of conditions and the following disclaimer in the
152  *    documentation and/or other materials provided with the distribution.
153  *
154  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
155  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
156  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
157  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
158  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
159  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
160  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
161  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
162  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
163  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
164  * THE POSSIBILITY OF SUCH DAMAGE.
165  */
166
167 // DO NOT EDIT THIS FILE. It is automatically generated from type-requiring-runtime-casts.json
168 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
169
170 #ifndef InspectorTestFrontendDispatchers_h
171 #define InspectorTestFrontendDispatchers_h
172
173 #if ENABLE(INSPECTOR)
174
175 #include "InspectorTestProtocolTypes.h"
176 #include <inspector/InspectorFrontendChannel.h>
177 #include <inspector/InspectorValues.h>
178 #include <wtf/PassRefPtr.h>
179 #include <wtf/text/WTFString.h>
180
181 namespace Inspector {
182
183
184
185 } // namespace Inspector
186
187 #endif // ENABLE(INSPECTOR)
188
189 #endif // !defined(InspectorTestFrontendDispatchers_h)
190 ### End File: InspectorTestFrontendDispatchers.h
191
192 ### Begin File: InspectorTestFrontendDispatchers.cpp
193 /*
194  * Copyright (C) 2013 Google Inc. All rights reserved.
195  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
196  * Copyright (C) 2014 University of Washington. All rights reserved.
197  *
198  * Redistribution and use in source and binary forms, with or without
199  * modification, are permitted provided that the following conditions
200  * are met:
201  * 1. Redistributions of source code must retain the above copyright
202  *    notice, this list of conditions and the following disclaimer.
203  * 2. Redistributions in binary form must reproduce the above copyright
204  *    notice, this list of conditions and the following disclaimer in the
205  *    documentation and/or other materials provided with the distribution.
206  *
207  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
208  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
209  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
210  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
211  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
212  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
213  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
214  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
215  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
216  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
217  * THE POSSIBILITY OF SUCH DAMAGE.
218  */
219
220 // DO NOT EDIT THIS FILE. It is automatically generated from type-requiring-runtime-casts.json
221 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
222
223 #include "config.h"
224 #include "InspectorTestFrontendDispatchers.h"
225
226 #if ENABLE(INSPECTOR)
227
228 #include <wtf/text/CString.h>
229
230 namespace Inspector {
231
232 } // namespace Inspector
233
234 #endif // ENABLE(INSPECTOR)
235
236 ### End File: InspectorTestFrontendDispatchers.cpp
237
238 ### Begin File: InspectorTestProtocolTypes.h
239 /*
240  * Copyright (C) 2013 Google Inc. All rights reserved.
241  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
242  * Copyright (C) 2014 University of Washington. All rights reserved.
243  *
244  * Redistribution and use in source and binary forms, with or without
245  * modification, are permitted provided that the following conditions
246  * are met:
247  * 1. Redistributions of source code must retain the above copyright
248  *    notice, this list of conditions and the following disclaimer.
249  * 2. Redistributions in binary form must reproduce the above copyright
250  *    notice, this list of conditions and the following disclaimer in the
251  *    documentation and/or other materials provided with the distribution.
252  *
253  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
254  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
255  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
256  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
257  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
258  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
259  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
260  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
261  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
262  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
263  * THE POSSIBILITY OF SUCH DAMAGE.
264  */
265
266 // DO NOT EDIT THIS FILE. It is automatically generated from type-requiring-runtime-casts.json
267 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
268
269 #ifndef InspectorTestProtocolTypes_h
270 #define InspectorTestProtocolTypes_h
271
272 #if ENABLE(INSPECTOR)
273
274 #include <inspector/InspectorJSProtocolTypes.h>
275 #include <inspector/InspectorProtocolTypes.h>
276 #include <wtf/Assertions.h>
277 #include <wtf/PassRefPtr.h>
278
279 namespace Inspector {
280
281
282
283 namespace Protocol {
284
285 // Forward declarations.
286 namespace Test {
287 class RecursiveObject1;
288 class RecursiveObject2;
289 class TypeNeedingCast;
290 enum class CastedAnimals;
291 enum class UncastedAnimals;
292 } // Test
293 // End of forward declarations.
294
295
296 // Typedefs.
297 namespace Test {
298 typedef int CastedObjectId;
299
300 typedef int UncastedObjectId;
301 } // Test
302 // End of typedefs.
303
304 String getTestEnumConstantValue(int code);
305
306 template<typename T> String getTestEnumConstantValue(T enumValue)
307 {
308     return getTestEnumConstantValue(static_cast<int>(enumValue));
309 }
310
311 namespace Test {
312 /* A dummy type that requires runtime casts, and forces non-primitive referenced types to also emit runtime cast helpers. */
313 class TypeNeedingCast : public Inspector::InspectorObjectBase {
314 public:
315     enum {
316         NoFieldsSet = 0,
317         StringSet = 1 << 0,
318         NumberSet = 1 << 1,
319         AnimalsSet = 1 << 2,
320         IdSet = 1 << 3,
321         TreeSet = 1 << 4,
322         AllFieldsSet = (StringSet | NumberSet | AnimalsSet | IdSet | TreeSet)
323     };
324
325     template<int STATE>
326     class Builder {
327     private:
328         RefPtr<Inspector::InspectorObject> m_result;
329
330         template<int STEP> Builder<STATE | STEP>& castState()
331         {
332             return *reinterpret_cast<Builder<STATE | STEP>*>(this);
333         }
334
335         Builder(PassRefPtr</*TypeNeedingCast*/Inspector::InspectorObject> ptr)
336         {
337             COMPILE_ASSERT(STATE == NoFieldsSet, builder_created_in_non_init_state);
338             m_result = ptr;
339         }
340         friend class TypeNeedingCast;
341     public:
342
343         Builder<STATE | StringSet>& setString(const String& value)
344         {
345             COMPILE_ASSERT(!(STATE & StringSet), property_string_already_set);
346             m_result->setString(ASCIILiteral("string"), value);
347             return castState<StringSet>();
348         }
349
350         Builder<STATE | NumberSet>& setNumber(int value)
351         {
352             COMPILE_ASSERT(!(STATE & NumberSet), property_number_already_set);
353             m_result->setInteger(ASCIILiteral("number"), value);
354             return castState<NumberSet>();
355         }
356
357         Builder<STATE | AnimalsSet>& setAnimals(Inspector::Protocol::Test::CastedAnimals value)
358         {
359             COMPILE_ASSERT(!(STATE & AnimalsSet), property_animals_already_set);
360             m_result->setString(ASCIILiteral("animals"), Inspector::Protocol::getTestEnumConstantValue(static_cast<int>(value)));
361             return castState<AnimalsSet>();
362         }
363
364         Builder<STATE | IdSet>& setId(int value)
365         {
366             COMPILE_ASSERT(!(STATE & IdSet), property_id_already_set);
367             m_result->setInteger(ASCIILiteral("id"), value);
368             return castState<IdSet>();
369         }
370
371         Builder<STATE | TreeSet>& setTree(PassRefPtr<Inspector::Protocol::Test::RecursiveObject1> value)
372         {
373             COMPILE_ASSERT(!(STATE & TreeSet), property_tree_already_set);
374             m_result->setObject(ASCIILiteral("tree"), value);
375             return castState<TreeSet>();
376         }
377
378         operator RefPtr<TypeNeedingCast>& ()
379         {
380             COMPILE_ASSERT(STATE == AllFieldsSet, result_is_not_ready);
381             COMPILE_ASSERT(sizeof(TypeNeedingCast) == sizeof(Inspector::InspectorObject), cannot_cast);
382             return *reinterpret_cast<RefPtr<TypeNeedingCast>*>(&m_result);
383         }
384
385         PassRefPtr<TypeNeedingCast> release()
386         {
387             return RefPtr<TypeNeedingCast>(*this).release();
388         }
389     };
390
391     /*
392      * Synthetic constructor:
393      * RefPtr<TypeNeedingCast> result = TypeNeedingCast::create()
394      *     .setString(...)
395      *     .setNumber(...)
396      *     .setAnimals(...)
397      *     .setId(...)
398      *     .setTree(...);
399      */
400     static Builder<NoFieldsSet> create()
401     {
402         return Builder<NoFieldsSet>(Inspector::InspectorObject::create());
403     }
404     typedef Inspector::Protocol::StructItemTraits ItemTraits;
405 };
406
407 /*  */
408 enum class UncastedAnimals {
409     Pigs = 4,
410     Cows = 5,
411     Cats = 6,
412     Hens = 1,
413 }; // enum class UncastedAnimals
414 /*  */
415 enum class CastedAnimals {
416     Ducks = 0,
417     Hens = 1,
418     Crows = 2,
419     Flamingos = 3,
420 }; // enum class CastedAnimals
421 class RecursiveObject1 : public Inspector::InspectorObjectBase {
422 public:
423     enum {
424         NoFieldsSet = 0,
425         AllFieldsSet = 0
426     };
427
428     template<int STATE>
429     class Builder {
430     private:
431         RefPtr<Inspector::InspectorObject> m_result;
432
433         template<int STEP> Builder<STATE | STEP>& castState()
434         {
435             return *reinterpret_cast<Builder<STATE | STEP>*>(this);
436         }
437
438         Builder(PassRefPtr</*RecursiveObject1*/Inspector::InspectorObject> ptr)
439         {
440             COMPILE_ASSERT(STATE == NoFieldsSet, builder_created_in_non_init_state);
441             m_result = ptr;
442         }
443         friend class RecursiveObject1;
444     public:
445
446         operator RefPtr<RecursiveObject1>& ()
447         {
448             COMPILE_ASSERT(STATE == AllFieldsSet, result_is_not_ready);
449             COMPILE_ASSERT(sizeof(RecursiveObject1) == sizeof(Inspector::InspectorObject), cannot_cast);
450             return *reinterpret_cast<RefPtr<RecursiveObject1>*>(&m_result);
451         }
452
453         PassRefPtr<RecursiveObject1> release()
454         {
455             return RefPtr<RecursiveObject1>(*this).release();
456         }
457     };
458
459     /*
460      * Synthetic constructor:
461      * RefPtr<RecursiveObject1> result = RecursiveObject1::create();
462      */
463     static Builder<NoFieldsSet> create()
464     {
465         return Builder<NoFieldsSet>(Inspector::InspectorObject::create());
466     }
467     typedef Inspector::Protocol::StructItemTraits ItemTraits;
468
469     void setObj(PassRefPtr<Inspector::Protocol::Test::RecursiveObject2> value)
470     {
471         InspectorObjectBase::setObject(ASCIILiteral("obj"), value);
472     }
473 };
474
475 class RecursiveObject2 : public Inspector::InspectorObjectBase {
476 public:
477     enum {
478         NoFieldsSet = 0,
479         AllFieldsSet = 0
480     };
481
482     template<int STATE>
483     class Builder {
484     private:
485         RefPtr<Inspector::InspectorObject> m_result;
486
487         template<int STEP> Builder<STATE | STEP>& castState()
488         {
489             return *reinterpret_cast<Builder<STATE | STEP>*>(this);
490         }
491
492         Builder(PassRefPtr</*RecursiveObject2*/Inspector::InspectorObject> ptr)
493         {
494             COMPILE_ASSERT(STATE == NoFieldsSet, builder_created_in_non_init_state);
495             m_result = ptr;
496         }
497         friend class RecursiveObject2;
498     public:
499
500         operator RefPtr<RecursiveObject2>& ()
501         {
502             COMPILE_ASSERT(STATE == AllFieldsSet, result_is_not_ready);
503             COMPILE_ASSERT(sizeof(RecursiveObject2) == sizeof(Inspector::InspectorObject), cannot_cast);
504             return *reinterpret_cast<RefPtr<RecursiveObject2>*>(&m_result);
505         }
506
507         PassRefPtr<RecursiveObject2> release()
508         {
509             return RefPtr<RecursiveObject2>(*this).release();
510         }
511     };
512
513     /*
514      * Synthetic constructor:
515      * RefPtr<RecursiveObject2> result = RecursiveObject2::create();
516      */
517     static Builder<NoFieldsSet> create()
518     {
519         return Builder<NoFieldsSet>(Inspector::InspectorObject::create());
520     }
521     typedef Inspector::Protocol::StructItemTraits ItemTraits;
522
523     void setObj(PassRefPtr<Inspector::Protocol::Test::RecursiveObject1> value)
524     {
525         InspectorObjectBase::setObject(ASCIILiteral("obj"), value);
526     }
527 };
528
529 } // Test
530
531 template<> struct BindingTraits<Inspector::Protocol::Test::CastedAnimals> {
532 #if !ASSERT_DISABLED
533 static void assertValueHasExpectedType(Inspector::InspectorValue*);
534 #endif // !ASSERT_DISABLED
535 };
536 template<> struct BindingTraits<Inspector::Protocol::Test::TypeNeedingCast> {
537 static PassRefPtr<Inspector::Protocol::Test::TypeNeedingCast> runtimeCast(PassRefPtr<Inspector::InspectorValue> value);
538 #if !ASSERT_DISABLED
539 static void assertValueHasExpectedType(Inspector::InspectorValue*);
540 #endif // !ASSERT_DISABLED
541 };
542 template<> struct BindingTraits<Inspector::Protocol::Test::RecursiveObject1> {
543 #if !ASSERT_DISABLED
544 static void assertValueHasExpectedType(Inspector::InspectorValue*);
545 #endif // !ASSERT_DISABLED
546 };
547 template<> struct BindingTraits<Inspector::Protocol::Test::RecursiveObject2> {
548 #if !ASSERT_DISABLED
549 static void assertValueHasExpectedType(Inspector::InspectorValue*);
550 #endif // !ASSERT_DISABLED
551 };
552
553 } // namespace Protocol
554
555 } // namespace Inspector
556
557 #endif // ENABLE(INSPECTOR)
558
559 #endif // !defined(InspectorTestProtocolTypes_h)
560 ### End File: InspectorTestProtocolTypes.h
561
562 ### Begin File: InspectorTestProtocolTypes.cpp
563 /*
564  * Copyright (C) 2013 Google Inc. All rights reserved.
565  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
566  * Copyright (C) 2014 University of Washington. All rights reserved.
567  *
568  * Redistribution and use in source and binary forms, with or without
569  * modification, are permitted provided that the following conditions
570  * are met:
571  * 1. Redistributions of source code must retain the above copyright
572  *    notice, this list of conditions and the following disclaimer.
573  * 2. Redistributions in binary form must reproduce the above copyright
574  *    notice, this list of conditions and the following disclaimer in the
575  *    documentation and/or other materials provided with the distribution.
576  *
577  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
578  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
579  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
580  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
581  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
582  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
583  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
584  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
585  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
586  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
587  * THE POSSIBILITY OF SUCH DAMAGE.
588  */
589
590 // DO NOT EDIT THIS FILE. It is automatically generated from type-requiring-runtime-casts.json
591 // by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
592
593 #include "config.h"
594 #include "InspectorTestProtocolTypes.h"
595
596 #if ENABLE(INSPECTOR)
597
598 #include <wtf/text/CString.h>
599
600 namespace Inspector {
601
602 namespace Protocol {
603
604 static const char* const enum_constant_values[] = {
605     "Ducks",
606     "Hens",
607     "Crows",
608     "Flamingos",
609     "Pigs",
610     "Cows",
611     "Cats",
612 };
613
614 String getTestEnumConstantValue(int code) {
615     return enum_constant_values[code];
616 }
617
618
619
620 #if !ASSERT_DISABLED
621 void BindingTraits<Inspector::Protocol::Test::CastedAnimals>::assertValueHasExpectedType(Inspector::InspectorValue* value)
622 {
623     String result;
624     bool castSucceeded = value->asString(result);
625     ASSERT(castSucceeded);
626     ASSERT(result == "Ducks" || result == "Hens" || result == "Crows" || result == "Flamingos");
627 }
628 #endif // !ASSERT_DISABLED
629
630 #if !ASSERT_DISABLED
631 void BindingTraits<Inspector::Protocol::Test::TypeNeedingCast>::assertValueHasExpectedType(Inspector::InspectorValue* value)
632 {
633     RefPtr<InspectorObject> object;
634     bool castSucceeded = value->asObject(object);
635     ASSERT_UNUSED(castSucceeded, castSucceeded);
636     {
637         InspectorObject::iterator stringPos = object->find(ASCIILiteral("string"));
638         ASSERT(stringPos != object->end());
639         BindingTraits<String>::assertValueHasExpectedType(stringPos->value.get());
640     }
641     {
642         InspectorObject::iterator numberPos = object->find(ASCIILiteral("number"));
643         ASSERT(numberPos != object->end());
644         BindingTraits<int>::assertValueHasExpectedType(numberPos->value.get());
645     }
646     {
647         InspectorObject::iterator animalsPos = object->find(ASCIILiteral("animals"));
648         ASSERT(animalsPos != object->end());
649         BindingTraits<Inspector::Protocol::Test::CastedAnimals>::assertValueHasExpectedType(animalsPos->value.get());
650     }
651     {
652         InspectorObject::iterator idPos = object->find(ASCIILiteral("id"));
653         ASSERT(idPos != object->end());
654         BindingTraits<int>::assertValueHasExpectedType(idPos->value.get());
655     }
656     {
657         InspectorObject::iterator treePos = object->find(ASCIILiteral("tree"));
658         ASSERT(treePos != object->end());
659         BindingTraits<Inspector::Protocol::Test::RecursiveObject1>::assertValueHasExpectedType(treePos->value.get());
660     }
661
662     int foundPropertiesCount = 5;
663     if (foundPropertiesCount != object->size())
664         FATAL("Unexpected properties in object: %s\n", object->toJSONString().ascii().data());
665 }
666 #endif // !ASSERT_DISABLED
667
668 PassRefPtr<Inspector::Protocol::Test::TypeNeedingCast> BindingTraits<Inspector::Protocol::Test::TypeNeedingCast>::runtimeCast(PassRefPtr<Inspector::InspectorValue> value)
669 {
670     RefPtr<Inspector::InspectorObject> result;
671     bool castSucceeded = value->asObject(result);
672     ASSERT_UNUSED(castSucceeded, castSucceeded);
673 #if !ASSERT_DISABLED
674     BindingTraits<Inspector::Protocol::Test::TypeNeedingCast>::assertValueHasExpectedType(result.get());
675 #endif  // !ASSERT_DISABLED
676     COMPILE_ASSERT(sizeof(Inspector::Protocol::Test::TypeNeedingCast) == sizeof(Inspector::InspectorObjectBase), type_cast_problem);
677     return static_cast<Inspector::Protocol::Test::TypeNeedingCast*>(static_cast<Inspector::InspectorObjectBase*>(result.get()));
678 }
679
680
681 #if !ASSERT_DISABLED
682 void BindingTraits<Inspector::Protocol::Test::RecursiveObject1>::assertValueHasExpectedType(Inspector::InspectorValue* value)
683 {
684     RefPtr<InspectorObject> object;
685     bool castSucceeded = value->asObject(object);
686     ASSERT_UNUSED(castSucceeded, castSucceeded);
687
688     int foundPropertiesCount = 0;
689     {
690         InspectorObject::iterator objPos = object->find(ASCIILiteral("obj"));
691         if (objPos != object->end()) {
692             BindingTraits<Inspector::Protocol::Test::RecursiveObject2>::assertValueHasExpectedType(objPos->value.get());
693             ++foundPropertiesCount;
694         }
695     }
696     if (foundPropertiesCount != object->size())
697         FATAL("Unexpected properties in object: %s\n", object->toJSONString().ascii().data());
698 }
699 #endif // !ASSERT_DISABLED
700
701 #if !ASSERT_DISABLED
702 void BindingTraits<Inspector::Protocol::Test::RecursiveObject2>::assertValueHasExpectedType(Inspector::InspectorValue* value)
703 {
704     RefPtr<InspectorObject> object;
705     bool castSucceeded = value->asObject(object);
706     ASSERT_UNUSED(castSucceeded, castSucceeded);
707
708     int foundPropertiesCount = 0;
709     {
710         InspectorObject::iterator objPos = object->find(ASCIILiteral("obj"));
711         if (objPos != object->end()) {
712             BindingTraits<Inspector::Protocol::Test::RecursiveObject1>::assertValueHasExpectedType(objPos->value.get());
713             ++foundPropertiesCount;
714         }
715     }
716     if (foundPropertiesCount != object->size())
717         FATAL("Unexpected properties in object: %s\n", object->toJSONString().ascii().data());
718 }
719 #endif // !ASSERT_DISABLED
720
721 } // namespace Protocol
722
723 } // namespace Inspector
724
725 #endif // ENABLE(INSPECTOR)
726
727 ### End File: InspectorTestProtocolTypes.cpp