Changeset 206812 in webkit
- Timestamp:
- Oct 5, 2016 9:09:20 AM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r206811 r206812 1 2016-10-05 Chris Dumez <cdumez@apple.com> 2 3 [Bindings] Declare dictionary / enumeration template specializations in the header 4 https://bugs.webkit.org/show_bug.cgi?id=162929 5 6 Reviewed by Darin Adler. 7 8 Declare dictionary / enumeration template specializations in the header 9 so that: 10 - They can be used from custom bindings code. 11 - Dictionaries / enumerations can be used to their own IDL files to 12 share them (Bug 162912). 13 14 No new tests, rebaselined bindings tests. 15 16 * WebCore.xcodeproj/project.pbxproj: 17 * bindings/generic/IDLTypes.h: 18 * bindings/js/JSDOMConvert.h: 19 * bindings/scripts/CodeGeneratorJS.pm: 20 (GenerateInterface): 21 (GenerateEnumerationImplementationContent): 22 (GenerateEnumerationHeaderContent): 23 (GenerateDictionaryHeaderContent): 24 (GenerateHeader): 25 (GenerateCallbackHeader): 26 (GenerateCallbackImplementation): 27 (GenerateDefaultValue): Deleted. 28 (GenerateDictionaryImplementationContent): Deleted. 29 (GenerateParametersCheck): Deleted. 30 * bindings/scripts/test/JS/JSTestObj.cpp: 31 * bindings/scripts/test/JS/JSTestObj.h: 32 1 33 2016-10-05 Zan Dobersek <zdobersek@igalia.com> 2 34 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r206795 r206812 2773 2773 7C9DBFED1A9C49B1000D6B25 /* JSHTMLAttachmentElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C9DBFEB1A9C49B1000D6B25 /* JSHTMLAttachmentElement.cpp */; }; 2774 2774 7C9DBFEE1A9C49B1000D6B25 /* JSHTMLAttachmentElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C9DBFEC1A9C49B1000D6B25 /* JSHTMLAttachmentElement.h */; }; 2775 7CC16FFB1D77375300CE0877 /* IDLTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CC16FFA1D77375300CE0877 /* IDLTypes.h */; };2775 7CC16FFB1D77375300CE0877 /* IDLTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CC16FFA1D77375300CE0877 /* IDLTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2776 2776 7CC289DF1AA0FE5D009A9CE3 /* URLRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = CDEE393817974274001D7580 /* URLRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2777 2777 7CC564B818BABEA6001B9652 /* TelephoneNumberDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CC564B618BABEA6001B9652 /* TelephoneNumberDetector.h */; }; … … 3100 3100 9307F1D70AF2D59000DBA31A /* HitTestResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9307F1D50AF2D59000DBA31A /* HitTestResult.cpp */; }; 3101 3101 9307F1D80AF2D59000DBA31A /* HitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9307F1D60AF2D59000DBA31A /* HitTestResult.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3102 930841341CDDB15500B0958C /* JSDOMConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 930841331CDDB15500B0958C /* JSDOMConvert.h */; };3102 930841341CDDB15500B0958C /* JSDOMConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 930841331CDDB15500B0958C /* JSDOMConvert.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3103 3103 930908910AF7EDE40081DF01 /* HitTestRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 930908900AF7EDE40081DF01 /* HitTestRequest.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3104 3104 930C90DD19CF965300D6C21A /* InlineIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 930C90DC19CF965300D6C21A /* InlineIterator.cpp */; }; -
trunk/Source/WebCore/bindings/generic/IDLTypes.h
r206691 r206812 28 28 #include <wtf/Brigand.h> 29 29 #include <wtf/StdLibExtras.h> 30 #include <wtf/text/WTFString.h> 30 31 31 32 namespace JSC { -
trunk/Source/WebCore/bindings/js/JSDOMConvert.h
r206766 r206812 409 409 }; 410 410 411 // Used for IDL enumerations. 412 template<typename T> Optional<T> parse(JSC::ExecState&, JSC::JSValue); 413 template<typename T> const char* expectedEnumerationValues(); 414 411 415 } // namespace WebCore -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
r206776 r206812 129 129 130 130 if ($interface->isCallback) { 131 $object->GenerateCallbackHeader($interface );131 $object->GenerateCallbackHeader($interface, $enumerations, $dictionaries); 132 132 $object->GenerateCallbackImplementation($interface, $enumerations, $dictionaries); 133 133 } else { 134 $object->GenerateHeader($interface );134 $object->GenerateHeader($interface, $enumerations, $dictionaries); 135 135 $object->GenerateImplementation($interface, $enumerations, $dictionaries); 136 136 } … … 809 809 return "" unless @$enumerations; 810 810 811 # FIXME: Could optimize this to only generate the parts of each enumeration that are actually812 # used, which would require iterating over everything in the interface.813 814 811 my $result = ""; 815 816 $result .= "template<typename T> Optional<T> parse(ExecState&, JSValue);\n";817 $result .= "template<typename T> const char* expectedEnumerationValues();\n\n";818 819 812 foreach my $enumeration (@$enumerations) { 820 813 my $name = $enumeration->name; … … 827 820 my $conditionalString = $codeGenerator->GenerateConditionalString($enumeration); 828 821 $result .= "#if ${conditionalString}\n\n" if $conditionalString; 829 830 # Declare this instead of using "static" because it may be unused and we don't want warnings about that.831 $result .= "JSString* jsStringWithCache(ExecState*, $className);\n\n";832 822 833 823 # Take an ExecState* instead of an ExecState& to match the jsStringWithCache from JSString.h. … … 856 846 $result .= "}\n\n"; 857 847 858 $result .= "template<> struct JSValueTraits<$className> {\n";859 $result .= " static JSString* arrayJSValue(ExecState* state, JSDOMGlobalObject*, $className value) { return jsStringWithCache(state, value); }\n";860 $result .= "};\n\n";861 862 848 # FIXME: Change to take VM& instead of ExecState&. 863 849 # FIXME: Consider using toStringOrNull to make exception checking faster. … … 893 879 $result .= "}\n\n"; 894 880 895 $result .= "template<> inlineconst char* expectedEnumerationValues<$className>()\n";881 $result .= "template<> const char* expectedEnumerationValues<$className>()\n"; 896 882 $result .= "{\n"; 897 883 $result .= " return \"\\\"" . join ("\\\", \\\"", @{$enumeration->values}) . "\\\"\";\n"; 898 884 $result .= "}\n\n"; 885 886 $result .= "#endif\n\n" if $conditionalString; 887 } 888 return $result; 889 } 890 891 sub GenerateEnumerationHeaderContent 892 { 893 my ($interface, $enumerations) = @_; 894 895 return "" unless @$enumerations; 896 897 # FIXME: Could optimize this to only generate the parts of each enumeration that are actually 898 # used, which would require iterating over everything in the interface. 899 900 $headerIncludes{"JSDOMConvert.h"} = 1; 901 902 my $result = ""; 903 904 foreach my $enumeration (@$enumerations) { 905 my $name = $enumeration->name; 906 907 my $className = GetEnumerationClassName($interface, $name); 908 909 my $conditionalString = $codeGenerator->GenerateConditionalString($enumeration); 910 $result .= "#if ${conditionalString}\n\n" if $conditionalString; 911 912 $result .= "JSC::JSString* jsStringWithCache(JSC::ExecState*, $className);\n\n"; 913 914 $result .= "template<> struct JSValueTraits<$className> {\n"; 915 $result .= " static JSC::JSString* arrayJSValue(JSC::ExecState* state, JSDOMGlobalObject*, $className value) { return jsStringWithCache(state, value); }\n"; 916 $result .= "};\n\n"; 917 918 $result .= "template<> Optional<$className> parse<$className>(JSC::ExecState&, JSC::JSValue);\n"; 919 $result .= "template<> $className convert<$className>(JSC::ExecState&, JSC::JSValue);\n"; 920 $result .= "template<> const char* expectedEnumerationValues<$className>();\n\n"; 899 921 900 922 $result .= "#endif\n\n" if $conditionalString; … … 950 972 return ", " . GetIntegerConversionConfiguration($member) if $codeGenerator->IsIntegerType($member->type); 951 973 return ""; 974 } 975 976 sub GenerateDictionaryHeaderContent 977 { 978 my ($interface, $allDictionaries) = @_; 979 980 return "" unless @$allDictionaries; 981 982 $headerIncludes{"JSDOMConvert.h"} = 1; 983 984 my $result = ""; 985 foreach my $dictionary (@$allDictionaries) { 986 my $name = $dictionary->name; 987 988 my $conditionalString = $codeGenerator->GenerateConditionalString($dictionary); 989 $result .= "#if ${conditionalString}\n\n" if $conditionalString; 990 991 $headerIncludes{$interface->name . ".h"} = 1; 992 993 my $className = GetDictionaryClassName($interface, $name); 994 $result .= "template<> Optional<$className> convertDictionary<$className>(JSC::ExecState&, JSC::JSValue);\n\n"; 995 996 $result .= "#endif\n\n" if $conditionalString; 997 } 998 return $result; 952 999 } 953 1000 … … 1080 1127 sub GenerateHeader 1081 1128 { 1082 my ($object, $interface ) = @_;1129 my ($object, $interface, $enumerations, $dictionaries) = @_; 1083 1130 1084 1131 my $interfaceName = $interface->name; … … 1571 1618 push(@headerContent, "};\n"); 1572 1619 } 1620 1621 push(@headerContent, GenerateEnumerationHeaderContent($interface, $enumerations)); 1622 push(@headerContent, GenerateDictionaryHeaderContent($interface, $dictionaries)); 1573 1623 1574 1624 my $conditionalString = $codeGenerator->GenerateConditionalString($interface); … … 4127 4177 sub GenerateCallbackHeader 4128 4178 { 4129 my ($object, $interface ) = @_;4179 my ($object, $interface, $enumerations, $dictionaries) = @_; 4130 4180 4131 4181 my $interfaceName = $interface->name; … … 4186 4236 push(@headerContent, "inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, $interfaceName* impl) { return impl ? toJS(state, globalObject, *impl) : JSC::jsNull(); }\n\n"); 4187 4237 4238 push(@headerContent, GenerateEnumerationHeaderContent($interface, $enumerations)); 4239 push(@headerContent, GenerateDictionaryHeaderContent($interface, $dictionaries)); 4240 4188 4241 push(@headerContent, "} // namespace WebCore\n"); 4189 4242 … … 4194 4247 sub GenerateCallbackImplementation 4195 4248 { 4196 my ($object, $interface, $enumerations ) = @_;4249 my ($object, $interface, $enumerations, $dictionaries) = @_; 4197 4250 4198 4251 my $interfaceName = $interface->name; … … 4212 4265 4213 4266 push(@implContent, GenerateEnumerationImplementationContent($interface, $enumerations)); 4267 push(@implContent, GenerateDictionaryImplementationContent($interface, $dictionaries)); 4214 4268 4215 4269 # Constructor -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
r206776 r206812 35 35 #include "JSDOMBinding.h" 36 36 #include "JSDOMConstructor.h" 37 #include "JSDOMConvert.h"38 37 #include "JSDOMIterator.h" 39 38 #include "JSDOMPromise.h" … … 93 92 namespace WebCore { 94 93 95 template<typename T> Optional<T> parse(ExecState&, JSValue);96 template<typename T> const char* expectedEnumerationValues();97 98 JSString* jsStringWithCache(ExecState*, TestObj::EnumType);99 100 94 JSString* jsStringWithCache(ExecState* state, TestObj::EnumType enumerationValue) 101 95 { … … 114 108 } 115 109 116 template<> struct JSValueTraits<TestObj::EnumType> {117 static JSString* arrayJSValue(ExecState* state, JSDOMGlobalObject*, TestObj::EnumType value) { return jsStringWithCache(state, value); }118 };119 120 110 template<> Optional<TestObj::EnumType> parse<TestObj::EnumType>(ExecState& state, JSValue value) 121 111 { … … 144 134 } 145 135 146 template<> inlineconst char* expectedEnumerationValues<TestObj::EnumType>()136 template<> const char* expectedEnumerationValues<TestObj::EnumType>() 147 137 { 148 138 return "\"\", \"enumValue1\", \"EnumValue2\", \"EnumValue3\""; 149 139 } 150 151 JSString* jsStringWithCache(ExecState*, TestObj::Optional);152 140 153 141 JSString* jsStringWithCache(ExecState* state, TestObj::Optional enumerationValue) … … 167 155 } 168 156 169 template<> struct JSValueTraits<TestObj::Optional> {170 static JSString* arrayJSValue(ExecState* state, JSDOMGlobalObject*, TestObj::Optional value) { return jsStringWithCache(state, value); }171 };172 173 157 template<> Optional<TestObj::Optional> parse<TestObj::Optional>(ExecState& state, JSValue value) 174 158 { … … 197 181 } 198 182 199 template<> inlineconst char* expectedEnumerationValues<TestObj::Optional>()183 template<> const char* expectedEnumerationValues<TestObj::Optional>() 200 184 { 201 185 return "\"\", \"OptionalValue1\", \"OptionalValue2\", \"OptionalValue3\""; 202 186 } 203 204 JSString* jsStringWithCache(ExecState*, AlternateEnumName);205 187 206 188 JSString* jsStringWithCache(ExecState* state, AlternateEnumName enumerationValue) … … 216 198 } 217 199 218 template<> struct JSValueTraits<AlternateEnumName> {219 static JSString* arrayJSValue(ExecState* state, JSDOMGlobalObject*, AlternateEnumName value) { return jsStringWithCache(state, value); }220 };221 222 200 template<> Optional<AlternateEnumName> parse<AlternateEnumName>(ExecState& state, JSValue value) 223 201 { … … 242 220 } 243 221 244 template<> inlineconst char* expectedEnumerationValues<AlternateEnumName>()222 template<> const char* expectedEnumerationValues<AlternateEnumName>() 245 223 { 246 224 return "\"enumValue1\", \"EnumValue2\""; … … 248 226 249 227 #if ENABLE(Condition1) 250 251 JSString* jsStringWithCache(ExecState*, TestObj::EnumA);252 228 253 229 JSString* jsStringWithCache(ExecState* state, TestObj::EnumA enumerationValue) … … 261 237 } 262 238 263 template<> struct JSValueTraits<TestObj::EnumA> {264 static JSString* arrayJSValue(ExecState* state, JSDOMGlobalObject*, TestObj::EnumA value) { return jsStringWithCache(state, value); }265 };266 267 239 template<> Optional<TestObj::EnumA> parse<TestObj::EnumA>(ExecState& state, JSValue value) 268 240 { … … 285 257 } 286 258 287 template<> inlineconst char* expectedEnumerationValues<TestObj::EnumA>()259 template<> const char* expectedEnumerationValues<TestObj::EnumA>() 288 260 { 289 261 return "\"A\""; … … 293 265 294 266 #if ENABLE(Condition1) && ENABLE(Condition2) 295 296 JSString* jsStringWithCache(ExecState*, TestObj::EnumB);297 267 298 268 JSString* jsStringWithCache(ExecState* state, TestObj::EnumB enumerationValue) … … 306 276 } 307 277 308 template<> struct JSValueTraits<TestObj::EnumB> {309 static JSString* arrayJSValue(ExecState* state, JSDOMGlobalObject*, TestObj::EnumB value) { return jsStringWithCache(state, value); }310 };311 312 278 template<> Optional<TestObj::EnumB> parse<TestObj::EnumB>(ExecState& state, JSValue value) 313 279 { … … 330 296 } 331 297 332 template<> inlineconst char* expectedEnumerationValues<TestObj::EnumB>()298 template<> const char* expectedEnumerationValues<TestObj::EnumB>() 333 299 { 334 300 return "\"B\""; … … 338 304 339 305 #if ENABLE(Condition1) || ENABLE(Condition2) 340 341 JSString* jsStringWithCache(ExecState*, TestObj::EnumC);342 306 343 307 JSString* jsStringWithCache(ExecState* state, TestObj::EnumC enumerationValue) … … 351 315 } 352 316 353 template<> struct JSValueTraits<TestObj::EnumC> {354 static JSString* arrayJSValue(ExecState* state, JSDOMGlobalObject*, TestObj::EnumC value) { return jsStringWithCache(state, value); }355 };356 357 317 template<> Optional<TestObj::EnumC> parse<TestObj::EnumC>(ExecState& state, JSValue value) 358 318 { … … 375 335 } 376 336 377 template<> inlineconst char* expectedEnumerationValues<TestObj::EnumC>()337 template<> const char* expectedEnumerationValues<TestObj::EnumC>() 378 338 { 379 339 return "\"C\""; … … 381 341 382 342 #endif 383 384 JSString* jsStringWithCache(ExecState*, TestObj::Kind);385 343 386 344 JSString* jsStringWithCache(ExecState* state, TestObj::Kind enumerationValue) … … 396 354 } 397 355 398 template<> struct JSValueTraits<TestObj::Kind> {399 static JSString* arrayJSValue(ExecState* state, JSDOMGlobalObject*, TestObj::Kind value) { return jsStringWithCache(state, value); }400 };401 402 356 template<> Optional<TestObj::Kind> parse<TestObj::Kind>(ExecState& state, JSValue value) 403 357 { … … 422 376 } 423 377 424 template<> inlineconst char* expectedEnumerationValues<TestObj::Kind>()378 template<> const char* expectedEnumerationValues<TestObj::Kind>() 425 379 { 426 380 return "\"quick\", \"dead\""; 427 381 } 428 429 JSString* jsStringWithCache(ExecState*, TestObj::Size);430 382 431 383 JSString* jsStringWithCache(ExecState* state, TestObj::Size enumerationValue) … … 441 393 } 442 394 443 template<> struct JSValueTraits<TestObj::Size> {444 static JSString* arrayJSValue(ExecState* state, JSDOMGlobalObject*, TestObj::Size value) { return jsStringWithCache(state, value); }445 };446 447 395 template<> Optional<TestObj::Size> parse<TestObj::Size>(ExecState& state, JSValue value) 448 396 { … … 467 415 } 468 416 469 template<> inlineconst char* expectedEnumerationValues<TestObj::Size>()417 template<> const char* expectedEnumerationValues<TestObj::Size>() 470 418 { 471 419 return "\"small\", \"much-much-larger\""; 472 420 } 473 474 JSString* jsStringWithCache(ExecState*, TestObj::Confidence);475 421 476 422 JSString* jsStringWithCache(ExecState* state, TestObj::Confidence enumerationValue) … … 486 432 } 487 433 488 template<> struct JSValueTraits<TestObj::Confidence> {489 static JSString* arrayJSValue(ExecState* state, JSDOMGlobalObject*, TestObj::Confidence value) { return jsStringWithCache(state, value); }490 };491 492 434 template<> Optional<TestObj::Confidence> parse<TestObj::Confidence>(ExecState& state, JSValue value) 493 435 { … … 512 454 } 513 455 514 template<> inlineconst char* expectedEnumerationValues<TestObj::Confidence>()456 template<> const char* expectedEnumerationValues<TestObj::Confidence>() 515 457 { 516 458 return "\"high\", \"kinda-low\""; -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h
r206723 r206812 21 21 #pragma once 22 22 23 #include "JSDOMConvert.h" 23 24 #include "JSDOMWrapper.h" 24 25 #include "TestObj.h" … … 105 106 using WrapperClass = JSTestObj; 106 107 }; 108 JSC::JSString* jsStringWithCache(JSC::ExecState*, TestObj::EnumType); 109 110 template<> struct JSValueTraits<TestObj::EnumType> { 111 static JSC::JSString* arrayJSValue(JSC::ExecState* state, JSDOMGlobalObject*, TestObj::EnumType value) { return jsStringWithCache(state, value); } 112 }; 113 114 template<> Optional<TestObj::EnumType> parse<TestObj::EnumType>(JSC::ExecState&, JSC::JSValue); 115 template<> TestObj::EnumType convert<TestObj::EnumType>(JSC::ExecState&, JSC::JSValue); 116 template<> const char* expectedEnumerationValues<TestObj::EnumType>(); 117 118 JSC::JSString* jsStringWithCache(JSC::ExecState*, TestObj::Optional); 119 120 template<> struct JSValueTraits<TestObj::Optional> { 121 static JSC::JSString* arrayJSValue(JSC::ExecState* state, JSDOMGlobalObject*, TestObj::Optional value) { return jsStringWithCache(state, value); } 122 }; 123 124 template<> Optional<TestObj::Optional> parse<TestObj::Optional>(JSC::ExecState&, JSC::JSValue); 125 template<> TestObj::Optional convert<TestObj::Optional>(JSC::ExecState&, JSC::JSValue); 126 template<> const char* expectedEnumerationValues<TestObj::Optional>(); 127 128 JSC::JSString* jsStringWithCache(JSC::ExecState*, AlternateEnumName); 129 130 template<> struct JSValueTraits<AlternateEnumName> { 131 static JSC::JSString* arrayJSValue(JSC::ExecState* state, JSDOMGlobalObject*, AlternateEnumName value) { return jsStringWithCache(state, value); } 132 }; 133 134 template<> Optional<AlternateEnumName> parse<AlternateEnumName>(JSC::ExecState&, JSC::JSValue); 135 template<> AlternateEnumName convert<AlternateEnumName>(JSC::ExecState&, JSC::JSValue); 136 template<> const char* expectedEnumerationValues<AlternateEnumName>(); 137 138 #if ENABLE(Condition1) 139 140 JSC::JSString* jsStringWithCache(JSC::ExecState*, TestObj::EnumA); 141 142 template<> struct JSValueTraits<TestObj::EnumA> { 143 static JSC::JSString* arrayJSValue(JSC::ExecState* state, JSDOMGlobalObject*, TestObj::EnumA value) { return jsStringWithCache(state, value); } 144 }; 145 146 template<> Optional<TestObj::EnumA> parse<TestObj::EnumA>(JSC::ExecState&, JSC::JSValue); 147 template<> TestObj::EnumA convert<TestObj::EnumA>(JSC::ExecState&, JSC::JSValue); 148 template<> const char* expectedEnumerationValues<TestObj::EnumA>(); 149 150 #endif 151 152 #if ENABLE(Condition1) && ENABLE(Condition2) 153 154 JSC::JSString* jsStringWithCache(JSC::ExecState*, TestObj::EnumB); 155 156 template<> struct JSValueTraits<TestObj::EnumB> { 157 static JSC::JSString* arrayJSValue(JSC::ExecState* state, JSDOMGlobalObject*, TestObj::EnumB value) { return jsStringWithCache(state, value); } 158 }; 159 160 template<> Optional<TestObj::EnumB> parse<TestObj::EnumB>(JSC::ExecState&, JSC::JSValue); 161 template<> TestObj::EnumB convert<TestObj::EnumB>(JSC::ExecState&, JSC::JSValue); 162 template<> const char* expectedEnumerationValues<TestObj::EnumB>(); 163 164 #endif 165 166 #if ENABLE(Condition1) || ENABLE(Condition2) 167 168 JSC::JSString* jsStringWithCache(JSC::ExecState*, TestObj::EnumC); 169 170 template<> struct JSValueTraits<TestObj::EnumC> { 171 static JSC::JSString* arrayJSValue(JSC::ExecState* state, JSDOMGlobalObject*, TestObj::EnumC value) { return jsStringWithCache(state, value); } 172 }; 173 174 template<> Optional<TestObj::EnumC> parse<TestObj::EnumC>(JSC::ExecState&, JSC::JSValue); 175 template<> TestObj::EnumC convert<TestObj::EnumC>(JSC::ExecState&, JSC::JSValue); 176 template<> const char* expectedEnumerationValues<TestObj::EnumC>(); 177 178 #endif 179 180 JSC::JSString* jsStringWithCache(JSC::ExecState*, TestObj::Kind); 181 182 template<> struct JSValueTraits<TestObj::Kind> { 183 static JSC::JSString* arrayJSValue(JSC::ExecState* state, JSDOMGlobalObject*, TestObj::Kind value) { return jsStringWithCache(state, value); } 184 }; 185 186 template<> Optional<TestObj::Kind> parse<TestObj::Kind>(JSC::ExecState&, JSC::JSValue); 187 template<> TestObj::Kind convert<TestObj::Kind>(JSC::ExecState&, JSC::JSValue); 188 template<> const char* expectedEnumerationValues<TestObj::Kind>(); 189 190 JSC::JSString* jsStringWithCache(JSC::ExecState*, TestObj::Size); 191 192 template<> struct JSValueTraits<TestObj::Size> { 193 static JSC::JSString* arrayJSValue(JSC::ExecState* state, JSDOMGlobalObject*, TestObj::Size value) { return jsStringWithCache(state, value); } 194 }; 195 196 template<> Optional<TestObj::Size> parse<TestObj::Size>(JSC::ExecState&, JSC::JSValue); 197 template<> TestObj::Size convert<TestObj::Size>(JSC::ExecState&, JSC::JSValue); 198 template<> const char* expectedEnumerationValues<TestObj::Size>(); 199 200 JSC::JSString* jsStringWithCache(JSC::ExecState*, TestObj::Confidence); 201 202 template<> struct JSValueTraits<TestObj::Confidence> { 203 static JSC::JSString* arrayJSValue(JSC::ExecState* state, JSDOMGlobalObject*, TestObj::Confidence value) { return jsStringWithCache(state, value); } 204 }; 205 206 template<> Optional<TestObj::Confidence> parse<TestObj::Confidence>(JSC::ExecState&, JSC::JSValue); 207 template<> TestObj::Confidence convert<TestObj::Confidence>(JSC::ExecState&, JSC::JSValue); 208 template<> const char* expectedEnumerationValues<TestObj::Confidence>(); 209 210 template<> Optional<TestObj::Dictionary> convertDictionary<TestObj::Dictionary>(JSC::ExecState&, JSC::JSValue); 211 212 template<> Optional<TestObj::DictionaryThatShouldNotTolerateNull> convertDictionary<TestObj::DictionaryThatShouldNotTolerateNull>(JSC::ExecState&, JSC::JSValue); 213 214 template<> Optional<TestObj::DictionaryThatShouldTolerateNull> convertDictionary<TestObj::DictionaryThatShouldTolerateNull>(JSC::ExecState&, JSC::JSValue); 215 216 template<> Optional<AlternateDictionaryName> convertDictionary<AlternateDictionaryName>(JSC::ExecState&, JSC::JSValue); 217 218 template<> Optional<TestObj::ParentDictionary> convertDictionary<TestObj::ParentDictionary>(JSC::ExecState&, JSC::JSValue); 219 220 template<> Optional<TestObj::ChildDictionary> convertDictionary<TestObj::ChildDictionary>(JSC::ExecState&, JSC::JSValue); 221 107 222 108 223 } // namespace WebCore
Note: See TracChangeset
for help on using the changeset viewer.